update workdir for multiple workflows#169
Merged
Merged
Conversation
gianni-cor
approved these changes
Feb 9, 2026
shikha-tether
approved these changes
Feb 9, 2026
Collaborator
Author
|
/review |
Contributor
Tier-based Approval Status |
simon-iribarren
pushed a commit
that referenced
this pull request
Feb 11, 2026
* upddate workdir for multiple workflows * corrections
ishanvohra2
pushed a commit
that referenced
this pull request
Feb 12, 2026
* upddate workdir for multiple workflows * corrections
opaninakuffo
added a commit
that referenced
this pull request
Feb 12, 2026
…ons (#303) * Add updated CRAFT text detector model (#86) * Add updated CRAFT text detector model and deprecate old version Co-authored-by: Cursor <cursoragent@cursor.com> * update package lock * updated dep prefix * updated dep on client as well * Remove models.prod.json changes for separate PR Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Cursor <cursoragent@cursor.com> * fix: Remove @tetherto/transcription-whispercpp install step (#136) Co-authored-by: Ishan Vohra <ishanvohra@Ishans-MacBook-Air.local> Co-authored-by: GustavoA1604 <54457676+GustavoA1604@users.noreply.github.com> * updated readme to introduce users to registry (#134) * remove comments on PR (#147) Co-authored-by: Dmytro Medvinskyi <functionsilence@gmail.com> * Fix S3 model paths incorrectly including bucket name (#140) Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: Dmytro Medvinskyi <functionsilence@gmail.com> * udpate Inference-addon-cpp pr-test workflow (#149) * Update inference addon cpp workflow (#150) * udpate Inference-addon-cpp pr-test workflow * fix * Fix failing Cpp tests in TTS package (#137) * fix: Add value for taskeelModelDir in PiperEngineTest.cpp * fix: Add TaskeelDiacritizer.cpp in CMakeLists.txt --------- Co-authored-by: Ishan Vohra <ishanvohra@Ishans-MacBook-Air.local> Co-authored-by: GustavoA1604 <54457676+GustavoA1604@users.noreply.github.com> * QVAC-11756 infra: add cursor skill and rules for SDK pod PR creation (#120) * infra: add cursor skill and rules for SDK pod PR creation * infra: add SDK pod packages, skill authoring guidelines * fix: deduplicate PR template --------- Co-authored-by: Dmytro Medvinskyi <functionsilence@gmail.com> * Qvac 12140 new output handler pr (#148) * QVAC-12140 : New Output Handler JsStringArrayOutputHandler * Version bump. * Small change to trigger tests. * Fixed version bump. --------- Co-authored-by: Sero <sero@Seros-MacBook-Pro.local> Co-authored-by: Proletter <40578159+Proletter@users.noreply.github.com> * feat(qvac-registry-schema): add findBy() method to RegistryDatabase (#145) Add a unified findBy(params) method that: - Selects the most efficient HyperDB index based on provided params - Supports filtering by name, engine, and quantization - Applies additional filters in memory for multi-field queries - Optionally includes deprecated models This enables clients to use a single method for model queries instead of manually choosing between findModelsByEngine/Name/Quantization. * QVAC-11777: add multi-instance tests (#103) * test: add multi-instance tests * test: simplify promise handling in multi-instance tests * Refactor multi-instance tests to use createEmbeddingsTestInstance utility * refactor unload out of onUpdate * Enhance multi-instance test to verify token generation before unloading an instance * update workdir for multiple workflows (#169) * upddate workdir for multiple workflows * corrections * Qvac lib regitry server wkflw update (#173) * update workflow * update workflow to fix detect changes step * QVAC-13055: Update build instructions with crash info (#171) * Update build instructions with crash info * Adding a note that LLVM is not supported * release(qvac-registry-schema): v0.2.1 (#174) * release(qvac-registry-schema): v0.2.0 - Bump version to 0.2.0 - Add CHANGELOG.md Co-authored-by: Cursor <cursoragent@cursor.com> * release(qvac-registry-schema): v0.2.1 Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Cursor <cursoragent@cursor.com> * Fix on-pr dependencies in TTS and VAD (#180) * QVAC-11751 feat (qvac-sdk): Add QVAC CLI with `qvac bundle sdk` cmd (#159) * feat: scaffold qvac cli package * feat: add qvac bundle sdk * chore: add lint scripts and package metadata * fix: linting * infra: add ci/cd workflow for qvac cli * chore: remove unnecessary use strict * feat(qvac-lib-registry-client): add findBy() method using schema's findBy (#184) Add findBy(params) method to QVACRegistryClient that delegates to the schema's RegistryDatabase.findBy() method for efficient indexed queries. Changes: - Add findBy() method to client that delegates to this.db.findBy() - Add FindByParams interface and findBy type definition - Bump @tetherto/qvac-registry-schema-mono to ^0.2.1 - Add findBy to client API surface and async function tests Co-authored-by: Cursor <cursoragent@cursor.com> * QVAC-13081: [AQA] Fix mobile integration test workflow for NMTCPP in monorepo (#186) * infra: unify SDK pod PR checks into single workflow (#158) Replace per-package pr-checks-qvac-sdk.yml with a single pr-checks-sdk-pod.yml covering all 5 SDK pod packages. - Dynamic matrix from .github/sdk-pod-checks.json config - Native git diff for change detection (no third-party actions) - Auto-detect scripts via npm run --if-present (lint, build, build:types, test:unit) - Bun vs npm handled via pkg_manager config field - Security gate: org members and collaborators run immediately, external fork PRs require safe-to-test label from a team member - Label auto-stripped on new push from external contributors, forcing re-review before CI re-runs - setup-bun pinned to SHA for supply chain security * add test workflow for github support * add test workflow for github support * fix: check collaborator permissions over api instead (#191) * QVAC-11759 infra: update SDK pod changelog generation and shared tooling (#155) * feat: add generic monorepo changelog generation script Tag-based changelog generator that works for any package in the monorepo. Finds latest tag, extracts PR numbers from commits scoped to a package path, fetches PR metadata from GitHub API, and produces a basic changelog. Supports migration via --base-commit and --base-version flags. * chore: move SDK pod scripts to shared scripts/sdk/ location Move validator and changelog-generate from packages/qvac-sdk/scripts/ to scripts/sdk/ so all SDK pod packages share the same tooling. SDK changelog wrapper now accepts --package flag and resolves paths from repo root. Update references in cursor rules and husky hook. * feat: add SDK changelog Cursor skill Add skill for AI-assisted changelog generation for SDK pod packages. Migrate generate-changelog rule content into skill reference to avoid duplication. * test: add changelog generation unit tests Add comprehensive unit tests for changelog generation using brittle. Includes mock data for basic, breaking changes, and model update scenarios. Rewrite validator-cli tests from bun:test to brittle for consistency. * infra: expand PR validation workflow to all SDK pod packages Rename pr-validation-qvac-sdk to pr-validation-sdk-pod. Expand path triggers to cover all SDK pod packages and update validator script path to shared location. * fix: clarify naming by renaming the generator scripts * fix: clarify paths in changelog llm format, skill * update prebuild download location for addon workflows * Use S3 cache for Vulkan SDK on Linux arm64 in prebuilds (#200) Reuse the same S3 Vulkan SDK cache (bucket tether-ai-dev) in prebuilds-qvac-lib-infer-whispercpp and prebuilds-qvac-lib-infer-nmtcpp. Replaces the previous GitHub Actions cache in nmtcpp and adds S3 download-or-build-and-upload in whispercpp so arm64 builds match the LLM/embed workflows. * QVAC-13100: Add minimum compiler version to build.md (#198) * fix: use has-permission action, reorder strip-label and authorize (#194) * QVAC-13086 feat: Scope CLI as @qvac/qvac-cli (#199) * feat(qvac-cli): publish as @qvac/qvac-cli * fix: add main and exports fields for module resolution * fix(ci/ocr): fix vcpkg cache not saving by splitting restore/save (#205) - Remove deprecated save-always from ccache and vcpkg cache steps - Split vcpkg cache into actions/cache/restore + actions/cache/save - Bump vcpkg cache key v2 -> v3 to bust stale entries - Save vcpkg cache only on main branch pushes when key is new * fix(whispercpp): fix double-escaped quotes in mobile E2E wdio config (#163) The WDIO config for Device Farm had double-escaped quotes (\\" instead of \") in the UiSelector and iOS predicate strings. This caused a SyntaxError on Device Farm: "missing ) after argument list". The original repo uses single-escaped quotes which work correctly. Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: GustavoA1604 <54457676+GustavoA1604@users.noreply.github.com> * chore: bump llamacpp SDK deps and remove iPhone 17 cpu override (#213) * chore: remove CHANGELOG from files (#215) * Whispercpp prebuild fix (#217) * update whisper cpp prebuild workflow * update whisper cpp prebuild workflow * nmtcpp benchmark ci (#204) * fix(ci/ocr): download rec_512 models from correct S3 path (#227) The integration test workflow was downloading models from the old 2025-12-16 S3 path which contains models expecting 2560px width input. The current code uses RECOGNIZER_MODEL_WIDTH=512, so switch to downloading from s3://tether-ai-dev/qvac_models_compiled/ocr/rec_512/ which has the correct 512-width models. Co-authored-by: shikha-tether <shikha.singh@tether.io> * fix(ci/ocr): download rec_512 models in benchmark workflow (#235) Update benchmark workflow to download models from the rec_512 S3 path into models/ocr/rec_512/ matching the benchmark script paths. * to include workflow files in main path filter & dorny path filters (#224) Co-authored-by: Proletter <40578159+Proletter@users.noreply.github.com> * QVAC-13067: Applied clang-tidy readability rules (#216) * Applied clang-tidy readability rules * Added script to run linting step * chore: update lockfile * disable sdk e2e tests until stabilised (#242) * feat: add @qvac/cli as optional dependency for expo prebuild * Fix unit tests (#245) * QVAC-13086 chore: add qvac-cli to sdk pod & remove manual CHANGELOG (#228) * chore: add to SDK pod, remove manual CHANGELOG * infra: add qvac-cli to SDK pod CI workflows * Fix/whispercpp vad (#222) (#252) * Fix/whisper silence hallucination (#160) * Refactor `WhisperModel` to remove unnecessary `state_` handling and streamline `whisper_full` usage. Update workflows for cross-platform compatibility and bump package version to 0.3.18. * Add v0.3.18 release notes detailing API updates, Windows CI/CD enhancements, prebuild package renaming, and bug fixes * Update workflow for Whispercpp integration tests: rename workflow, tweak inputs/env variables, and remove redundant comments * Refactor `WhisperModel` to streamline formatting of function calls and simplify method implementation. * Simplify integration test workflow by unifying Unix/Windows steps, updating OS matrix, and removing redundant configurations. * Enhance integration test workflow: add Windows-specific steps, configure scoped registries, improve prebuild handling, and update test execution logic. * Update integration test workflow: adjust OS matrix, add `working-directory` to steps, and refine platform-specific configurations. * Update integration test workflow: specify test file paths under `tests/` directory for Android and iOS configurations. * Merge main into fix/whispercpp-vad (#201) * update prebuild download location for addon workflows * Use S3 cache for Vulkan SDK on Linux arm64 in prebuilds (#200) Reuse the same S3 Vulkan SDK cache (bucket tether-ai-dev) in prebuilds-qvac-lib-infer-whispercpp and prebuilds-qvac-lib-infer-nmtcpp. Replaces the previous GitHub Actions cache in nmtcpp and adds S3 download-or-build-and-upload in whispercpp so arm64 builds match the LLM/embed workflows. --------- * Fix integration tests name in whispercpp * Revert wrong change in mobile tests for whispercpp --------- Co-authored-by: Freddy Martinez Garcia <freddy311082@gmail.com> Co-authored-by: Oluwaseun Ismaila <Oluwaseun.ismaila@tether.io> Co-authored-by: Juan Pablo Garibotti Arias <jp.garibotti@gmail.com> * On-pr workflow fix (#251) * QVAC-13109: [OCR] Fix monorepo integration and mobile-integration workflows (#219) * QVAC-13086 infra: Add GPR scope rewrite action and rename CLI to @qvac/cli (#230) * infra: add GPR scope rewrite action and rename CLI to @qvac/cli * refactor: hardcode workdir in cli-rewrite-sdk-scope action * Sync release llm-llamacpp-v0.8.9 , embed-llamacpp-v0.10.7 (#243) * bump version (#203) * bump version (#202) * feat(ocr): EasyOCR-style dynamic-width recognizer preprocessing (#179) * feat(ocr): add EasyOCR-style dynamic-width recognizer preprocessing Replace fixed-width (512px) recognizer preprocessing with dynamic-width resizing that preserves aspect ratios. Images are now resized proportionally to model height (64px) using LANCZOS4 interpolation, and batches use the max proportional width across all images in the batch. - Add calculateProportionalWidth() for EasyOCR-style width calculation - Modify alignAndCollate() to accept dynamic targetWidth parameter - Update runBatchInference() to use dynamicWidth instead of fixed width - Switch model directory from rec_512 to rec_dyn (dynamic-width models) - Replace recognizer_english with recognizer_latin in unit tests - Add --model-dir CLI option to benchmark tools - Update Portuguese test expected outputs for improved accuracy - Bump version to 0.1.6 * docs(ocr): add v0.1.6 release notes * fix(ci/ocr): fix vcpkg cache not saving by splitting restore/save - Remove deprecated save-always from ccache and vcpkg cache steps - Split vcpkg cache into actions/cache/restore + actions/cache/save - Bump vcpkg cache key v2 -> v3 to bust stale entries - Save vcpkg cache only on main branch pushes when key is new * fix(ci/ocr): update model path from rec_512 to rec_dyn in integration tests * fix(ci/ocr): fix mobile test downloading wrong package on workflow_dispatch When the PR workflow was manually dispatched, the mobile test workflow inherited github.event_name=='workflow_dispatch' and tried to download from npm with an empty package spec. Check inputs.package instead. * fix(ci/ocr): rename release tags to ocr-onnx-v<version> for monorepo * fix(ci/ocr): download rec_dyn models from correct S3 path The integration test workflow was downloading old models from the 2025-12-16 S3 path (expecting 2560px width). Switch to downloading dynamic-width models from s3://tether-ai-dev/qvac_models_compiled/ocr/rec_dyn/ which accept variable width input matching the new preprocessing code. * fix(ci/ocr): download rec_dyn models in benchmark workflow Update benchmark workflow to download dynamic-width models from s3://tether-ai-dev/qvac_models_compiled/ocr/rec_dyn/ into the models/ocr/rec_dyn/ directory matching the updated benchmark scripts. * QVAC-11630: [OCR] Add statistics to OCR addon and collect performance info (#254) * QVAC-13067: Apply clang-tidy readability-identifier-naming in addon (#249) * Apply clang-tidy readability-identifier-naming in addon * Renamed files for consistency Removed NOLINT exclusions and renamed variables * Run git-clang-format * Updated test that checked function name * feat!: deprecate util-transcription and remove TranscriptionFfmpegAddon (#239) BREAKING CHANGE: Remove TranscriptionFfmpegAddon module from whispercpp This removes the transcription-ffmpeg module from qvac-lib-infer-whispercpp and deprecates @qvac/util-transcription package. qvac-lib-infer-whispercpp changes: - Remove transcription-ffmpeg.js and transcription-ffmpeg.d.ts - Remove examples/example.ffmpeg.js - Remove @qvac/util-transcription dependency - Update README.md to remove TranscriptionFfmpegAddon documentation - Update test:dts script - Bump version from 0.3.17 to 0.4.0 qvac-util-transcription changes: - Add deprecated field to package.json - Add deprecation notice to README.md - Bump version from 0.1.4 to 0.1.5 Migration: Users should migrate to @qvac/sdk for transcription functionality that includes audio decoding. Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: GustavoA1604 <54457676+GustavoA1604@users.noreply.github.com> * refactor: Remove redundant formatting in queueOutput calls for cleaner code in WhisperModelJobsHandler (#258) Co-authored-by: GustavoA1604 <54457676+GustavoA1604@users.noreply.github.com> * QVAC-11751 chore: Standardize logger & log levels (#257) * infra: add GPR scope rewrite action and rename CLI to @qvac/cli * refactor: hardcode workdir in cli-rewrite-sdk-scope action * refactor: standardize logger & log levels * fix: improve logger validation and console method usage * fix: adjust log levels * QVAC-11149 feat(ocr): Migrate to new c++ addon architecture (#196) * QVAC-11149 feat(ocr): Migrate to new c++ addon architecture * Fixed build error * Fixed addon callback * Fixed freezing test on Darwin --------- Co-authored-by: olyasir <sirkinolya@gmail.com> * rename qvac-docs to docs (#270) * fix: use GitHub-hosted ARM64 runner for NMTCPP integration tests (#267) * nmtcpp support for ubuntu-22.04 and above (#261) * QVAC-12178 (#262) * nmtcpp support for ubuntu-22.04 and above * feat(ocr): EasyOCR-style dynamic-width recognizer preprocessing (#179) * feat(ocr): add EasyOCR-style dynamic-width recognizer preprocessing Replace fixed-width (512px) recognizer preprocessing with dynamic-width resizing that preserves aspect ratios. Images are now resized proportionally to model height (64px) using LANCZOS4 interpolation, and batches use the max proportional width across all images in the batch. - Add calculateProportionalWidth() for EasyOCR-style width calculation - Modify alignAndCollate() to accept dynamic targetWidth parameter - Update runBatchInference() to use dynamicWidth instead of fixed width - Switch model directory from rec_512 to rec_dyn (dynamic-width models) - Replace recognizer_english with recognizer_latin in unit tests - Add --model-dir CLI option to benchmark tools - Update Portuguese test expected outputs for improved accuracy - Bump version to 0.1.6 * docs(ocr): add v0.1.6 release notes * fix(ci/ocr): fix vcpkg cache not saving by splitting restore/save - Remove deprecated save-always from ccache and vcpkg cache steps - Split vcpkg cache into actions/cache/restore + actions/cache/save - Bump vcpkg cache key v2 -> v3 to bust stale entries - Save vcpkg cache only on main branch pushes when key is new * fix(ci/ocr): update model path from rec_512 to rec_dyn in integration tests * fix(ci/ocr): fix mobile test downloading wrong package on workflow_dispatch When the PR workflow was manually dispatched, the mobile test workflow inherited github.event_name=='workflow_dispatch' and tried to download from npm with an empty package spec. Check inputs.package instead. * fix(ci/ocr): rename release tags to ocr-onnx-v<version> for monorepo * fix(ci/ocr): download rec_dyn models from correct S3 path The integration test workflow was downloading old models from the 2025-12-16 S3 path (expecting 2560px width). Switch to downloading dynamic-width models from s3://tether-ai-dev/qvac_models_compiled/ocr/rec_dyn/ which accept variable width input matching the new preprocessing code. * fix(ci/ocr): download rec_dyn models in benchmark workflow Update benchmark workflow to download dynamic-width models from s3://tether-ai-dev/qvac_models_compiled/ocr/rec_dyn/ into the models/ocr/rec_dyn/ directory matching the updated benchmark scripts. * ubuntu-22.04 support for nmtcpp-ci --------- Co-authored-by: olyasir <sirkinolya@gmail.com> * fix: use GitHub-hosted ARM64 runner for NMTCPP integration tests Replace ubuntu-24.04-arm64-private (self-hosted) with ubuntu-24.04-arm (GitHub-hosted) to fix SIGILL crash on ARM64 integration tests. Co-Authored-By: Olya <olya@users.noreply.github.com> * revert: remove unrelated ocr package changes from branch Restore packages/qvac-lib-inference-addon-onnx-ocr-fasttext to match main. * revert: remove unrelated ocr release notes from branch * revert: remove unrelated ocr workflow changes from branch * revert: sync ocr workflows with latest main * ci: add vcpkg cache to NMTCPP prebuilds workflow Add restore/save vcpkg binary cache steps to speed up NMTCPP prebuilds, matching the pattern used in the OCR prebuilds workflow. * ci: cache Vulkan SDK arm64 build and remove duplicate steps - Remove duplicated Vulkan SDK download/build steps (copy-paste bug) - Cache the built Vulkan SDK for arm64 to avoid rebuilding from source on every run * ci: use S3-based Vulkan SDK cache for arm64 builds Replace actions/cache with S3-based caching matching the LLM addon approach. Shares the same S3 cache key so the built SDK is reused across addons. --------- Co-authored-by: alsrivas <40749307+Alok-Ranjan23@users.noreply.github.com> Co-authored-by: Olya <olya@users.noreply.github.com> * reenable npm publish on local npm publish action (#279) * fix: corestore directory deletion order causing EBUSY on windows (#266) * update readme to local paths (#280) * chore[notask]: backmerge release-qvac-sdk-0.6.1 into main (#285) * Reenable npm publish on local action (#287) * reenable npm publish on local npm publish action * update action to publish on merge to release branch * feat: QVAC-10955 sync models from hyperbee to registry Add 81 new entries to models.prod.json from hyperbee prod.config: - 74 Bergamot NMT entries (18 language pairs, per-file) - 2 LFM 2.5 1.2B models (Q4_K_M, Q4_0) - 2 Qwen3-VL 2B multimodal files (main + mmproj) - 1 Llama 3.2 1B tool-calling - 1 GPT-OSS 20B Q4_K_M - 1 Qwen 3 8B Q4_K_M Co-authored-by: Cursor <cursoragent@cursor.com> * fix: add LFM-1.0 license to allowlist The Liquid Foundation Models License 1.0 is used by the LFM 2.5 1.2B models added in the sync. Co-authored-by: Cursor <cursoragent@cursor.com> * fix: remove liquid models and license * QVAC-13067: Applied clang-tidy naming changes (#292) * Applied clang-tidy naming changes * Run git-clang-format * Add indexer quorum management with integration tests and deployment docs (#290) * Add indexer quorum management with integration tests and deployment docs Co-authored-by: Cursor <cursoragent@cursor.com> * updated schema dep * Increase timeout for license fetch integration test on CI Co-authored-by: Cursor <cursoragent@cursor.com> * Add QVAC_REMOVE_INDEXERS to ENV_KEYS in shared constants Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Cursor <cursoragent@cursor.com> * changes event to pull_req_target * added verify label-gating to lint-and-test * Add OCR rec_dyn models to registry (#288) * Add 14 OCR rec_dyn models to registry Add dynamic ONNX OCR models from s3://tether-ai-dev/qvac_models_compiled/ocr/rec_dyn/: - 1 CRAFT text detector (dynamic) - 13 text recognizers: Arabic, Bengali, Cyrillic, Devanagari, Japanese, Kannada, Korean, Latin, Tamil, Telugu, Thai, Chinese Simplified, Chinese Traditional * chore(registry): remove duplicate detector_craft entry * chore(registry): add dated S3 paths for OCR rec_dyn models Copy models to s3://tether-ai-dev/qvac_models_compiled/ocr/2026-02-12/rec_dyn/ and add corresponding entries. Original rec_dyn/ entries kept unchanged. * chore(registry): keep only dated S3 paths for OCR rec_dyn models * fix(registry): update old OCR entries to use rec_512 path and latin recognizer Replace incorrect 2025-04-25 paths with rec_512, swap recognizer_english for recognizer_latin, and fix detector tags. * chore(registry): use dated S3 paths for rec_512 OCR models --------- Co-authored-by: Yury Samarin <yuri.a.samarin@gmail.com> * feat: add plugin selection example with config and auto-bundling * fix: remove Android-specific flash attention handling from plugin --------- Co-authored-by: Yury Samarin <yuri.a.samarin@gmail.com> Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: Ishan Vohra <ishanvohra2@gmail.com> Co-authored-by: Ishan Vohra <ishanvohra@Ishans-MacBook-Air.local> Co-authored-by: GustavoA1604 <54457676+GustavoA1604@users.noreply.github.com> Co-authored-by: gianni <gianfranco.cordella@tether.io> Co-authored-by: Dmytro Medvinskyi <functionsilence@gmail.com> Co-authored-by: Proletter <40578159+Proletter@users.noreply.github.com> Co-authored-by: Lauri Piisang <lauri.piisang@gmail.com> Co-authored-by: Sero1000 <37454569+Sero1000@users.noreply.github.com> Co-authored-by: Sero <sero@Seros-MacBook-Pro.local> Co-authored-by: Simon Iribarren <simon.ig13@gmail.com> Co-authored-by: Ridwan Taiwo <donriddo@gmail.com> Co-authored-by: Maksim Smatrou <maxim-smotrov@users.noreply.github.com> Co-authored-by: Victor-Rodzko <victor.rodzko@itrexgroup.com> Co-authored-by: oluwaseun ismaila <oluwaseun.ismaila@tether.io> Co-authored-by: Juan Pablo Garibotti Arias <jp.garibotti@gmail.com> Co-authored-by: olyasir <sirkinolya@gmail.com> Co-authored-by: Raju Sharma <sharmaraju352@gmail.com> Co-authored-by: alsrivas <40749307+Alok-Ranjan23@users.noreply.github.com> Co-authored-by: shikha-tether <shikha.singh@tether.io> Co-authored-by: Juan Pablo Garibotti Arias <juan.arias@bitfinex.com> Co-authored-by: Freddy Martinez Garcia <freddy311082@gmail.com> Co-authored-by: dev-nid <nidhinpd811@gmail.com> Co-authored-by: iancris <17702377+iancris@users.noreply.github.com> Co-authored-by: saba-innowise <saba.gogichaishvili@innowise.com> Co-authored-by: Olya <olya@users.noreply.github.com>
Proletter
added a commit
that referenced
this pull request
May 24, 2026
* upddate workdir for multiple workflows * corrections
Zbig9000
added a commit
to Zbig9000/qvac
that referenced
this pull request
May 26, 2026
…l registry PR lands Drops the previous shortcut of pointing the addon's vcpkg `default-registry` baseline at my personal fork. Instead, the vcpkg port files being added in the companion qvac-registry-vcpkg PR tetherto#169 are vendored into the addon as an overlay port so CI can validate the addon-side migration end-to-end against the WIP port without depending on the fork staying alive. Layout: vcpkg-overlays/whisper-cpp/ — verbatim copy of the qvac-registry-vcpkg PR tetherto#169 port tree (portfile.cmake + vcpkg.json + patches/0001-move-gnuinstalldirs-before- add-subdirectory-src.patch). vcpkg-configuration.json: default-registry is restored to tetherto/qvac-registry-vcpkg at HEAD (6df36b4f), and a new top-level "overlay-ports" entry points at the vendored copy. Process this unblocks (per Gustavo's merge protocol): 1. THIS commit — addon validates against WIP port via overlay (no fork dependency). 2. CI greens on the addon PR — proves the migration is safe. 3. Merge order is now flexible: registry PR tetherto#169 (and any follow-up registry PRs) can be merged independently. 4. After registry merges, the next commit on the addon branch removes vcpkg-overlays/whisper-cpp/, bumps the default-registry baseline to the new tetherto/main SHA, and re-runs CI to prove the addon still resolves the port from the merged registry. 5. Then the addon PR is merged. Verified locally on x64-linux: - npx bare-make generate resolves whisper-cpp[core,vulkan]@1.8.5 from the overlay path and ggml-speech[core,vulkan]@2026-04-09tetherto#4 from tetherto/main (logged as "whisper-cpp[core,vulkan]:x64-linux@1.8.5 -- /home/.../vcpkg-overlays/whisper-cpp" and "ggml-speech[core,vulkan]:x64-linux@2026-04-09#4 -- git+https://github.com/tetherto/qvac-registry-vcpkg.git@b9dab610"). - bare-make build + install: clean. Final prebuild stages libqvac-speech-ggml-{cpu,vulkan}.a (speech-prefixed — confirms ggml-speech consumption, not bundled). - npm run test:cpp: 106 / 107 pass (1 pre-existing skip; 0 failures, 0 regressions). Backend identity capture verified from the test log: "Active GPU backend: id=2 name='Vulkan' device='NVIDIA GeForce RTX 5090' mem_total_mb=32607 mem_free_mb=31149". Co-authored-by: Cursor <cursoragent@cursor.com>
9 tasks
Zbig9000
added a commit
to Zbig9000/qvac
that referenced
this pull request
May 26, 2026
…l registry PR lands Drops the previous shortcut of pointing the addon's vcpkg `default-registry` baseline at my personal fork. Instead, the vcpkg port files being added in the companion qvac-registry-vcpkg PR tetherto#169 are vendored into the addon as an overlay port so CI can validate the addon-side migration end-to-end against the WIP port without depending on the fork staying alive. Layout: vcpkg-overlays/whisper-cpp/ — verbatim copy of the qvac-registry-vcpkg PR tetherto#169 port tree (portfile.cmake + vcpkg.json + patches/0001-move-gnuinstalldirs-before- add-subdirectory-src.patch). vcpkg-configuration.json: default-registry is restored to tetherto/qvac-registry-vcpkg at HEAD (6df36b4f), and a new top-level "overlay-ports" entry points at the vendored copy. Process this unblocks (per Gustavo's merge protocol): 1. THIS commit — addon validates against WIP port via overlay (no fork dependency). 2. CI greens on the addon PR — proves the migration is safe. 3. Merge order is now flexible: registry PR tetherto#169 (and any follow-up registry PRs) can be merged independently. 4. After registry merges, the next commit on the addon branch removes vcpkg-overlays/whisper-cpp/, bumps the default-registry baseline to the new tetherto/main SHA, and re-runs CI to prove the addon still resolves the port from the merged registry. 5. Then the addon PR is merged. Verified locally on x64-linux: - npx bare-make generate resolves whisper-cpp[core,vulkan]@1.8.5 from the overlay path and ggml-speech[core,vulkan]@2026-04-09tetherto#4 from tetherto/main (logged as "whisper-cpp[core,vulkan]:x64-linux@1.8.5 -- /home/.../vcpkg-overlays/whisper-cpp" and "ggml-speech[core,vulkan]:x64-linux@2026-04-09#4 -- git+https://github.com/tetherto/qvac-registry-vcpkg.git@b9dab610"). - bare-make build + install: clean. Final prebuild stages libqvac-speech-ggml-{cpu,vulkan}.a (speech-prefixed — confirms ggml-speech consumption, not bundled). - npm run test:cpp: 106 / 107 pass (1 pre-existing skip; 0 failures, 0 regressions). Backend identity capture verified from the test log: "Active GPU backend: id=2 name='Vulkan' device='NVIDIA GeForce RTX 5090' mem_total_mb=32607 mem_free_mb=31149". Co-authored-by: Cursor <cursoragent@cursor.com>
Zbig9000
added a commit
to Zbig9000/qvac
that referenced
this pull request
May 26, 2026
…l registry PR lands Drops the previous shortcut of pointing the addon's vcpkg `default-registry` baseline at my personal fork. Instead, the vcpkg port files being added in the companion qvac-registry-vcpkg PR tetherto#169 are vendored into the addon as an overlay port so CI can validate the addon-side migration end-to-end against the WIP port without depending on the fork staying alive. Layout: vcpkg-overlays/whisper-cpp/ — verbatim copy of the qvac-registry-vcpkg PR tetherto#169 port tree (portfile.cmake + vcpkg.json + patches/0001-move-gnuinstalldirs-before- add-subdirectory-src.patch). vcpkg-configuration.json: default-registry is restored to tetherto/qvac-registry-vcpkg at HEAD (6df36b4f), and a new top-level "overlay-ports" entry points at the vendored copy. Process this unblocks (per Gustavo's merge protocol): 1. THIS commit — addon validates against WIP port via overlay (no fork dependency). 2. CI greens on the addon PR — proves the migration is safe. 3. Merge order is now flexible: registry PR tetherto#169 (and any follow-up registry PRs) can be merged independently. 4. After registry merges, the next commit on the addon branch removes vcpkg-overlays/whisper-cpp/, bumps the default-registry baseline to the new tetherto/main SHA, and re-runs CI to prove the addon still resolves the port from the merged registry. 5. Then the addon PR is merged. Verified locally on x64-linux: - npx bare-make generate resolves whisper-cpp[core,vulkan]@1.8.5 from the overlay path and ggml-speech[core,vulkan]@2026-04-09tetherto#4 from tetherto/main (logged as "whisper-cpp[core,vulkan]:x64-linux@1.8.5 -- /home/.../vcpkg-overlays/whisper-cpp" and "ggml-speech[core,vulkan]:x64-linux@2026-04-09#4 -- git+https://github.com/tetherto/qvac-registry-vcpkg.git@b9dab610"). - bare-make build + install: clean. Final prebuild stages libqvac-speech-ggml-{cpu,vulkan}.a (speech-prefixed — confirms ggml-speech consumption, not bundled). - npm run test:cpp: 106 / 107 pass (1 pre-existing skip; 0 failures, 0 regressions). Backend identity capture verified from the test log: "Active GPU backend: id=2 name='Vulkan' device='NVIDIA GeForce RTX 5090' mem_total_mb=32607 mem_free_mb=31149". Co-authored-by: Cursor <cursoragent@cursor.com>
Zbig9000
added a commit
to Zbig9000/qvac
that referenced
this pull request
May 26, 2026
…l registry PR lands Drops the previous shortcut of pointing the addon's vcpkg `default-registry` baseline at my personal fork. Instead, the vcpkg port files being added in the companion qvac-registry-vcpkg PR tetherto#169 are vendored into the addon as an overlay port so CI can validate the addon-side migration end-to-end against the WIP port without depending on the fork staying alive. Layout: vcpkg-overlays/whisper-cpp/ — verbatim copy of the qvac-registry-vcpkg PR tetherto#169 port tree (portfile.cmake + vcpkg.json + patches/0001-move-gnuinstalldirs-before- add-subdirectory-src.patch). vcpkg-configuration.json: default-registry is restored to tetherto/qvac-registry-vcpkg at HEAD (6df36b4f), and a new top-level "overlay-ports" entry points at the vendored copy. Process this unblocks (per Gustavo's merge protocol): 1. THIS commit — addon validates against WIP port via overlay (no fork dependency). 2. CI greens on the addon PR — proves the migration is safe. 3. Merge order is now flexible: registry PR tetherto#169 (and any follow-up registry PRs) can be merged independently. 4. After registry merges, the next commit on the addon branch removes vcpkg-overlays/whisper-cpp/, bumps the default-registry baseline to the new tetherto/main SHA, and re-runs CI to prove the addon still resolves the port from the merged registry. 5. Then the addon PR is merged. Verified locally on x64-linux: - npx bare-make generate resolves whisper-cpp[core,vulkan]@1.8.5 from the overlay path and ggml-speech[core,vulkan]@2026-04-09tetherto#4 from tetherto/main (logged as "whisper-cpp[core,vulkan]:x64-linux@1.8.5 -- /home/.../vcpkg-overlays/whisper-cpp" and "ggml-speech[core,vulkan]:x64-linux@2026-04-09#4 -- git+https://github.com/tetherto/qvac-registry-vcpkg.git@b9dab610"). - bare-make build + install: clean. Final prebuild stages libqvac-speech-ggml-{cpu,vulkan}.a (speech-prefixed — confirms ggml-speech consumption, not bundled). - npm run test:cpp: 106 / 107 pass (1 pre-existing skip; 0 failures, 0 regressions). Backend identity capture verified from the test log: "Active GPU backend: id=2 name='Vulkan' device='NVIDIA GeForce RTX 5090' mem_total_mb=32607 mem_free_mb=31149". Co-authored-by: Cursor <cursoragent@cursor.com>
Zbig9000
added a commit
to Zbig9000/qvac
that referenced
this pull request
May 26, 2026
…ggml PR tetherto#13 HEAD Wires Zbig9000/qvac-ext-ggml@QVAC-18992-merge-ggml-from-whisper-cpp@d39c0d29 (qvac-ext-ggml PR tetherto#13) into the addon's vcpkg-configuration.json as an overlay port, alongside the existing whisper-cpp overlay (registry PR tetherto#169). This lets the addon's full CI matrix exercise BOTH: - whisper-cpp 1.8.5 from registry PR tetherto#169 (already present) - ggml-speech 2026-05-26 from qvac-ext-ggml PR tetherto#13 (new) before either underlying PR is merged to its respective registry/branch. Overlay diff vs registry's ggml-speech@2026-04-09 tetherto#4: - REF/SHA512 → PR tetherto#13 HEAD (d39c0d29) - new vulkan dep on spirv-headers - new patch 0001-ggml-vulkan-find-spirv-headers.patch wiring SPIRV-Headers into ggml-vulkan (PR tetherto#13's v0.10.2 sync adds #include <spirv/unified1/spirv.hpp> but upstream ggml-vulkan CMakeLists.txt never finds SPIRV-Headers; the same fix should be pushed upstream later and the patch dropped) - version-date / port-version bumped so vcpkg picks overlay over registry Local validation with both overlays active: - vcpkg dep graph: ggml-speech resolves from vcpkg-overlays/ggml-speech, whisper-cpp from vcpkg-overlays/whisper-cpp, spirv-headers from microsoft/vcpkg - cryptographic confirmation: buildtree src/ggml-vulkan/ggml-vulkan.cpp sha256 IDENTICAL to qvac-ext-ggml@d39c0d29:src/ggml-vulkan/ggml-vulkan.cpp, GGML_VERSION = 0.10.2 (PR tetherto#13's upstream sync) - linux-x64 cpp tests: 107/107 pass - js suite: test:dts + lint + unit (30/30) + integration (10/10) + multiple + accuracy (Japanese WER 0%) + chunking (10-min audio) + live-stream-simulation + model-file-validation (5/5) - cpp-lint: clang-format clean, clang-tidy-19 0 user-code errors Co-authored-by: Cursor <cursoragent@cursor.com>
Zbig9000
added a commit
to Zbig9000/qvac
that referenced
this pull request
May 27, 2026
…; bump version>=ggml-speech in whisper-cpp overlay Two related overlay corrections so the overlay tree is a verbatim mirror of what qvac-registry-vcpkg PR tetherto#169 will publish: 1. vcpkg-overlays/ggml-speech/ was still pinned to the pre-merge fork (Zbig9000/qvac-ext-ggml@QVAC-18992-merge-ggml-from-whisper-cpp@e31785e4, version-date 2026-05-26#0) from the days before tetherto/qvac-ext-ggml PR tetherto#13 merged. Synced wholesale to qvac-registry-vcpkg/ports/ggml-speech: REF e31785e4 -> c9126afc (merge commit of PR tetherto#13 on @speech) SHA512 <fork SHA> -> <tetherto SHA> HEAD_REF QVAC-18992-merge-ggml-from-whisper-cpp -> speech version-date 2026-05-26#0 -> 2026-05-27#0 description updated to drop "LOCAL OVERLAY" language Source-wise this is a no-op (c9126afc on @speech contains e31785e4 as its single PR-side parent, so the tree is identical), but the overlay must declare the exact REF/version that will land in the registry so the build is provably what gets published. 2. vcpkg-overlays/whisper-cpp/vcpkg.json: version>=ggml-speech bumped 2026-04-09#4 -> 2026-05-27. whisper-cpp@1.8.5 only works against the new ggml-speech (v0.10.2 vendored sources, new symbol set, spirv-headers Vulkan wiring), so the constraint must reflect that minimum. In practice the resolver always picked 2026-05-27 from the addon's own override, so this is metadata-only and not a behavior change. Local validation on x64-linux (vulkan feature) with synced overlays: - bare-make generate resolves ggml-speech[core,vulkan]@2026-05-27 (was 2026-05-26 with the stale overlay) + whisper-cpp[core,vulkan]@1.8.5 + spirv-headers (transitive from ggml-speech vulkan dep) - build links clean - npm run test:cpp -> 107/107 pass - npm run test:unit -> 30/30 pass - npm run test:dts -> clean Co-authored-by: Cursor <cursoragent@cursor.com>
Zbig9000
added a commit
to Zbig9000/qvac
that referenced
this pull request
May 27, 2026
…1.4.341.0 Mirrors the same fix in qvac-registry-vcpkg PR tetherto#169 so the overlay stays a verbatim copy of what the registry will publish. Without a version>= constraint, the resolved spirv-headers version depends entirely on the consumer's microsoft/vcpkg baseline; 1.4.341.0 is the version already used by qvac-fabric. Local validation on x64-linux: vcpkg upgrades spirv-headers from the addon's baseline 1.4.304.1 to the required 1.4.341.0, addon builds clean, 107/107 cpp tests + 30/30 unit tests pass. Co-authored-by: Cursor <cursoragent@cursor.com>
Zbig9000
added a commit
that referenced
this pull request
May 28, 2026
… feature + GPU backend identity (QVAC-19236, QVAC-18992, QVAC-18993) (#2270) * transcription-whispercpp 0.9.0: ggml-speech migration + metal feature + GPU backend identity in runtime stats Three ticket deliverables combined into a single coordinated 0.9.0 release of the addon (paired with the whisper-cpp 1.8.5 + metal-feature port rewrite landing in qvac-registry-vcpkg companion PR): QVAC-18992 — Migrate to use ggml speech branch ---------------------------------------------- Addon now consumes `whisper-cpp 1.8.5#0` which links the system- installed `ggml-speech` (port-version 4) via WHISPER_USE_SYSTEM_GGML=ON. Whisper + parakeet + tts all share the same libqvac-speech-ggml-* binary set on every triplet (was: whisper-cpp brought a separate libqvac-ggml-* set). CMakeLists.txt: rewritten to mirror transcription-parakeet exactly — two-branch BACKEND_DL_LIBS / BACKEND_DL_LOOSE_SOS collection so the per-arch CPU IMPORTED targets and the MODULE Vulkan/OpenCL .so files (which ggml-config deliberately omits from GGML_AVAILABLE_BACKENDS) both get staged into prebuilds/<bare_target>/<module_name>/ for the runtime ggml_backend_load_all_from_path() scan. The old whisper- specific find_library fallback (created SHARED IMPORTED targets from raw .so paths to work around bundled-ggml's MODULE-target export gap) is removed — ggml-speech port surfaces what it can, BACKEND_DL_LOOSE_SOS catches the rest. vcpkg-configuration.json default-registry baseline pinned to my fork for CI; will be re-pinned to tetherto/qvac-registry-vcpkg HEAD after the companion vcpkg-registry PR merges. vcpkg.json override bumped to whisper-cpp 1.8.5#0. QVAC-19236 — Expose backend selection as features ------------------------------------------------- Addon's vcpkg.json now selects whisper-cpp[metal] for osx (was unconditionally on via the portfile; now declarative). iOS dep entry stays without the [metal] feature until the separate iOS Metal/MTLCompiler XPC crash is investigated — iOS continues to ship on the CPU backend by simply not asking for [metal]. QVAC-18993 — Android dynamic-backend + per-device GPU assertion --------------------------------------------------------------- Added a one-shot device introspection step at model load time: `WhisperModel::captureActiveBackendInfo()` enumerates the ggml backend registry (after ensureBackendsLoadedAndroid() loads the dynamic .so modules on Android) and records the first GPU/IGPU device's identity + memory snapshot. Result is surfaced through the existing runtimeStats() pipeline as three new keys (the RuntimeStats variant only takes double|int64_t, so backend identity is encoded as a stable numeric enum): gpuBackendId 0=CPU, 1=Metal, 2=Vulkan, 3=OpenCL, 4=CUDA, 99=other gpuMemTotalMb -1 when the device does not expose memory accounting gpuMemFreeMb -1 when the device does not expose memory accounting The selected backend's full name + device description are also logged once via QLOG(INFO) so they're recoverable from the Android Device-Farm logcat capture for the human-readable assertion side (S25 -> "OpenCL" / "Adreno (TM) …", Pixel 9 -> "Vulkan" / "Mali-…"). Mobile-perf-runner.js now asserts the new keys are present and, on Android with use_gpu=true, that gpuBackendId resolves to either Vulkan (2) or OpenCL (3) — the union covers both Device-Farm device families without needing a per-device branch from inside the bare spec (the device capabilities split lives in the wdio config, not here). index.d.ts: extended RuntimeStats with the three new keys + the enum documentation. CHANGELOG.md: consolidated 0.9.0 entry covering all three tickets. Verified locally on linux-x64: - npx bare-make generate succeeds (whisper-cpp 1.8.5 + ggml-speech 2026-04-09#4 resolve cleanly via my fork baseline) - npx bare-make build succeeds (.bare module + libqvac-speech- ggml-cpu.a + libqvac-speech-ggml-vulkan.a linked into prebuilds) - test:cpp passes: 106 / 107 (1 streaming case skipped, pre- existing; 0 failures, 0 regressions). Backend capture verified from the test log: `Active GPU backend: id=2 name='Vulkan' device='NVIDIA GeForce RTX 5090' mem_total_mb=32607 mem_free_mb=31342`. Co-authored-by: Cursor <cursoragent@cursor.com> * transcription-whispercpp: pin whisper-cpp WIP port as an overlay until registry PR lands Drops the previous shortcut of pointing the addon's vcpkg `default-registry` baseline at my personal fork. Instead, the vcpkg port files being added in the companion qvac-registry-vcpkg PR #169 are vendored into the addon as an overlay port so CI can validate the addon-side migration end-to-end against the WIP port without depending on the fork staying alive. Layout: vcpkg-overlays/whisper-cpp/ — verbatim copy of the qvac-registry-vcpkg PR #169 port tree (portfile.cmake + vcpkg.json + patches/0001-move-gnuinstalldirs-before- add-subdirectory-src.patch). vcpkg-configuration.json: default-registry is restored to tetherto/qvac-registry-vcpkg at HEAD (6df36b4f), and a new top-level "overlay-ports" entry points at the vendored copy. Process this unblocks (per Gustavo's merge protocol): 1. THIS commit — addon validates against WIP port via overlay (no fork dependency). 2. CI greens on the addon PR — proves the migration is safe. 3. Merge order is now flexible: registry PR #169 (and any follow-up registry PRs) can be merged independently. 4. After registry merges, the next commit on the addon branch removes vcpkg-overlays/whisper-cpp/, bumps the default-registry baseline to the new tetherto/main SHA, and re-runs CI to prove the addon still resolves the port from the merged registry. 5. Then the addon PR is merged. Verified locally on x64-linux: - npx bare-make generate resolves whisper-cpp[core,vulkan]@1.8.5 from the overlay path and ggml-speech[core,vulkan]@2026-04-09#4 from tetherto/main (logged as "whisper-cpp[core,vulkan]:x64-linux@1.8.5 -- /home/.../vcpkg-overlays/whisper-cpp" and "ggml-speech[core,vulkan]:x64-linux@2026-04-09#4 -- git+https://github.com/tetherto/qvac-registry-vcpkg.git@b9dab610"). - bare-make build + install: clean. Final prebuild stages libqvac-speech-ggml-{cpu,vulkan}.a (speech-prefixed — confirms ggml-speech consumption, not bundled). - npm run test:cpp: 106 / 107 pass (1 pre-existing skip; 0 failures, 0 regressions). Backend identity capture verified from the test log: "Active GPU backend: id=2 name='Vulkan' device='NVIDIA GeForce RTX 5090' mem_total_mb=32607 mem_free_mb=31149". Co-authored-by: Cursor <cursoragent@cursor.com> * transcription-whispercpp: clang-format + clang-tidy fixes on captureActiveBackendInfo() Caught locally by running the exact CI cpp-lint commands against this branch: git-clang-format --binary clang-format --extensions c,cc,cpp,... --diff "$(git merge-base HEAD upstream/main)" -- packages/transcription-whispercpp clang-tidy-19 -p build addon/src/model-interface/whisper.cpp/WhisperModel.cpp --header-filter='^.../packages/transcription-whispercpp/addon/...' --warnings-as-errors='*' Two findings, both in code added by the previous commit fab6888: 1. clang-format (8 hunks): include ordering (now grouped alphabetically per the project's IncludeBlocks rule), allman-style brace wrapping around the single-statement `if` bodies in gpuBackendIdFromName() and on the `dev == nullptr` early-continue in captureActiveBackendInfo(), and the column-limit-driven multi-line spread on the std::transform() call and the two gpu_mem_{total,free}_mb_ ternary assignments. 2. clang-tidy readability-identifier-naming on the new `K_BYTES_PER_MB` local constexpr: project convention enforced by .clang-tidy is `kBytesPerMb` (lower-camel with a `k` prefix) for function-scope constants, not SCREAMING_SNAKE. Renamed to kBytesPerMb at all three use sites. Re-validated after the fix: - clang-format --diff: no remaining diffs - clang-tidy-19 --warnings-as-errors='*': 0 user-code errors (4137 warnings, all suppressed as non-user-code per the header-filter regex) - npx bare-make generate + build + install: clean - npm run test:cpp: 107 / 107 pass (kBytesPerMb rename is a pure identifier change; behaviour is byte-for-byte identical and the Vulkan backend identity log still reports `Active GPU backend: id=2 name='Vulkan' device='NVIDIA GeForce RTX 5090' mem_total_mb=32607 mem_free_mb=31178`). - npm run test:dts: clean - npm run lint (standardJS): clean - npm run test:unit / test:integration / test:integration:multiple / test:integration:chunking / test:integration:accuracy (multi-lang incl. Japanese WER 0.00%) / test:integration:live-stream-simultion / test:unit:reload:esraw / test:integration:model-file-validation / test:integration:corrupted-model — all pass with the new formatted source. Confirms the new captureActiveBackendInfo() introduced in fab6888 would have been caught by CI on the first push; fixing locally before re-trigger avoids one CI cycle. Co-authored-by: Cursor <cursoragent@cursor.com> * transcription-whispercpp: add ggml-speech overlay pinned to qvac-ext-ggml PR #13 HEAD Wires Zbig9000/qvac-ext-ggml@QVAC-18992-merge-ggml-from-whisper-cpp@d39c0d29 (qvac-ext-ggml PR #13) into the addon's vcpkg-configuration.json as an overlay port, alongside the existing whisper-cpp overlay (registry PR #169). This lets the addon's full CI matrix exercise BOTH: - whisper-cpp 1.8.5 from registry PR #169 (already present) - ggml-speech 2026-05-26 from qvac-ext-ggml PR #13 (new) before either underlying PR is merged to its respective registry/branch. Overlay diff vs registry's ggml-speech@2026-04-09 #4: - REF/SHA512 → PR #13 HEAD (d39c0d29) - new vulkan dep on spirv-headers - new patch 0001-ggml-vulkan-find-spirv-headers.patch wiring SPIRV-Headers into ggml-vulkan (PR #13's v0.10.2 sync adds #include <spirv/unified1/spirv.hpp> but upstream ggml-vulkan CMakeLists.txt never finds SPIRV-Headers; the same fix should be pushed upstream later and the patch dropped) - version-date / port-version bumped so vcpkg picks overlay over registry Local validation with both overlays active: - vcpkg dep graph: ggml-speech resolves from vcpkg-overlays/ggml-speech, whisper-cpp from vcpkg-overlays/whisper-cpp, spirv-headers from microsoft/vcpkg - cryptographic confirmation: buildtree src/ggml-vulkan/ggml-vulkan.cpp sha256 IDENTICAL to qvac-ext-ggml@d39c0d29:src/ggml-vulkan/ggml-vulkan.cpp, GGML_VERSION = 0.10.2 (PR #13's upstream sync) - linux-x64 cpp tests: 107/107 pass - js suite: test:dts + lint + unit (30/30) + integration (10/10) + multiple + accuracy (Japanese WER 0%) + chunking (10-min audio) + live-stream-simulation + model-file-validation (5/5) - cpp-lint: clang-format clean, clang-tidy-19 0 user-code errors Co-authored-by: Cursor <cursoragent@cursor.com> * transcription-whispercpp: bump ggml-speech overlay to PR #13 HEAD e31785e4 Picks up the Apple-Metal build fix pushed to qvac-ext-ggml PR #13 (restores the lost 'typedef struct {' before ggml_metal_kargs_supertonic_depthwise_1d in src/ggml-metal/ggml-metal-impl.h). Without this bump the Apple-Metal prebuild matrix (darwin-arm64, ios-arm64, ios-arm64-simulator, ios-x64-simulator) fails to compile against PR #13's source. Local linux-x64 re-validation: vcpkg downloads the new tarball (e31785e4), applies the spirv-headers patch, builds clean, 107/107 C++ tests pass. Co-authored-by: Cursor <cursoragent@cursor.com> * vcpkg-overlays: sync ggml-speech overlay to registry post-merge state; bump version>=ggml-speech in whisper-cpp overlay Two related overlay corrections so the overlay tree is a verbatim mirror of what qvac-registry-vcpkg PR #169 will publish: 1. vcpkg-overlays/ggml-speech/ was still pinned to the pre-merge fork (Zbig9000/qvac-ext-ggml@QVAC-18992-merge-ggml-from-whisper-cpp@e31785e4, version-date 2026-05-26#0) from the days before tetherto/qvac-ext-ggml PR #13 merged. Synced wholesale to qvac-registry-vcpkg/ports/ggml-speech: REF e31785e4 -> c9126afc (merge commit of PR #13 on @speech) SHA512 <fork SHA> -> <tetherto SHA> HEAD_REF QVAC-18992-merge-ggml-from-whisper-cpp -> speech version-date 2026-05-26#0 -> 2026-05-27#0 description updated to drop "LOCAL OVERLAY" language Source-wise this is a no-op (c9126afc on @speech contains e31785e4 as its single PR-side parent, so the tree is identical), but the overlay must declare the exact REF/version that will land in the registry so the build is provably what gets published. 2. vcpkg-overlays/whisper-cpp/vcpkg.json: version>=ggml-speech bumped 2026-04-09#4 -> 2026-05-27. whisper-cpp@1.8.5 only works against the new ggml-speech (v0.10.2 vendored sources, new symbol set, spirv-headers Vulkan wiring), so the constraint must reflect that minimum. In practice the resolver always picked 2026-05-27 from the addon's own override, so this is metadata-only and not a behavior change. Local validation on x64-linux (vulkan feature) with synced overlays: - bare-make generate resolves ggml-speech[core,vulkan]@2026-05-27 (was 2026-05-26 with the stale overlay) + whisper-cpp[core,vulkan]@1.8.5 + spirv-headers (transitive from ggml-speech vulkan dep) - build links clean - npm run test:cpp -> 107/107 pass - npm run test:unit -> 30/30 pass - npm run test:dts -> clean Co-authored-by: Cursor <cursoragent@cursor.com> * vcpkg-overlays/ggml-speech: pin spirv-headers vulkan dep to version>=1.4.341.0 Mirrors the same fix in qvac-registry-vcpkg PR #169 so the overlay stays a verbatim copy of what the registry will publish. Without a version>= constraint, the resolved spirv-headers version depends entirely on the consumer's microsoft/vcpkg baseline; 1.4.341.0 is the version already used by qvac-fabric. Local validation on x64-linux: vcpkg upgrades spirv-headers from the addon's baseline 1.4.304.1 to the required 1.4.341.0, addon builds clean, 107/107 cpp tests + 30/30 unit tests pass. Co-authored-by: Cursor <cursoragent@cursor.com> * transcription-whispercpp: drop vcpkg overlays now that qvac-registry-vcpkg#169 is merged Step E of the cross-repo merge protocol: now that the registry PR has landed on tetherto/qvac-registry-vcpkg@main as b54eb17 ("whisper-cpp 1.8.5 + ggml-speech 2026-05-27 + tts-cpp/parakeet-cpp re-validation"), the addon no longer needs the WIP overlay ports. vcpkg-configuration.json: - default-registry.baseline 6df36b4f -> b54eb17 (the merge SHA of qvac-registry-vcpkg#169) - drop overlay-ports block (vcpkg-overlays/{whisper-cpp,ggml-speech}/) vcpkg-overlays/whisper-cpp/ -> removed vcpkg-overlays/ggml-speech/ -> removed The whisper-cpp version pin in vcpkg.json overrides is unchanged (still 1.8.5 / port-version 0), which now resolves straight from the registry. ggml-speech is pulled in transitively at 2026-05-27#0 (the new baseline). spirv-headers is pulled in transitively from microsoft/vcpkg at the 1.4.341.0 floor declared in the new ggml-speech port. Local validation on x64-linux (vulkan feature) against the merged registry, with no overlays: - bare-make generate resolves ggml-speech[core,vulkan]:x64-linux@2026-05-27 -> tetherto/qvac-registry-vcpkg git-tree c201f77 (identical to the overlay-phase tree -- proves the source code is the same as what CI ran the last 28/28 green matrix on) whisper-cpp[core,vulkan]:x64-linux@1.8.5 -> tetherto/qvac-registry-vcpkg git-tree d18888f (also identical to the overlay-phase tree) spirv-headers:x64-linux@1.4.341.0 -> microsoft/vcpkg (transitive via ggml-speech[vulkan]) The ggml-speech and whisper-cpp package-ABI hashes are byte-identical to the last overlay-phase run, confirming the registry resolution and the overlay resolution install the exact same content. - build links clean - npm run test:cpp -> 107/107 pass - npm run test:unit -> 30/30 pass - npm run test:dts -> clean Co-authored-by: Cursor <cursoragent@cursor.com> * transcription-whispercpp: revert default-registry baseline bump Address @jpgaribotti review on #2270: "Don't update the baseline." The whisper-cpp@1.8.5#0 override in vcpkg.json + the version>=ggml-speech and version>=spirv-headers constraints declared inside the new whisper-cpp and ggml-speech ports are enough to pull the new ports out of the registry's git history without bumping the baseline past a9d7e924 -- vcpkg's overrides walk the registry's versions/ database across history, they are not gated on the baseline tree. Local re-validation on x64-linux (vulkan), with baseline kept at a9d7e924 (the value already on tetherto/qvac@main): bare-make generate resolves: ggml-speech[core,vulkan]:x64-linux@2026-05-27 -> git-tree c201f77 whisper-cpp[core,vulkan]:x64-linux@1.8.5 -> git-tree d18888f spirv-headers:x64-linux@1.4.341.0 -> microsoft/vcpkg All three resolved git-trees and package-ABI hashes match the previous baseline-bumped run byte-for-byte, confirming the dropped baseline change is purely a no-op for what gets installed. Build links clean, npm run test:cpp 107/107 pass, test:unit 30/30 pass, test:dts clean. Co-authored-by: Cursor <cursoragent@cursor.com> * transcription-whispercpp: address jpgaribotti review on backend identity API Four review items on PR #2270: 1. Align BackendId numeric values with transcription-parakeet's BackendId enum (CPU=0, Metal=1, CUDA=2, Vulkan=3, OpenCL=4, Other=99). Whisper previously used (Metal=1, Vulkan=2, OpenCL=3, CUDA=4) which silently broke cross-addon device-farm comparison. While we're at it, rename gpuBackendId -> backendId and add a companion backendDevice (0=CPU, 1=GPU) so the RuntimeStats shape mirrors parakeet's. Public-API change but 0.9.0 hasn't shipped yet so no migration cost. 2. Replicate whisper.cpp's exact GPU selection in captureActiveBackendInfo() so the reported backend matches what whisper actually initialised against: - read use_gpu / gpu_device out of WhisperConfig (was: always enumerate, even for use_gpu=false) - pick GGML_BACKEND_DEVICE_TYPE_GPU only (was: GPU or IGPU -- whisper rejects IGPU, so reporting one would lie) - honour gpu_device index when set (was: ignored) Was: first-match enumeration across all GPU/IGPU devices, could disagree with whisper's pick on Android where Vulkan and OpenCL both register and ggml_backend_dev_get() order differs from whisper's preference. 3. Emit a WARNING through the addon logger when use_gpu=true was requested but no GPU device is registered (silent CPU fallback case). Mirrors ParakeetModel::loadModel()'s WARNING so the iOS/desktop mobile-perf paths stop hiding silent CPU fallback behind a "backendId !== null" assertion. 4. CHANGELOG.md: drop the "Re-pinned the default-registry baseline..." paragraph -- we're keeping the baseline conservative per the same review. Files updated to keep everything in sync: - addon/src/model-interface/whisper.cpp/WhisperModel.hpp: rename gpu_backend_id_ -> backend_id_, add backend_device_, rename gpu_backend_name_ -> backend_name_, update doc comment numbers. - addon/src/model-interface/whisper.cpp/WhisperModel.cpp: rewrite backendIdFromName() -> backendIdFromRegName() with parakeet's numbering and the Metal/MTL alias parakeet uses; rewrite captureActiveBackendInfo() per items 2-3; switch runtimeStats() to emit backendDevice + backendId (was: gpuBackendId only). - index.d.ts: rename gpuBackendId -> backendId, add backendDevice, introduce BackendId enum (re-exported from the namespace) with the same docstring shape parakeet uses; emphasise the cross-addon contract. - test/integration/mobile-perf-runner.js: switch to backendDevice + backendId; flip the Android-GPU assertion union from "Vulkan=2 || OpenCL=3" to "Vulkan=3 || OpenCL=4"; also assert backendDevice is reported. - CHANGELOG.md: rewrite the 0.9.0 "Added" runtime-stats bullet to describe the new field shape + numbering + BackendId enum, drop the baseline-bump paragraph. Local validation on x64-linux (vulkan feature) with the conservative baseline (a9d7e924, no change): - bare-make generate / build / install: clean - npm run test:cpp -> 107/107 pass - npm run test:unit -> 30/30 pass - npm run test:dts -> clean (BackendId enum + new fields type-check) - npm run test:integration -> 10/10 pass - npm run test:integration:accuracy -> 8/8 pass - npm run test:integration:chunking -> 1/1 pass - git-clang-format --diff vs upstream/main: clean - clang-tidy-19 -p build WhisperModel.cpp: 0 user-code warnings Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Cursor <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.