Skip to content

test on merge workflow#28

Merged
Annatar3 merged 1 commit into
mainfrom
test/on-merge-onnx-tts
Jan 19, 2026
Merged

test on merge workflow#28
Annatar3 merged 1 commit into
mainfrom
test/on-merge-onnx-tts

Conversation

@Annatar3

Copy link
Copy Markdown
Contributor

No description provided.

@Annatar3 Annatar3 merged commit c45434e into main Jan 19, 2026
7 of 8 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

🧪 C++ Test Coverage Report (Comprehensive)

Platform: linux-x64
Coverage: undefined
Test Structure: Professional addon/tests/ with clean foundation

📊 Detailed Coverage
Filename                                 Regions    Missed Regions     Cover   Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
src/addon/TTSErrors.hpp                       10                 5    50.00%           2                 0   100.00%          23                10    56.52%          16                 5    68.75%
src/model-interface/IPiperEngine.hpp           2                 0   100.00%           2                 0   100.00%           2                 0   100.00%           0                 0         -
src/model-interface/PiperEngine.cpp           34                 1    97.06%          13                 0   100.00%          82                 2    97.56%          14                 2    85.71%
src/model-interface/TTSModel.cpp              68                 8    88.24%          15                 0   100.00%         122                 9    92.62%          30                10    66.67%
src/model-interface/TTSModel.hpp               1                 0   100.00%           1                 0   100.00%           1                 0   100.00%           0                 0         -
test/unit/mocks/PiperEngineMock.hpp            5                 3    40.00%           5                 3    40.00%           2                 0   100.00%           0                 0         -
test/unit/src/GenericApiTest.cpp               4                 0   100.00%           4                 0   100.00%          20                 0   100.00%           0                 0         -
test/unit/src/PiperEngineTest.cpp            319                92    71.16%           7                 0   100.00%          23                 0   100.00%          84                42    50.00%
test/unit/src/TTSModelTest.cpp               401               131    67.33%          14                 0   100.00%          50                 0   100.00%         102                51    50.00%
test/unit/src/TTSModelTestMock.cpp           834               195    76.62%          15                 0   100.00%          94                 0   100.00%         178                89    50.00%
test/unit/src/main.cpp                         1                 0   100.00%           1                 0   100.00%           4                 0   100.00%           0                 0         -
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                                       1679               435    74.09%          79                 3    96.20%         423                21    95.04%         424               199    53.07%

Test Components:

  • TranslationModel

1 similar comment
@github-actions

Copy link
Copy Markdown
Contributor

🧪 C++ Test Coverage Report (Comprehensive)

Platform: linux-x64
Coverage: undefined
Test Structure: Professional addon/tests/ with clean foundation

📊 Detailed Coverage
Filename                                 Regions    Missed Regions     Cover   Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
src/addon/TTSErrors.hpp                       10                 5    50.00%           2                 0   100.00%          23                10    56.52%          16                 5    68.75%
src/model-interface/IPiperEngine.hpp           2                 0   100.00%           2                 0   100.00%           2                 0   100.00%           0                 0         -
src/model-interface/PiperEngine.cpp           34                 1    97.06%          13                 0   100.00%          82                 2    97.56%          14                 2    85.71%
src/model-interface/TTSModel.cpp              68                 8    88.24%          15                 0   100.00%         122                 9    92.62%          30                10    66.67%
src/model-interface/TTSModel.hpp               1                 0   100.00%           1                 0   100.00%           1                 0   100.00%           0                 0         -
test/unit/mocks/PiperEngineMock.hpp            5                 3    40.00%           5                 3    40.00%           2                 0   100.00%           0                 0         -
test/unit/src/GenericApiTest.cpp               4                 0   100.00%           4                 0   100.00%          20                 0   100.00%           0                 0         -
test/unit/src/PiperEngineTest.cpp            319                92    71.16%           7                 0   100.00%          23                 0   100.00%          84                42    50.00%
test/unit/src/TTSModelTest.cpp               401               131    67.33%          14                 0   100.00%          50                 0   100.00%         102                51    50.00%
test/unit/src/TTSModelTestMock.cpp           834               195    76.62%          15                 0   100.00%          94                 0   100.00%         178                89    50.00%
test/unit/src/main.cpp                         1                 0   100.00%           1                 0   100.00%           4                 0   100.00%           0                 0         -
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                                       1679               435    74.09%          79                 3    96.20%         423                21    95.04%         424               199    53.07%

Test Components:

  • TranslationModel

Zbig9000 added a commit to Zbig9000/qvac that referenced this pull request May 21, 2026
…4.3#5 (REF flipped to tetherto/master)

