Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -931,7 +931,7 @@ jobs:
BUNDLE_ID="${{ env.APP_BUNDLE_ID }}"
# Android wdio config with crash detection (bail:0 = continue on test failures, crash = process.exit)
# Timeout set to 15 minutes (900000ms) for audio transcription tests (whisper models can be slow)
WDIO_CONFIG='exports.config={runner:"local",hostname:"127.0.0.1",port:4723,path:"/wd/hub",specs:["*.spec.js","*.test.js"],maxInstances:1,bail:0,capabilities:[{platformName:"Android","appium:automationName":"UiAutomator2","appium:appPackage":"'${{ env.APP_BUNDLE_ID }}'","appium:appActivity":"'${{ env.APP_BUNDLE_ID }}'.MainActivity","appium:newCommandTimeout":300,"appium:autoGrantPermissions":true,"appium:autoAcceptAlerts":true,"appium:noReset":true,"appium:dontStopAppOnReset":true,"appium:forceAppLaunch":false}],logLevel:"debug",waitforTimeout:120000,connectionRetryTimeout:30000,connectionRetryCount:3,services:[],framework:"mocha",reporters:["spec"],mochaOpts:{ui:"bdd",timeout:900000},before:async function(capabilities,specs,browser){const BUNDLE_ID="'${{ env.APP_BUNDLE_ID }}'";global.appCrashed=false;global.checkAppCrash=async(stage)=>{try{const state=await browser.queryAppState(BUNDLE_ID);console.log("["+stage+"] App state: "+state+" (4=foreground,3=background,1=not running)");if(state<3){console.error("\\n🛑 APP CRASHED at "+stage+"! State="+state);console.error("Check device logs for BareKit/native errors.\\n");global.appCrashed=true;process.exit(1);}return state;}catch(e){console.log("["+stage+"] queryAppState error: "+e.message);return-1;}};console.log("Checking initial app state...");await global.checkAppCrash("startup");console.log("Waiting for app to initialize...");await browser.pause(5000);await global.checkAppCrash("after-pause");const initText=await browser.$("android=new UiSelector().textContains(\\"INITIALIZED\\")");await initText.waitForDisplayed({timeout:60000});await global.checkAppCrash("after-init");console.log("App initialized, clicking Run Automated Tests...");const button=await browser.$("android=new UiSelector().textContains(\\"Run Automated Tests\\")");await button.waitForDisplayed({timeout:15000});await button.click();console.log("Button clicked!");await browser.pause(5000);await global.checkAppCrash("after-click");},afterTest:async function(test,context,{error}){if(global.appCrashed)return;await global.checkAppCrash("after-test:"+test.title);}};'
WDIO_CONFIG='exports.config={runner:"local",hostname:"127.0.0.1",port:4723,path:"/wd/hub",specs:["*.spec.js","*.test.js"],maxInstances:1,bail:0,capabilities:[{platformName:"Android","appium:automationName":"UiAutomator2","appium:appPackage":"'${{ env.APP_BUNDLE_ID }}'","appium:appActivity":"'${{ env.APP_BUNDLE_ID }}'.MainActivity","appium:newCommandTimeout":300,"appium:autoGrantPermissions":true,"appium:autoAcceptAlerts":true,"appium:noReset":true,"appium:dontStopAppOnReset":true,"appium:forceAppLaunch":false}],logLevel:"debug",waitforTimeout:120000,connectionRetryTimeout:30000,connectionRetryCount:3,services:[],framework:"mocha",reporters:["spec"],mochaOpts:{ui:"bdd",timeout:900000},before:async function(capabilities,specs,browser){const BUNDLE_ID="'${{ env.APP_BUNDLE_ID }}'";global.appCrashed=false;global.checkAppCrash=async(stage)=>{try{const state=await browser.queryAppState(BUNDLE_ID);console.log("["+stage+"] App state: "+state+" (4=foreground,3=background,1=not running)");if(state<3){console.error("\\n🛑 APP CRASHED at "+stage+"! State="+state);console.error("Check device logs for BareKit/native errors.\\n");global.appCrashed=true;process.exit(1);}return state;}catch(e){console.log("["+stage+"] queryAppState error: "+e.message);return-1;}};console.log("Checking initial app state...");await global.checkAppCrash("startup");console.log("Waiting for app to initialize...");await browser.pause(5000);await global.checkAppCrash("after-pause");const initText=await browser.$("android=new UiSelector().textContains(\"INITIALIZED\")");await initText.waitForDisplayed({timeout:60000});await global.checkAppCrash("after-init");console.log("App initialized, clicking Run Automated Tests...");const button=await browser.$("android=new UiSelector().textContains(\"Run Automated Tests\")");await button.waitForDisplayed({timeout:15000});await button.click();console.log("Button clicked!");await browser.pause(5000);await global.checkAppCrash("after-click");},afterTest:async function(test,context,{error}){if(global.appCrashed)return;await global.checkAppCrash("after-test:"+test.title);}};'
else
PLATFORM="iOS"
AUTOMATION="XCUITest"
Expand All @@ -941,7 +941,7 @@ jobs:
# iOS wdio config with crash detection (bail:0 = continue on test failures, crash = process.exit)
# usePrebuiltWDA uses Device Farm's pre-built WebDriverAgent
# Timeout set to 15 minutes (900000ms) for audio transcription tests (whisper models can be slow)
WDIO_CONFIG='exports.config={runner:"local",hostname:"127.0.0.1",port:4723,path:"/wd/hub",specs:["*.spec.js","*.test.js"],maxInstances:1,bail:0,capabilities:[{platformName:"iOS","appium:automationName":"XCUITest","appium:bundleId":"'${{ env.APP_BUNDLE_ID }}'","appium:newCommandTimeout":300,"appium:noReset":true,"appium:forceAppLaunch":false,"appium:usePrebuiltWDA":true,"appium:wdaLocalPort":8100,"appium:showIOSLog":true,"appium:realDeviceLogger":"/usr/local/lib/node_modules/appium/node_modules/deviceconsole/deviceconsole"}],logLevel:"debug",waitforTimeout:120000,connectionRetryTimeout:30000,connectionRetryCount:3,services:[],framework:"mocha",reporters:["spec"],mochaOpts:{ui:"bdd",timeout:900000},before:async function(capabilities,specs,browser){const BUNDLE_ID="'${{ env.APP_BUNDLE_ID }}'";global.appCrashed=false;global.checkAppCrash=async(stage)=>{try{const state=await browser.queryAppState(BUNDLE_ID);console.log("["+stage+"] App state: "+state+" (4=foreground,3=background,1=not running)");if(state<3){console.error("\\n🛑 APP CRASHED at "+stage+"! State="+state);console.error("Check device logs for BareKit/native errors.\\n");global.appCrashed=true;process.exit(1);}return state;}catch(e){console.log("["+stage+"] queryAppState error: "+e.message);return-1;}};console.log("Checking initial app state...");await global.checkAppCrash("startup");console.log("Waiting for app to initialize...");await browser.pause(5000);await global.checkAppCrash("after-pause");const initText=await browser.$("-ios predicate string:label CONTAINS \\"INITIALIZED\\"");await initText.waitForDisplayed({timeout:60000});await global.checkAppCrash("after-init");console.log("App initialized, clicking Run Automated Tests...");const button=await browser.$("-ios predicate string:label CONTAINS \\"Run Automated Tests\\"");await button.waitForDisplayed({timeout:15000});await button.click();console.log("Button clicked!");await browser.pause(5000);await global.checkAppCrash("after-click");},afterTest:async function(test,context,{error}){if(global.appCrashed)return;await global.checkAppCrash("after-test:"+test.title);}};'
WDIO_CONFIG='exports.config={runner:"local",hostname:"127.0.0.1",port:4723,path:"/wd/hub",specs:["*.spec.js","*.test.js"],maxInstances:1,bail:0,capabilities:[{platformName:"iOS","appium:automationName":"XCUITest","appium:bundleId":"'${{ env.APP_BUNDLE_ID }}'","appium:newCommandTimeout":300,"appium:noReset":true,"appium:forceAppLaunch":false,"appium:usePrebuiltWDA":true,"appium:wdaLocalPort":8100,"appium:showIOSLog":true,"appium:realDeviceLogger":"/usr/local/lib/node_modules/appium/node_modules/deviceconsole/deviceconsole"}],logLevel:"debug",waitforTimeout:120000,connectionRetryTimeout:30000,connectionRetryCount:3,services:[],framework:"mocha",reporters:["spec"],mochaOpts:{ui:"bdd",timeout:900000},before:async function(capabilities,specs,browser){const BUNDLE_ID="'${{ env.APP_BUNDLE_ID }}'";global.appCrashed=false;global.checkAppCrash=async(stage)=>{try{const state=await browser.queryAppState(BUNDLE_ID);console.log("["+stage+"] App state: "+state+" (4=foreground,3=background,1=not running)");if(state<3){console.error("\\n🛑 APP CRASHED at "+stage+"! State="+state);console.error("Check device logs for BareKit/native errors.\\n");global.appCrashed=true;process.exit(1);}return state;}catch(e){console.log("["+stage+"] queryAppState error: "+e.message);return-1;}};console.log("Checking initial app state...");await global.checkAppCrash("startup");console.log("Waiting for app to initialize...");await browser.pause(5000);await global.checkAppCrash("after-pause");const initText=await browser.$("-ios predicate string:label CONTAINS \"INITIALIZED\"");await initText.waitForDisplayed({timeout:60000});await global.checkAppCrash("after-init");console.log("App initialized, clicking Run Automated Tests...");const button=await browser.$("-ios predicate string:label CONTAINS \"Run Automated Tests\"");await button.waitForDisplayed({timeout:15000});await button.click();console.log("Button clicked!");await browser.pause(5000);await global.checkAppCrash("after-click");},afterTest:async function(test,context,{error}){if(global.appCrashed)return;await global.checkAppCrash("after-test:"+test.title);}};'
fi

# Base64 encode the wdio config to safely embed in YAML
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/prebuilds-qvac-lib-infer-whispercpp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -489,7 +489,7 @@ jobs:
uses: actions/download-artifact@v4
with:
name: prebuilds
path: ${WORKDIR}/prebuilds
path: ${{ env.WORKDIR }}/prebuilds

- name: Rename prebuild files from qvac_ to tetherto_ prefix
shell: bash
Expand All @@ -514,7 +514,7 @@ jobs:
with:
secret-token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ inputs.tag || github.event.inputs.tag || 'dev' }}
workdir: ${{ inputs.workdir }}
workdir: ${{ env.WORKDIR }}
name-suffix: "-mono"

- name: Capture published version
Expand Down Expand Up @@ -568,15 +568,15 @@ jobs:
uses: actions/download-artifact@v4
with:
name: prebuilds
path: ${WORKDIR}/prebuilds
path: ${{ env.WORKDIR }}/prebuilds

- name: Publish to NPM Package Registry
id: publish
uses: tetherto/qvac-devops/.github/actions/publish-library-to-npm@monorepo_update
with:
secret-token: ${{ secrets.NPM_TOKEN }}
tag: "latest"
workdir: $((WORKDIR))
workdir: ${{ env.WORKDIR }}

- name: Capture published version
id: capture_version
Expand Down
3 changes: 1 addition & 2 deletions packages/qvac-cli/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@qvac/qvac-cli",
"version": "0.1.0",
"version": "0.1.1",
"description": "Command-line interface for the QVAC ecosystem",
"author": "Tether",
"license": "Apache-2.0",
Expand All @@ -13,7 +13,6 @@
"files": [
"src/**/*",
"README.md",
"CHANGELOG.md",
"LICENSE"
],
"engines": {
Expand Down
1 change: 1 addition & 0 deletions packages/qvac-lib-infer-whispercpp/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -606,3 +606,4 @@ All the errors from this library are in the range of 6001-7000
This project is licensed under the Apache-2.0 License – see the LICENSE file for details.

For questions or issues, please open an issue on the GitHub repository.

4 changes: 2 additions & 2 deletions packages/qvac-sdk/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -71,10 +71,10 @@
"dependencies": {
"@qvac/decoder-audio": "^0.3.3",
"@qvac/dl-filesystem": "^0.2.0",
"@qvac/embed-llamacpp": "^0.10.3",
"@qvac/embed-llamacpp": "^0.10.7",
"@qvac/error": "^0.1.1",
"@qvac/langdetect-text": "^0.1.0",
"@qvac/llm-llamacpp": "^0.8.5",
"@qvac/llm-llamacpp": "^0.8.9",
"@qvac/logging": "^0.1.0",
"@qvac/ocr-onnx": "^0.1.5",
"@qvac/rag": "^0.4.2",
Expand Down
11 changes: 0 additions & 11 deletions packages/qvac-sdk/server/bare/registry/model-config-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,17 +51,6 @@ export const BUILTIN_DEVICE_PATTERNS: DevicePattern[] = [
[ModelType.llamacppEmbedding]: { device: "cpu" },
},
},
{
name: "iPhone 17",
match: {
platform: "ios",
deviceModelPrefix: "iPhone 17",
},
defaults: {
[ModelType.llamacppCompletion]: { device: "cpu" },
[ModelType.llamacppEmbedding]: { device: "cpu" },
},
},
];

export function matchesPattern(
Expand Down
Loading