[whisper-cpp PR tetherto#28](tetherto/qvac-ext-lib-whisper.cpp#28)
(QVAC-18993 bundled-ggml --- Android dynamic backend + per-arch CPU
dlopen fallback) was merged today (2026-05-21, merge commit
`f3102199` on `tetherto/qvac-ext-lib-whisper.cpp/master`). With it
merged, `tetherto/master` now carries every commit the registry's
`whisper-cpp` port previously pulled from the temporary
`Zbig9000/qvac-ext-lib-whisper.cpp@14620c8857` branch:

  - PR tetherto#25 (QVAC-18991, upstream whisper.cpp sync) --- merged 2026-05-20
  - PR tetherto#27 (QVAC-18966, tts-cpp chatterbox <atomic> fix) --- merged 2026-05-20
  - PR tetherto#28 (QVAC-18993, ggml-backend android dynamic backend) --- merged 2026-05-21

[qvac-registry-vcpkg PR tetherto#152](tetherto/qvac-registry-vcpkg#152)
HEAD (`f2870372`) bumps `whisper-cpp` to port-version `1.8.4.3#5`
with the REF repoint --- byte-identical source tarball outside
`parakeet-cpp/` and `tts-cpp/` (separate vcpkg ports). This commit
just re-pins the consumer-side baseline so the addon resolves
against the new port-version.

  vcpkg-configuration.json default-registry baseline:
    9f4e8e20072d8a7a1e118a49c36aacf6af6b3e0d   (MSVC fix only, whisper-cpp 1.8.4.3#4)
      -> f2870372965e899ae1f8a221154d2b243a6c3d30  (+ whisper-cpp 1.8.4.3#5 REF repoint)

No code change in this monorepo --- pure baseline re-pin. CHANGELOG
updated to record both the new baseline and the (now superseded)
intermediate `9f4e8e2` pin.

Closes the consumer-side half of [QVAC-19071](https://tetherapp.atlassian.net/browse/QVAC-19071)
("Update qvac-registry-vcpkg and addon with new port versions").
Registry-side half = vcpkg PR tetherto#152 commit `f287037`.

[QVAC-18993][QVAC-19071]

Co-authored-by: Cursor <cursoragent@cursor.com>
GustavoA1604 added a commit that referenced this pull request May 22, 2026
…c GGML backends (#2124)

* transcription-whispercpp: bump to 0.7.1 with whisper-cpp 1.8.4.3#1 (QVAC-18993)

Pull in the consolidated vcpkg PR (whisper-cpp 1.8.4.3 #1 +
ggml-speech 2026-05-18 #1) that covers four asana tickets:

- QVAC-18991: whisper.cpp upstream-sync from ggml-org/master to
  v1.8.4.3.  Adds upstream's VAD streaming API
  (whisper_vad_detect_speech_no_reset, whisper_vad_reset_state)
  with a regression test, the macOS Vulkan persistent-pipeline
  cache, and various BCI / bindings fixes.
- QVAC-18300: enables OpenCL on Whisper for Android, gated
  behind a new `opencl` feature.  This package now declares an
  android-only `opencl` feature that wires through to the
  whisper-cpp port's opencl feature, so a transcription addon
  built for android-arm64 can ship the Adreno backend without
  forcing it on non-Adreno consumers.
- QVAC-18992: rebases the speech-stack ggml (qvac-ext-ggml@speech)
  onto the same upstream v0.10.2 baseline that whisper.cpp's
  bundled ggml uses, so the QVAC speech stack (whisper +
  parakeet + tts-cpp) consumes a coherent ggml API surface.
  No direct dependency from this package -- transitive via
  other speech-stack addons sharing the Android process.
- QVAC-18993: switches the Android build to pure
  dynamic-backend mode: GGML_BACKEND_DL=ON + GGML_CPU_ALL_VARIANTS=ON
  on both the whisper-cpp port and ggml-speech port, so the
  addon's .bare prebuild ships one libggml-cpu-android_armv*_*.so
  per microarchitecture plus dynamically-loaded
  libggml-vulkan.so / libggml-opencl.so.  ggml's loader picks
  the highest-feature CPU variant (armv9.2_2 .. armv8.0_1) plus
  the right GPU backend (Adreno 700+ -> OpenCL, everything else
  -> Vulkan) at runtime, so a single APK serves the whole device
  matrix without per-device builds.

vcpkg-configuration.json is TEMPORARILY pointed at
Zbig9000/qvac-registry-vcpkg.git @ b5a5e199 (= QVAC-vcpkg-speech-stack-android-dynamic-backend
HEAD on Zbig9000's fork) because the consolidated port versions
don't exist on tetherto/main yet.  Once the vcpkg PR lands the
default-registry block must be re-pointed back to
https://github.com/tetherto/qvac-registry-vcpkg.git with the
post-merge tetherto/main SHA as baseline.

Devicefarm: the asana asks for GPU testing on mobile to verify
S25 picks OpenCL and Pixel 9 picks Vulkan.  Those tests live
outside this addon (in qvac CI's integration-mobile-test
workflow) and depend on device-farm config that I can't validate
locally; the addon code side is unchanged in this bump (CPU
dispatcher + dynamic backend `.so` files are already wired by
the whisper-cpp port's prebuild output, and the JS layer
already enumerates ggml_backend_devs at init).

* transcription-whispercpp: bump to 0.7.2 with whisper-cpp 1.8.4.3#2 (QVAC-18993)

Picks up the Android per-arch CPU dlopen fallback patch added to the
whisper-cpp port (mirrors qvac-ext-ggml@speech 9562ed04). Without
this, every APK consumer with `useLegacyPackaging=false` (AGP 3.6+
default) would silently lose CPU init: the directory iterator finds
nothing inside compressed APK libs, and the existing on-disk filename
fallback never composes the per-arch `libggml-cpu-android_armv*_*.so`
names that `GGML_CPU_ALL_VARIANTS=ON` produces.

Re-pins the Zbig9000/qvac-registry-vcpkg default-registry baseline to
86257dc376ca043c67cc4805ab8d1e74a94b7eda so both whisper-cpp 1.8.4.3#2
and ggml-speech 2026-05-19#0 are reachable.

Co-authored-by: Cursor <cursoragent@cursor.com>

* transcription-whispercpp: bump to 0.7.3 → whisper-cpp 1.8.4.3#3 (QVAC-18993)

Pure follow-up to 0.7.2 -- the two Android dynamic-backend ggml fixes
the 0.7.2 release pulled in via vcpkg patches are now upstreamed as
commits on tetherto/qvac-ext-lib-whisper.cpp PR #26 ("ggml + tts-cpp
Android dynamic-backend overlays") instead of being carried in the
vcpkg port's patches/ tree. Plus a tts-cpp `<atomic>` include fix
that closes the parallel speech-stack consumer's build under the
day-2 ggml-speech merge.

Build output is bit-identical to 0.7.2 (whisper-cpp 1.8.4.3#3 SOURCE
== 1.8.4.3#2 SOURCE+PATCHES, verified by hashing all
libggml-cpu-android_armv*_*.so files from the NDK r29 cross-compile).

Registry baseline bumped to 965f5e5a so the new port-version
(1.8.4.3#3) is reachable.

PRs in the cross-repo set:
  whisper.cpp #26 (Zbig9000:QVAC-18993-bundled-ggml-android-dynamic-backend)
  vcpkg #152 (Zbig9000:QVAC-vcpkg-speech-stack-android-dynamic-backend)

Co-authored-by: Cursor <cursoragent@cursor.com>

* transcription-whispercpp: bridge ggml dlopen backends as IMPORTED targets (QVAC-18993)

`bare-make generate` failed on android-arm64 with

    CMake Error: get_target_property() called with non-existent target
    "ggml::ggml-cpu-android_armv8.0_1"  (… 8 backends total)

after enabling `GGML_BACKEND_DL=ON` on the `whisper-cpp` port. With dynamic-
backend mode, ggml builds the per-arch CPU + GPU backends as standalone MODULE
libraries that ggml dlopens at runtime; upstream ggml's `install(TARGETS … EXPORT)`
deliberately skips them, so the consumer's `BACKEND_DL_LIBS` loop in
`CMakeLists.txt` referenced targets that don't exist.

Wrap the existing loop with a `if(NOT TARGET ggml::${_backend})` fallback that
locates the `.so` under `${VCPKG_INSTALLED_PATH}/bin` via `find_library` and
materialises a `SHARED IMPORTED` target locally with `IMPORTED_NO_SONAME=TRUE`
— then bundle via the existing `INSTALL TARGET` path. Mirrors the pattern that
already ships in `packages/diffusion-cpp` for the same Android-dlopen
build mode.

Static backends (any platform that links ggml in directly) still find their
imported target via ggml-config.cmake on the first branch, so non-Android
prebuilds are byte-identical.

Co-authored-by: Cursor <cursoragent@cursor.com>

* transcription-whispercpp: re-pin baseline to vcpkg PR #152 rebased HEAD 8c6ca188 (QVAC-18993)

tetherto/qvac-registry-vcpkg/main moved forward yesterday with #156
(parakeet-cpp 2026-05-20 + ggml-speech 2026-04-09#2 bumps), so vcpkg
PR #152 was rebased onto the new base 0e75457. Update the default-
registry baseline pointer from the old PR #152 HEAD (dffaaf6) to the
rebased HEAD (8c6ca188) so the version-resolver still finds
`ggml-speech 2026-05-19#3` (now layered on top of the just-landed
2026-04-09#2) and `whisper-cpp 1.8.4.3#3` (unchanged content,
correct SHA512).

No other changes --- the resolver picks up the same final versions
of every package as before, just with the rebased baseline as the
search root.

Co-authored-by: Cursor <cursoragent@cursor.com>

* transcription-whispercpp: consume whisper-cpp 1.8.4.3#4 + ggml-speech 2026-05-19#4 (QVAC-18993, QVAC-18992)

Picks up the MSVC `/I` fix in the spirv-headers include-shim (vcpkg
PR #152 commit 5cd209c) so prebuild / win32-x64 stops dying with
`c1xx: fatal error C1083: Cannot open source file: '.../x64-windows/include'`
on the `whisper-cpp[vulkan]` configure step. The shim now emits the
MSVC-style `/I<path>` on Windows and keeps `-isystem <path>` (with
warning suppression) on GCC/Clang elsewhere.

whisper-cpp override bumped 1.8.4.3#3 -> 1.8.4.3#4.
Default-registry baseline bumped 8c6ca188 -> 5cd209c1.

Co-authored-by: Cursor <cursoragent@cursor.com>

* transcription-whispercpp: wire ENABLE_OPENCL so Android prebuilds ship libggml-opencl.so (QVAC-18300)

The `opencl` feature was declared in `packages/transcription-whispercpp/vcpkg.json`
(gated to `platform: android`) and the `whisper-cpp` port's `opencl` feature
correctly enables `-DGGML_OPENCL=ON` on Android — but the consumer's
`CMakeLists.txt` only appended `"tests"` and `"vulkan"` to
`VCPKG_MANIFEST_FEATURES`. The `opencl` feature was therefore never activated,
so vcpkg resolved `whisper-cpp` without `[opencl]`, ggml was built without
`GGML_OPENCL=ON`, and the `android-arm64` prebuild silently shipped CPU + Vulkan
backends only (no `libggml-opencl.so`) — defeating the entire point of
QVAC-18300.

Add an `ENABLE_OPENCL` option (default `ON` on Android, `OFF` elsewhere — the
`vcpkg.json` feature is `platform: android` gated so non-Android is a no-op
anyway) that appends `"opencl"` to `VCPKG_MANIFEST_FEATURES`. Mirrors the
`SD_OPENCL` pattern in `packages/diffusion-cpp/CMakeLists.txt` and keeps the
GPU-feature wiring uniform across the three GPU backends (Metal auto, Vulkan
toggle, OpenCL toggle).

After this commit, the `android-arm64` prebuild's
`qvac__transcription-whispercpp/` directory should ship `libggml-opencl.so`
alongside the existing 7 per-microarch CPU variants and `libggml-vulkan.so`.

Co-authored-by: Cursor <cursoragent@cursor.com>

* transcription-whispercpp: default ENABLE_OPENCL ON unconditionally (QVAC-18300)

Previous commit (6b42bc0) wired ENABLE_OPENCL but gated it on
`_qvac_whispercpp_target_os STREQUAL "Android"`, mirroring the existing
ENABLE_VULKAN block. CI re-run (26172345624) exposed that the gate is broken:
at top-level CMakeLists.txt time, `CMAKE_SYSTEM_NAME` is not yet set --- the
bare-make Android toolchain file is loaded by `project()` (which runs *after*
the option block), so `_qvac_whispercpp_target_os` falls through to the host
OS ("Linux") and ENABLE_OPENCL stayed OFF on the android-arm64 prebuild.

Evidence from run 26172345624's android-arm64 build log:
  `Installing 9/9 whisper-cpp[core,vulkan]:arm64-android@1.8.4.3#4...`
                                ^^^^^^^^ no `[opencl]`

ENABLE_VULKAN works only by coincidence: Vulkan is also default-ON on the
Linux host detection branch, so the wrong target detection produces the right
behaviour. For Android-only features there is no such overlap.

Fix: default ENABLE_OPENCL ON unconditionally and let the actual platform
gating happen where it can: (1) the `platform: android` clause on the
`whisper-cpp[opencl]` dep in `vcpkg.json`, and (2) the `VCPKG_TARGET_IS_ANDROID`
check in the `whisper-cpp` portfile that gates `-DGGML_OPENCL=ON`. Adding
`"opencl"` to `VCPKG_MANIFEST_FEATURES` on non-Android is a guaranteed no-op
because the feature's only dep is platform-gated --- mirrors the layered
gating that `whisper-cpp[vulkan]` already uses (the `vulkan` feature's deps
are `!osx & !ios` gated and the portfile's `-DGGML_VULKAN=ON` is also
target-gated).

After this commit, the android-arm64 install plan should resolve as
`whisper-cpp[core,vulkan,opencl]` and the prebuild tarball should contain
`libggml-opencl.so` alongside the 7 per-microarch CPU `.so`s and
`libggml-vulkan.so`.

Co-authored-by: Cursor <cursoragent@cursor.com>

* transcription-whispercpp: call ggml_backend_load_all_from_path before whisper_init (QVAC-18993)

Android mobile-test E2E crashed inside whisper_init_from_file_with_params
with SIGABRT on PR #2124 / run 26173084690 (both Pixel 9 Pro + Samsung S25
Ultra, 132 ms after Downloaded model: ggml-tiny.bin). Stack:

  abort → ggml_abort+228 → ggml_backend_dev_backend_reg+48
       → whisper_init_with_params_no_state+480
       → whisper_init_from_file_with_params_no_state+212
       → whisper_init_from_file_with_params+48
       → WhisperModel::load()+460

Root cause: the addon never called ggml_backend_load_all*(). With the
QVAC-18993 GGML_BACKEND_DL=ON build, the bundled ggml-base no longer
defines GGML_USE_CPU, so the static ggml_backend_registry ctor registers
zero backends. whisper.cpp's first ggml_backend_init_by_type(CPU) returns
NULL → ggml_backend_dev_backend_reg(NULL) trips GGML_ASSERT(device).

This is the same crash signature on both the pre-OpenCL run 26170576156
and the post-OpenCL run 26173084690, so it is independent of the recent
OpenCL enablement. The mobile workflow last passed on
tmp-whisper-184-3-validation back on 2026-05-11, which predates
GGML_BACKEND_DL=ON.

Mirror the pattern used by every other ggml-based addon in the monorepo
(packages/{diffusion-cpp,llm-llamacpp,classification-ggml,…}):

* CMakeLists.txt — emit BACKENDS_SUBDIR (<bare_target>/<module_name>)
  compile def via bare_target / bare_module_target.
* WhisperConfig — add backendsDir field (sibling of the handler-driven
  maps so it bypasses WHISPER_CONTEXT_HANDLERS.at()).
* JSAdapter — read top-level backendsDir string directly from
  configurationParams into config.backendsDir.
* WhisperModel::load — on __ANDROID__, std::call_once →
  ggml_backend_load_all_from_path(backendsDir/BACKENDS_SUBDIR) before
  whisper_init.
* index.js — require('bare-path'); pass
  backendsDir: path.join(__dirname, 'prebuilds') in _load + reload.

No diff on non-Android (Linux/macOS/Windows/iOS): ggml's static ctor
keeps registering CPU there as before.

aiDocs/15-android-mobile-test-crash-fix.md has the full investigation
(crash extraction, layered root-cause, why every other ggml addon
already does this, follow-ups).

Co-authored-by: Cursor <cursoragent@cursor.com>

* transcription-whispercpp: re-pin vcpkg baseline to cleaned PR #152 head (QVAC-18993)

PR #152 (qvac-registry-vcpkg) was rebased today to drop the ggml-speech
port bump (b4cf7b2) and the matching ggml-speech-side MSVC shim. Only
the whisper-cpp bump + whisper-cpp portfile MSVC `/I` fix remain. The
consumer-side migration to ggml-speech (QVAC-18992 / PR #13) stays open
on the speech branch but is no longer a prerequisite for this Android
dynamic-backend rollout.

New PR #152 HEAD: 9f4e8e20072d8a7a1e118a49c36aacf6af6b3e0d
Old (pre-cleanup): 5cd209c145a1d61636f1d44b4afe37868c298a8c

This addon does not depend on `ggml-speech` (it consumes the bundled
ggml inside `whisper-cpp`), so the dependency closure is unchanged.
Updated CHANGELOG to record the new baseline + the reason ggml-speech
got dropped.

Co-authored-by: Cursor <cursoragent@cursor.com>

* transcription-whispercpp: fix cpp-lint failures (clang-format + clang-tidy)

The prior CI run skipped cpp-lint entirely because the recent PR
commits only touched CMakeLists.txt / CHANGELOG.md. The new
ea298cf commit (QVAC-18993 mobile-test fix) added the first C++
diff in this branch, so cpp-lint now runs full clang-format
+ clang-tidy and surfaces three issues:

1. clang-format: JSAdapter.cpp had a one-line declaration broken
   across two lines (LLVM PointerAlignment=Left + AlignAfterOpen
   collapsed it). Reformatted in place.

2. clang-tidy [readability-identifier-naming]:
   WhisperHandlers.hpp:9 -- local `const int LANG_ID` violates the
   variable case style. Renamed to `langId` (lowerCamelCase, matches
   `checkLanguage` two lines above). Latent issue; never reported
   before because cpp-lint was a no-op on every prior PR commit.

3. clang-tidy [readability-identifier-naming]:
   WhisperModel.hpp:100 -- unused `set_weights_for_file(span, bool)`
   stub kept for parity with `transcription-parakeet` (which uses
   snake_case extensively for this exact API). Renaming would
   diverge from the parakeet pattern, so suppress with a single
   NOLINTNEXTLINE rather than touching the API surface.

Local repro: `cp packages/lint-cpp/.clang-format
packages/transcription-whispercpp/.clang-format` then
`git-clang-format --diff $(git merge-base HEAD origin/main) --
packages/transcription-whispercpp` reports `did not modify any
files`. The .clang-format copy is normally produced by
`packages/transcription-whispercpp/CMakeLists.txt:58
(configure_file COPYONLY)` during CMake configure.

[QVAC-18993][QVAC-19071]

Co-authored-by: Cursor <cursoragent@cursor.com>

* transcription-whispercpp: reference QVAC-19071 in CHANGELOG

QVAC-19071 ([Whisper] Update qvac-registry-vcpkg and addon with new
port versions) is the meta task that bundles the registry-side port
bump (qvac-registry-vcpkg PR #152: whisper-cpp 1.8.4.3#4) with the
consumer-side addon bump (qvac PR #2124: transcription-whispercpp
0.7.3, baseline re-pin). No code changes; the work itself was
already covered by PR #152 + this PR. Adds the cross-reference so
the Asana ticket can be closed off this release cycle.

The QVAC-18992 ggml-speech migration (PR #13 + ggml-speech port
bump) stays deferred per the 2026-05-21 plan; it will land as a
follow-up port bump under the same QVAC-19071 umbrella.

[QVAC-19071]

Co-authored-by: Cursor <cursoragent@cursor.com>

* transcription-whispercpp: re-pin baseline to consume whisper-cpp 1.8.4.3#5 (REF flipped to tetherto/master)

[whisper-cpp PR #28](tetherto/qvac-ext-lib-whisper.cpp#28)
(QVAC-18993 bundled-ggml --- Android dynamic backend + per-arch CPU
dlopen fallback) was merged today (2026-05-21, merge commit
`f3102199` on `tetherto/qvac-ext-lib-whisper.cpp/master`). With it
merged, `tetherto/master` now carries every commit the registry's
`whisper-cpp` port previously pulled from the temporary
`Zbig9000/qvac-ext-lib-whisper.cpp@14620c8857` branch:

  - PR #25 (QVAC-18991, upstream whisper.cpp sync) --- merged 2026-05-20
  - PR #27 (QVAC-18966, tts-cpp chatterbox <atomic> fix) --- merged 2026-05-20
  - PR #28 (QVAC-18993, ggml-backend android dynamic backend) --- merged 2026-05-21

[qvac-registry-vcpkg PR #152](tetherto/qvac-registry-vcpkg#152)
HEAD (`f2870372`) bumps `whisper-cpp` to port-version `1.8.4.3#5`
with the REF repoint --- byte-identical source tarball outside
`parakeet-cpp/` and `tts-cpp/` (separate vcpkg ports). This commit
just re-pins the consumer-side baseline so the addon resolves
against the new port-version.

  vcpkg-configuration.json default-registry baseline:
    9f4e8e20072d8a7a1e118a49c36aacf6af6b3e0d   (MSVC fix only, whisper-cpp 1.8.4.3#4)
      -> f2870372965e899ae1f8a221154d2b243a6c3d30  (+ whisper-cpp 1.8.4.3#5 REF repoint)

No code change in this monorepo --- pure baseline re-pin. CHANGELOG
updated to record both the new baseline and the (now superseded)
intermediate `9f4e8e2` pin.

Closes the consumer-side half of [QVAC-19071](https://tetherapp.atlassian.net/browse/QVAC-19071)
("Update qvac-registry-vcpkg and addon with new port versions").
Registry-side half = vcpkg PR #152 commit `f287037`.

[QVAC-18993][QVAC-19071]

Co-authored-by: Cursor <cursoragent@cursor.com>

* transcription-whispercpp: re-pin baseline to whisper-cpp 1.8.4.3#0 (PR #152 review fixes)

@GustavoA1604 review on [qvac-registry-vcpkg PR #152](tetherto/qvac-registry-vcpkg#152)
requested three changes on the registry side:

  1. Drop the explanatory comment block at top of
     `ports/whisper-cpp/portfile.cmake`.
  2. Reset `port-version` 5 -> 0 (treat the tetherto REF repoint as
     a fresh start, not a continuation of the Zbig9000-branch series).
  3. Collapse the three historical `1.8.4.3` entries
     (`port-version` 3, 4, 5 -- never consumed off-fork) in
     `versions/w-/whisper-cpp.json` into a single `port-version: 0`
     entry with the new git-tree.

All three landed in PR #152 commit `ee71ecb`. This commit is the
consumer-side mirror:

  vcpkg-configuration.json default-registry baseline:
    f2870372965e899ae1f8a221154d2b243a6c3d30  (1.8.4.3#5, pre-review)
      -> ee71ecb5b286224377313e5a50558d11adbef3ac  (1.8.4.3#0, post-review)

  CHANGELOG entry updated:
    "1.8.4.3#5" -> "1.8.4.3#0" + note about port-version reset and
    history collapse + supersession line covers both prior pins
    (`9f4e8e2` MSVC fix, `f287037` 1.8.4.3#5).

No code change in this monorepo --- pure baseline re-pin. The
underlying whisper.cpp source bytes are unchanged (REPO + REF +
SHA512 in the portfile are identical between `1.8.4.3#5` and
`1.8.4.3#0`), so the produced binary is bit-for-bit equivalent.

[QVAC-18993][QVAC-19071]

Co-authored-by: Cursor <cursoragent@cursor.com>

* transcription-whispercpp: 0.8.0 — address PR review

Collapses the 0.7.1/0.7.2/0.7.3 work into a single 0.8.0 release and
folds in Gustavo's PR #2124 review feedback:

- Bump version to 0.8.0; collapse CHANGELOG into a single 0.8.0 entry
- Bump whisper-cpp override to 1.8.4.3#0 (matches PR #152 collapse)
- Repoint default-registry to tetherto/qvac-registry-vcpkg @ a9d7e924
  (PR #152 merge commit on tetherto/main)
- vcpkg.json: model GPU features on transcription-parakeet's pattern —
  platform-gated whisper-cpp deps select [opencl,vulkan] on android,
  [vulkan] on linux/windows, and no GPU feature on apple. Drop the
  addon-side opencl/vulkan feature sections; CMake no longer carries
  ENABLE_OPENCL / ENABLE_VULKAN option indirection.
- index.js: nest backendsDir under whisperConfig (mirrors parakeet's
  parakeetConfig.backendsDir). Strip it from the wire-format whisperConfig
  map and surface it as top-level configurationParams.backendsDir before
  handing the config to the addon. Fix the stale _createAddon JSDoc that
  still described "LLM-specific settings".
- index.d.ts + README.md: document whisperConfig.backendsDir; drop the
  ENABLE_VULKAN build instructions (now controlled by vcpkg.json).
- Compact all the addon-side comments (CMakeLists.txt, JSAdapter.cpp,
  WhisperConfig.hpp, WhisperModel.cpp); drop every QVAC asana ticket
  reference; standardise the C++ log wording on
  "configurationParams.backendsDir".
- Drop "-D ENABLE_VULKAN=OFF" from the test:cpp:build / coverage:cpp:build
  npm scripts (no-op now that the option is gone).

Co-authored-by: Cursor <cursoragent@cursor.com>

* transcription-whispercpp: 0.9.0 -> 0.8.0 (fold into single release)

Reverts the 0.8.0 -> 0.9.0 bump from the merge commit: per request, this
PR's release notes are folded into the existing 0.8.0 entry rather than
shipping as a separate semver step. Order: Added -> Changed -> Fixed
(from this PR) -> Removed (the OutputCallbackJs revert that landed on
main as 0.8.0 via #2133).

package.json bumped back to 0.8.0.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: GustavoA1604 <54457676+GustavoA1604@users.noreply.github.com>
Proletter pushed a commit that referenced this pull request May 24, 2026
…c GGML backends (#2124)

* transcription-whispercpp: bump to 0.7.1 with whisper-cpp 1.8.4.3#1 (QVAC-18993)

Pull in the consolidated vcpkg PR (whisper-cpp 1.8.4.3 #1 +
ggml-speech 2026-05-18 #1) that covers four asana tickets:

- QVAC-18991: whisper.cpp upstream-sync from ggml-org/master to
  v1.8.4.3.  Adds upstream's VAD streaming API
  (whisper_vad_detect_speech_no_reset, whisper_vad_reset_state)
  with a regression test, the macOS Vulkan persistent-pipeline
  cache, and various BCI / bindings fixes.
- QVAC-18300: enables OpenCL on Whisper for Android, gated
  behind a new `opencl` feature.  This package now declares an
  android-only `opencl` feature that wires through to the
  whisper-cpp port's opencl feature, so a transcription addon
  built for android-arm64 can ship the Adreno backend without
  forcing it on non-Adreno consumers.
- QVAC-18992: rebases the speech-stack ggml (qvac-ext-ggml@speech)
  onto the same upstream v0.10.2 baseline that whisper.cpp's
  bundled ggml uses, so the QVAC speech stack (whisper +
  parakeet + tts-cpp) consumes a coherent ggml API surface.
  No direct dependency from this package -- transitive via
  other speech-stack addons sharing the Android process.
- QVAC-18993: switches the Android build to pure
  dynamic-backend mode: GGML_BACKEND_DL=ON + GGML_CPU_ALL_VARIANTS=ON
  on both the whisper-cpp port and ggml-speech port, so the
  addon's .bare prebuild ships one libggml-cpu-android_armv*_*.so
  per microarchitecture plus dynamically-loaded
  libggml-vulkan.so / libggml-opencl.so.  ggml's loader picks
  the highest-feature CPU variant (armv9.2_2 .. armv8.0_1) plus
  the right GPU backend (Adreno 700+ -> OpenCL, everything else
  -> Vulkan) at runtime, so a single APK serves the whole device
  matrix without per-device builds.

vcpkg-configuration.json is TEMPORARILY pointed at
Zbig9000/qvac-registry-vcpkg.git @ b5a5e199 (= QVAC-vcpkg-speech-stack-android-dynamic-backend
HEAD on Zbig9000's fork) because the consolidated port versions
don't exist on tetherto/main yet.  Once the vcpkg PR lands the
default-registry block must be re-pointed back to
https://github.com/tetherto/qvac-registry-vcpkg.git with the
post-merge tetherto/main SHA as baseline.

Devicefarm: the asana asks for GPU testing on mobile to verify
S25 picks OpenCL and Pixel 9 picks Vulkan.  Those tests live
outside this addon (in qvac CI's integration-mobile-test
workflow) and depend on device-farm config that I can't validate
locally; the addon code side is unchanged in this bump (CPU
dispatcher + dynamic backend `.so` files are already wired by
the whisper-cpp port's prebuild output, and the JS layer
already enumerates ggml_backend_devs at init).

* transcription-whispercpp: bump to 0.7.2 with whisper-cpp 1.8.4.3#2 (QVAC-18993)

Picks up the Android per-arch CPU dlopen fallback patch added to the
whisper-cpp port (mirrors qvac-ext-ggml@speech 9562ed04). Without
this, every APK consumer with `useLegacyPackaging=false` (AGP 3.6+
default) would silently lose CPU init: the directory iterator finds
nothing inside compressed APK libs, and the existing on-disk filename
fallback never composes the per-arch `libggml-cpu-android_armv*_*.so`
names that `GGML_CPU_ALL_VARIANTS=ON` produces.

Re-pins the Zbig9000/qvac-registry-vcpkg default-registry baseline to
86257dc376ca043c67cc4805ab8d1e74a94b7eda so both whisper-cpp 1.8.4.3#2
and ggml-speech 2026-05-19#0 are reachable.

Co-authored-by: Cursor <cursoragent@cursor.com>

* transcription-whispercpp: bump to 0.7.3 → whisper-cpp 1.8.4.3#3 (QVAC-18993)

Pure follow-up to 0.7.2 -- the two Android dynamic-backend ggml fixes
the 0.7.2 release pulled in via vcpkg patches are now upstreamed as
commits on tetherto/qvac-ext-lib-whisper.cpp PR #26 ("ggml + tts-cpp
Android dynamic-backend overlays") instead of being carried in the
vcpkg port's patches/ tree. Plus a tts-cpp `<atomic>` include fix
that closes the parallel speech-stack consumer's build under the
day-2 ggml-speech merge.

Build output is bit-identical to 0.7.2 (whisper-cpp 1.8.4.3#3 SOURCE
== 1.8.4.3#2 SOURCE+PATCHES, verified by hashing all
libggml-cpu-android_armv*_*.so files from the NDK r29 cross-compile).

Registry baseline bumped to 965f5e5a so the new port-version
(1.8.4.3#3) is reachable.

PRs in the cross-repo set:
  whisper.cpp #26 (Zbig9000:QVAC-18993-bundled-ggml-android-dynamic-backend)
  vcpkg #152 (Zbig9000:QVAC-vcpkg-speech-stack-android-dynamic-backend)

Co-authored-by: Cursor <cursoragent@cursor.com>

* transcription-whispercpp: bridge ggml dlopen backends as IMPORTED targets (QVAC-18993)

`bare-make generate` failed on android-arm64 with

    CMake Error: get_target_property() called with non-existent target
    "ggml::ggml-cpu-android_armv8.0_1"  (… 8 backends total)

after enabling `GGML_BACKEND_DL=ON` on the `whisper-cpp` port. With dynamic-
backend mode, ggml builds the per-arch CPU + GPU backends as standalone MODULE
libraries that ggml dlopens at runtime; upstream ggml's `install(TARGETS … EXPORT)`
deliberately skips them, so the consumer's `BACKEND_DL_LIBS` loop in
`CMakeLists.txt` referenced targets that don't exist.

Wrap the existing loop with a `if(NOT TARGET ggml::${_backend})` fallback that
locates the `.so` under `${VCPKG_INSTALLED_PATH}/bin` via `find_library` and
materialises a `SHARED IMPORTED` target locally with `IMPORTED_NO_SONAME=TRUE`
— then bundle via the existing `INSTALL TARGET` path. Mirrors the pattern that
already ships in `packages/diffusion-cpp` for the same Android-dlopen
build mode.

Static backends (any platform that links ggml in directly) still find their
imported target via ggml-config.cmake on the first branch, so non-Android
prebuilds are byte-identical.

Co-authored-by: Cursor <cursoragent@cursor.com>

* transcription-whispercpp: re-pin baseline to vcpkg PR #152 rebased HEAD 8c6ca188 (QVAC-18993)

tetherto/qvac-registry-vcpkg/main moved forward yesterday with #156
(parakeet-cpp 2026-05-20 + ggml-speech 2026-04-09#2 bumps), so vcpkg
PR #152 was rebased onto the new base 0e75457. Update the default-
registry baseline pointer from the old PR #152 HEAD (dffaaf6) to the
rebased HEAD (8c6ca188) so the version-resolver still finds
`ggml-speech 2026-05-19#3` (now layered on top of the just-landed
2026-04-09#2) and `whisper-cpp 1.8.4.3#3` (unchanged content,
correct SHA512).

No other changes --- the resolver picks up the same final versions
of every package as before, just with the rebased baseline as the
search root.

Co-authored-by: Cursor <cursoragent@cursor.com>

* transcription-whispercpp: consume whisper-cpp 1.8.4.3#4 + ggml-speech 2026-05-19#4 (QVAC-18993, QVAC-18992)

Picks up the MSVC `/I` fix in the spirv-headers include-shim (vcpkg
PR #152 commit 5cd209c) so prebuild / win32-x64 stops dying with
`c1xx: fatal error C1083: Cannot open source file: '.../x64-windows/include'`
on the `whisper-cpp[vulkan]` configure step. The shim now emits the
MSVC-style `/I<path>` on Windows and keeps `-isystem <path>` (with
warning suppression) on GCC/Clang elsewhere.

whisper-cpp override bumped 1.8.4.3#3 -> 1.8.4.3#4.
Default-registry baseline bumped 8c6ca188 -> 5cd209c1.

Co-authored-by: Cursor <cursoragent@cursor.com>

* transcription-whispercpp: wire ENABLE_OPENCL so Android prebuilds ship libggml-opencl.so (QVAC-18300)

The `opencl` feature was declared in `packages/transcription-whispercpp/vcpkg.json`
(gated to `platform: android`) and the `whisper-cpp` port's `opencl` feature
correctly enables `-DGGML_OPENCL=ON` on Android — but the consumer's
`CMakeLists.txt` only appended `"tests"` and `"vulkan"` to
`VCPKG_MANIFEST_FEATURES`. The `opencl` feature was therefore never activated,
so vcpkg resolved `whisper-cpp` without `[opencl]`, ggml was built without
`GGML_OPENCL=ON`, and the `android-arm64` prebuild silently shipped CPU + Vulkan
backends only (no `libggml-opencl.so`) — defeating the entire point of
QVAC-18300.

Add an `ENABLE_OPENCL` option (default `ON` on Android, `OFF` elsewhere — the
`vcpkg.json` feature is `platform: android` gated so non-Android is a no-op
anyway) that appends `"opencl"` to `VCPKG_MANIFEST_FEATURES`. Mirrors the
`SD_OPENCL` pattern in `packages/diffusion-cpp/CMakeLists.txt` and keeps the
GPU-feature wiring uniform across the three GPU backends (Metal auto, Vulkan
toggle, OpenCL toggle).

After this commit, the `android-arm64` prebuild's
`qvac__transcription-whispercpp/` directory should ship `libggml-opencl.so`
alongside the existing 7 per-microarch CPU variants and `libggml-vulkan.so`.

Co-authored-by: Cursor <cursoragent@cursor.com>

* transcription-whispercpp: default ENABLE_OPENCL ON unconditionally (QVAC-18300)

Previous commit (6b42bc0) wired ENABLE_OPENCL but gated it on
`_qvac_whispercpp_target_os STREQUAL "Android"`, mirroring the existing
ENABLE_VULKAN block. CI re-run (26172345624) exposed that the gate is broken:
at top-level CMakeLists.txt time, `CMAKE_SYSTEM_NAME` is not yet set --- the
bare-make Android toolchain file is loaded by `project()` (which runs *after*
the option block), so `_qvac_whispercpp_target_os` falls through to the host
OS ("Linux") and ENABLE_OPENCL stayed OFF on the android-arm64 prebuild.

Evidence from run 26172345624's android-arm64 build log:
  `Installing 9/9 whisper-cpp[core,vulkan]:arm64-android@1.8.4.3#4...`
                                ^^^^^^^^ no `[opencl]`

ENABLE_VULKAN works only by coincidence: Vulkan is also default-ON on the
Linux host detection branch, so the wrong target detection produces the right
behaviour. For Android-only features there is no such overlap.

Fix: default ENABLE_OPENCL ON unconditionally and let the actual platform
gating happen where it can: (1) the `platform: android` clause on the
`whisper-cpp[opencl]` dep in `vcpkg.json`, and (2) the `VCPKG_TARGET_IS_ANDROID`
check in the `whisper-cpp` portfile that gates `-DGGML_OPENCL=ON`. Adding
`"opencl"` to `VCPKG_MANIFEST_FEATURES` on non-Android is a guaranteed no-op
because the feature's only dep is platform-gated --- mirrors the layered
gating that `whisper-cpp[vulkan]` already uses (the `vulkan` feature's deps
are `!osx & !ios` gated and the portfile's `-DGGML_VULKAN=ON` is also
target-gated).

After this commit, the android-arm64 install plan should resolve as
`whisper-cpp[core,vulkan,opencl]` and the prebuild tarball should contain
`libggml-opencl.so` alongside the 7 per-microarch CPU `.so`s and
`libggml-vulkan.so`.

Co-authored-by: Cursor <cursoragent@cursor.com>

* transcription-whispercpp: call ggml_backend_load_all_from_path before whisper_init (QVAC-18993)

Android mobile-test E2E crashed inside whisper_init_from_file_with_params
with SIGABRT on PR #2124 / run 26173084690 (both Pixel 9 Pro + Samsung S25
Ultra, 132 ms after Downloaded model: ggml-tiny.bin). Stack:

  abort → ggml_abort+228 → ggml_backend_dev_backend_reg+48
       → whisper_init_with_params_no_state+480
       → whisper_init_from_file_with_params_no_state+212
       → whisper_init_from_file_with_params+48
       → WhisperModel::load()+460

Root cause: the addon never called ggml_backend_load_all*(). With the
QVAC-18993 GGML_BACKEND_DL=ON build, the bundled ggml-base no longer
defines GGML_USE_CPU, so the static ggml_backend_registry ctor registers
zero backends. whisper.cpp's first ggml_backend_init_by_type(CPU) returns
NULL → ggml_backend_dev_backend_reg(NULL) trips GGML_ASSERT(device).

This is the same crash signature on both the pre-OpenCL run 26170576156
and the post-OpenCL run 26173084690, so it is independent of the recent
OpenCL enablement. The mobile workflow last passed on
tmp-whisper-184-3-validation back on 2026-05-11, which predates
GGML_BACKEND_DL=ON.

Mirror the pattern used by every other ggml-based addon in the monorepo
(packages/{diffusion-cpp,llm-llamacpp,classification-ggml,…}):

* CMakeLists.txt — emit BACKENDS_SUBDIR (<bare_target>/<module_name>)
  compile def via bare_target / bare_module_target.
* WhisperConfig — add backendsDir field (sibling of the handler-driven
  maps so it bypasses WHISPER_CONTEXT_HANDLERS.at()).
* JSAdapter — read top-level backendsDir string directly from
  configurationParams into config.backendsDir.
* WhisperModel::load — on __ANDROID__, std::call_once →
  ggml_backend_load_all_from_path(backendsDir/BACKENDS_SUBDIR) before
  whisper_init.
* index.js — require('bare-path'); pass
  backendsDir: path.join(__dirname, 'prebuilds') in _load + reload.

No diff on non-Android (Linux/macOS/Windows/iOS): ggml's static ctor
keeps registering CPU there as before.

aiDocs/15-android-mobile-test-crash-fix.md has the full investigation
(crash extraction, layered root-cause, why every other ggml addon
already does this, follow-ups).

Co-authored-by: Cursor <cursoragent@cursor.com>

* transcription-whispercpp: re-pin vcpkg baseline to cleaned PR #152 head (QVAC-18993)

PR #152 (qvac-registry-vcpkg) was rebased today to drop the ggml-speech
port bump (b4cf7b2) and the matching ggml-speech-side MSVC shim. Only
the whisper-cpp bump + whisper-cpp portfile MSVC `/I` fix remain. The
consumer-side migration to ggml-speech (QVAC-18992 / PR #13) stays open
on the speech branch but is no longer a prerequisite for this Android
dynamic-backend rollout.

New PR #152 HEAD: 9f4e8e20072d8a7a1e118a49c36aacf6af6b3e0d
Old (pre-cleanup): 5cd209c145a1d61636f1d44b4afe37868c298a8c

This addon does not depend on `ggml-speech` (it consumes the bundled
ggml inside `whisper-cpp`), so the dependency closure is unchanged.
Updated CHANGELOG to record the new baseline + the reason ggml-speech
got dropped.

Co-authored-by: Cursor <cursoragent@cursor.com>

* transcription-whispercpp: fix cpp-lint failures (clang-format + clang-tidy)

The prior CI run skipped cpp-lint entirely because the recent PR
commits only touched CMakeLists.txt / CHANGELOG.md. The new
ea298cf commit (QVAC-18993 mobile-test fix) added the first C++
diff in this branch, so cpp-lint now runs full clang-format
+ clang-tidy and surfaces three issues:

1. clang-format: JSAdapter.cpp had a one-line declaration broken
   across two lines (LLVM PointerAlignment=Left + AlignAfterOpen
   collapsed it). Reformatted in place.

2. clang-tidy [readability-identifier-naming]:
   WhisperHandlers.hpp:9 -- local `const int LANG_ID` violates the
   variable case style. Renamed to `langId` (lowerCamelCase, matches
   `checkLanguage` two lines above). Latent issue; never reported
   before because cpp-lint was a no-op on every prior PR commit.

3. clang-tidy [readability-identifier-naming]:
   WhisperModel.hpp:100 -- unused `set_weights_for_file(span, bool)`
   stub kept for parity with `transcription-parakeet` (which uses
   snake_case extensively for this exact API). Renaming would
   diverge from the parakeet pattern, so suppress with a single
   NOLINTNEXTLINE rather than touching the API surface.

Local repro: `cp packages/lint-cpp/.clang-format
packages/transcription-whispercpp/.clang-format` then
`git-clang-format --diff $(git merge-base HEAD origin/main) --
packages/transcription-whispercpp` reports `did not modify any
files`. The .clang-format copy is normally produced by
`packages/transcription-whispercpp/CMakeLists.txt:58
(configure_file COPYONLY)` during CMake configure.

[QVAC-18993][QVAC-19071]

Co-authored-by: Cursor <cursoragent@cursor.com>

* transcription-whispercpp: reference QVAC-19071 in CHANGELOG

QVAC-19071 ([Whisper] Update qvac-registry-vcpkg and addon with new
port versions) is the meta task that bundles the registry-side port
bump (qvac-registry-vcpkg PR #152: whisper-cpp 1.8.4.3#4) with the
consumer-side addon bump (qvac PR #2124: transcription-whispercpp
0.7.3, baseline re-pin). No code changes; the work itself was
already covered by PR #152 + this PR. Adds the cross-reference so
the Asana ticket can be closed off this release cycle.

The QVAC-18992 ggml-speech migration (PR #13 + ggml-speech port
bump) stays deferred per the 2026-05-21 plan; it will land as a
follow-up port bump under the same QVAC-19071 umbrella.

[QVAC-19071]

Co-authored-by: Cursor <cursoragent@cursor.com>

* transcription-whispercpp: re-pin baseline to consume whisper-cpp 1.8.4.3#5 (REF flipped to tetherto/master)

[whisper-cpp PR #28](tetherto/qvac-ext-lib-whisper.cpp#28)
(QVAC-18993 bundled-ggml --- Android dynamic backend + per-arch CPU
dlopen fallback) was merged today (2026-05-21, merge commit
`f3102199` on `tetherto/qvac-ext-lib-whisper.cpp/master`). With it
merged, `tetherto/master` now carries every commit the registry's
`whisper-cpp` port previously pulled from the temporary
`Zbig9000/qvac-ext-lib-whisper.cpp@14620c8857` branch:

  - PR #25 (QVAC-18991, upstream whisper.cpp sync) --- merged 2026-05-20
  - PR #27 (QVAC-18966, tts-cpp chatterbox <atomic> fix) --- merged 2026-05-20
  - PR #28 (QVAC-18993, ggml-backend android dynamic backend) --- merged 2026-05-21

[qvac-registry-vcpkg PR #152](tetherto/qvac-registry-vcpkg#152)
HEAD (`f2870372`) bumps `whisper-cpp` to port-version `1.8.4.3#5`
with the REF repoint --- byte-identical source tarball outside
`parakeet-cpp/` and `tts-cpp/` (separate vcpkg ports). This commit
just re-pins the consumer-side baseline so the addon resolves
against the new port-version.

  vcpkg-configuration.json default-registry baseline:
    9f4e8e20072d8a7a1e118a49c36aacf6af6b3e0d   (MSVC fix only, whisper-cpp 1.8.4.3#4)
      -> f2870372965e899ae1f8a221154d2b243a6c3d30  (+ whisper-cpp 1.8.4.3#5 REF repoint)

No code change in this monorepo --- pure baseline re-pin. CHANGELOG
updated to record both the new baseline and the (now superseded)
intermediate `9f4e8e2` pin.

Closes the consumer-side half of [QVAC-19071](https://tetherapp.atlassian.net/browse/QVAC-19071)
("Update qvac-registry-vcpkg and addon with new port versions").
Registry-side half = vcpkg PR #152 commit `f287037`.

[QVAC-18993][QVAC-19071]

Co-authored-by: Cursor <cursoragent@cursor.com>

* transcription-whispercpp: re-pin baseline to whisper-cpp 1.8.4.3#0 (PR #152 review fixes)

@GustavoA1604 review on [qvac-registry-vcpkg PR #152](tetherto/qvac-registry-vcpkg#152)
requested three changes on the registry side:

  1. Drop the explanatory comment block at top of
     `ports/whisper-cpp/portfile.cmake`.
  2. Reset `port-version` 5 -> 0 (treat the tetherto REF repoint as
     a fresh start, not a continuation of the Zbig9000-branch series).
  3. Collapse the three historical `1.8.4.3` entries
     (`port-version` 3, 4, 5 -- never consumed off-fork) in
     `versions/w-/whisper-cpp.json` into a single `port-version: 0`
     entry with the new git-tree.

All three landed in PR #152 commit `ee71ecb`. This commit is the
consumer-side mirror:

  vcpkg-configuration.json default-registry baseline:
    f2870372965e899ae1f8a221154d2b243a6c3d30  (1.8.4.3#5, pre-review)
      -> ee71ecb5b286224377313e5a50558d11adbef3ac  (1.8.4.3#0, post-review)

  CHANGELOG entry updated:
    "1.8.4.3#5" -> "1.8.4.3#0" + note about port-version reset and
    history collapse + supersession line covers both prior pins
    (`9f4e8e2` MSVC fix, `f287037` 1.8.4.3#5).

No code change in this monorepo --- pure baseline re-pin. The
underlying whisper.cpp source bytes are unchanged (REPO + REF +
SHA512 in the portfile are identical between `1.8.4.3#5` and
`1.8.4.3#0`), so the produced binary is bit-for-bit equivalent.

[QVAC-18993][QVAC-19071]

Co-authored-by: Cursor <cursoragent@cursor.com>

* transcription-whispercpp: 0.8.0 — address PR review

Collapses the 0.7.1/0.7.2/0.7.3 work into a single 0.8.0 release and
folds in Gustavo's PR #2124 review feedback:

- Bump version to 0.8.0; collapse CHANGELOG into a single 0.8.0 entry
- Bump whisper-cpp override to 1.8.4.3#0 (matches PR #152 collapse)
- Repoint default-registry to tetherto/qvac-registry-vcpkg @ a9d7e924
  (PR #152 merge commit on tetherto/main)
- vcpkg.json: model GPU features on transcription-parakeet's pattern —
  platform-gated whisper-cpp deps select [opencl,vulkan] on android,
  [vulkan] on linux/windows, and no GPU feature on apple. Drop the
  addon-side opencl/vulkan feature sections; CMake no longer carries
  ENABLE_OPENCL / ENABLE_VULKAN option indirection.
- index.js: nest backendsDir under whisperConfig (mirrors parakeet's
  parakeetConfig.backendsDir). Strip it from the wire-format whisperConfig
  map and surface it as top-level configurationParams.backendsDir before
  handing the config to the addon. Fix the stale _createAddon JSDoc that
  still described "LLM-specific settings".
- index.d.ts + README.md: document whisperConfig.backendsDir; drop the
  ENABLE_VULKAN build instructions (now controlled by vcpkg.json).
- Compact all the addon-side comments (CMakeLists.txt, JSAdapter.cpp,
  WhisperConfig.hpp, WhisperModel.cpp); drop every QVAC asana ticket
  reference; standardise the C++ log wording on
  "configurationParams.backendsDir".
- Drop "-D ENABLE_VULKAN=OFF" from the test:cpp:build / coverage:cpp:build
  npm scripts (no-op now that the option is gone).

Co-authored-by: Cursor <cursoragent@cursor.com>

* transcription-whispercpp: 0.9.0 -> 0.8.0 (fold into single release)

Reverts the 0.8.0 -> 0.9.0 bump from the merge commit: per request, this
PR's release notes are folded into the existing 0.8.0 entry rather than
shipping as a separate semver step. Order: Added -> Changed -> Fixed
(from this PR) -> Removed (the OutputCallbackJs revert that landed on
main as 0.8.0 via #2133).

package.json bumped back to 0.8.0.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: GustavoA1604 <54457676+GustavoA1604@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant