# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/). ## [0.17.3](https://github.com/thedavidweng/OpenKara/compare/v0.17.2...v0.17.3) (2026-10-22) ### Bug Fixes * **ci:** keep the copyable CLA sign phrase in every bot comment ([#565](https://github.com/thedavidweng/OpenKara/issues/565)) ([0dd2059](https://github.com/thedavidweng/OpenKara/commit/0dd2059ed1ce14b0dfcd8912d8c544b5b2b094ef)) * **separator:** add opt-in DirectML graph fusion disable ([#475](https://github.com/thedavidweng/OpenKara/issues/475)) ([b01c58f](https://github.com/thedavidweng/OpenKara/commit/b01c58f110823757961461c7e927fe7d5a447a10)) ## [0.17.2](https://github.com/thedavidweng/OpenKara/compare/v0.17.1...v0.17.2) (2026-10-22) ### Bug Fixes * **deps:** clear RUSTSEC-2026-0382 and -0383 in the Tauri lockfile ([#560](https://github.com/thedavidweng/OpenKara/issues/560)) ([c171cca](https://github.com/thedavidweng/OpenKara/commit/c171cca2a0ffc328adb46c81b820373c72af02ab)) ## [0.17.1](https://github.com/thedavidweng/OpenKara/compare/v0.17.0...v0.17.1) (2026-10-19) ### Bug Fixes * **deps:** align notification npm and Rust versions ([#541](https://github.com/thedavidweng/OpenKara/issues/541)) ([5790271](https://github.com/thedavidweng/OpenKara/commit/5790271d80f0d8bf0f50b76de989ce549fb8dbca)) ## [0.17.0](https://github.com/thedavidweng/OpenKara/compare/v0.16.2...v0.17.0) (2026-10-19) ### Features * **ci:** publish non-blocking bundle size evidence ([#543](https://github.com/thedavidweng/OpenKara/issues/543)) ([a0c7d43](https://github.com/thedavidweng/OpenKara/commit/a0c7d430dbb3fc8910a0dfa53822c2fe6eeae595)) ### Bug Fixes * **ci:** require workflow lint and classify Flatpak node sources ([#532](https://github.com/thedavidweng/OpenKara/issues/532)) ([7a1f88d](https://github.com/thedavidweng/OpenKara/commit/7a1f88df5a7c432e9fe0ecbbe5c143b190e52f5a)) * update aws-lc build dependencies ([#534](https://github.com/thedavidweng/OpenKara/issues/534)) ([cd6ce7d](https://github.com/thedavidweng/OpenKara/commit/cd6ce7da40b5ba0089a5039217375dfdb667f16e)) * update updater and zip dependencies ([#533](https://github.com/thedavidweng/OpenKara/issues/533)) ([fbac684](https://github.com/thedavidweng/OpenKara/commit/fbac6840438e7f03bee3c2bb0cee392b2fb08af9)) ## [0.16.2](https://github.com/thedavidweng/OpenKara/compare/v0.16.1...v0.16.2) (2026-10-17) ### Bug Fixes * **ci:** sign macOS releases on Apple Silicon runners ([#528](https://github.com/thedavidweng/OpenKara/issues/528)) ([4b0933a](https://github.com/thedavidweng/OpenKara/commit/4b0933a4c1b8f7b3f3b7391c3a4bdf349d522c52)) ## [0.16.1](https://github.com/thedavidweng/OpenKara/compare/v0.16.0...v0.16.1) (2026-10-17) ### Bug Fixes * **release:** require Developer ID signing and notarization on macOS ([#525](https://github.com/thedavidweng/OpenKara/issues/525)) ([69987a8](https://github.com/thedavidweng/OpenKara/commit/69987a8e26c410d28c5b4710a9288d29efe0916e)) ## [0.16.0](https://github.com/thedavidweng/OpenKara/compare/v0.15.0...v0.16.0) (2026-10-10) ### Features * **website:** serve the site at openkara.blahaj.uk ([20d2ae0](https://github.com/thedavidweng/OpenKara/commit/20d2ae02bb69425b7183e6462f3c04b2a9f80791)) ### Bug Fixes * **ci:** add always-reporting Packaging Gate and pin cc < 1.6.0 for aws-lc-sys ([#500](https://github.com/thedavidweng/OpenKara/issues/500)) ([505e50c](https://github.com/thedavidweng/OpenKara/commit/505e50c887348e9472be5282bdae5ed8cef759a7)) * **deps:** bump transitive source-map-js past GHSA-68fv-2mgg-jv7q ([d46be9a](https://github.com/thedavidweng/OpenKara/commit/d46be9a4da5f484d37033dd52ef65821e66d884d)) * **deps:** bump transitive source-map-js past GHSA-68fv-2mgg-jv7q ([7edbfa8](https://github.com/thedavidweng/OpenKara/commit/7edbfa834bd8b7980edafe89fac2db1a981699c9)) * **lyrics:** keep brackets inside LRC metadata tag values ([#466](https://github.com/thedavidweng/OpenKara/issues/466)) ([388252b](https://github.com/thedavidweng/OpenKara/commit/388252b105cba7b8e45a6ff758c2b375cbc59e6c)) * **packaging:** regenerate flatpak node sources for the source-map-js bump ([8380a04](https://github.com/thedavidweng/OpenKara/commit/8380a0470eab5810aec5ad20a5587f4e5c29c7c1)) * **packaging:** regenerate flatpak node sources for the source-map-js bump ([a963713](https://github.com/thedavidweng/OpenKara/commit/a963713ceba017f7938e5c5263d7108f5a6c11e0)) * **rust:** migrate DownloadSemaphore off deprecated fetch_update ([1a9634d](https://github.com/thedavidweng/OpenKara/commit/1a9634de4d53fc03c96ec8537cfe8ba157f470c9)) ## [0.15.0](https://github.com/thedavidweng/OpenKara/compare/v0.14.0...v0.15.0) (2026-09-21) ### Features * **lyrics:** acquire word-timed AMLL lyrics and show supplied romanization ([c3a5383](https://github.com/thedavidweng/OpenKara/commit/c3a53830dda4c3880f8bae5658a7da2695b55f4a)) * **lyrics:** acquire word-timed AMLL lyrics and show supplied romanization ([0eba178](https://github.com/thedavidweng/OpenKara/commit/0eba178113d039e6d0738ab9b524fec3b21f7738)) * **lyrics:** in-house AMLL-like focus stage and One Last Kiss demo ([af24351](https://github.com/thedavidweng/OpenKara/commit/af243518bfff1ed6c5f10e950cc615322e7a910b)) * **lyrics:** ship an in-house AMLL-like focus stage and One Last Kiss demo ([2309483](https://github.com/thedavidweng/OpenKara/commit/230948347b41cf5c69dd95ac11b6754cdcab1185)) * **preview:** slim the landing mock and keep playback interactive ([2223a8e](https://github.com/thedavidweng/OpenKara/commit/2223a8e6453fddb0c7c7f5acfc994e35c27a5e2a)) * snap lyric browse and slim the landing preview ([4aa2910](https://github.com/thedavidweng/OpenKara/commit/4aa291071ff05acb642a9b7db79758f1b33c7c5d)) ### Bug Fixes * **ci:** unblock rust gates for toolchain and advisory drift ([ce549bc](https://github.com/thedavidweng/OpenKara/commit/ce549bcd25eeea2684a2fab2499d55414359605f)) * **ci:** update the nightly release in place instead of recreating it ([e095d68](https://github.com/thedavidweng/OpenKara/commit/e095d680a6324bf93ca4add61e0c76e91e9c82a3)) * **hooks:** run knip on commit and drop the duplicate preview export ([8c9591c](https://github.com/thedavidweng/OpenKara/commit/8c9591c24f79e95ed70190be7ccc86fedeb70555)) * **lyrics:** address CodeRabbit review on the focus stage ([48f0668](https://github.com/thedavidweng/OpenKara/commit/48f0668002f00e9db9ee1eafa43d5117536fd338)) * **lyrics:** close review gaps in karaoke, blur, and preview ([5e9f099](https://github.com/thedavidweng/OpenKara/commit/5e9f099718de71428429199ff0a3648a763c3b6d)) * **lyrics:** drop stale romanization after an AMLL upgrade ([6129a7f](https://github.com/thedavidweng/OpenKara/commit/6129a7f27f841be931ee59f024d7b6b6f81e2e42)) * **lyrics:** drop stale snap velocity and close review gaps ([ae99fa1](https://github.com/thedavidweng/OpenKara/commit/ae99fa1bb5f3d9f4bafa90eb95a2fcc9132947ad)) * **lyrics:** restore free browse and polish karaoke romanization ([89b37b0](https://github.com/thedavidweng/OpenKara/commit/89b37b045548ba99cc925c4c9e88133f03c7dd52)) * **lyrics:** restore free scroll and polish karaoke display ([d0f502b](https://github.com/thedavidweng/OpenKara/commit/d0f502bb11ee481699e239ac42f688d4aad18544)) * **lyrics:** snap browse scroll onto a line and tighten the focus stage ([ab07ee8](https://github.com/thedavidweng/OpenKara/commit/ab07ee8e8ed53c7a3dce747184a9523e45006f32)) * **lyrics:** type the preview catalog and simplify TTML roman fallback ([da36ef9](https://github.com/thedavidweng/OpenKara/commit/da36ef94cd8d859eeca4b1b013993476782b9a3a)) * **lyrics:** wait for karaoke wipe before visual assertions ([bfad50c](https://github.com/thedavidweng/OpenKara/commit/bfad50cd1ae939054359d61f6751e5826ed39482)) * **lyrics:** wipe romanization in sync and lead with One Last Kiss ([0d15f83](https://github.com/thedavidweng/OpenKara/commit/0d15f83acd047072454126489895c158dc178436)) * **packaging:** pin lyric-romanizer 0.3.1 so Flatpak sources match the lockfile ([0f0ef13](https://github.com/thedavidweng/OpenKara/commit/0f0ef133f80d3923eeb49fbc38be6461d7f1e566)) * **preview:** escape unused-module alias paths for CodeQL ([784f745](https://github.com/thedavidweng/OpenKara/commit/784f7458172e1bdc9cd2de91847b366e61ce8d57)) * **preview:** ignore preview double-clicks and honor loop start ([95937d2](https://github.com/thedavidweng/OpenKara/commit/95937d291edbc21563c5ba2302abca8f2f3ffca4)) * **preview:** let landing demo song rows receive clicks ([699377f](https://github.com/thedavidweng/OpenKara/commit/699377f0d0ffef84d27c49352264ada97c2a445a)) * **preview:** let landing demo song rows receive clicks ([1730c9d](https://github.com/thedavidweng/OpenKara/commit/1730c9dfe902f50e7c745c6705b0910c4a5f6ffb)) * **preview:** let test lyric overrides win over catalog lyrics ([5a35f3a](https://github.com/thedavidweng/OpenKara/commit/5a35f3a74dc453f0e77cd2a5a5d4e5b1f8521661)) * **preview:** start Earfquake at 00:23 and switch demo songs ([1083dfe](https://github.com/thedavidweng/OpenKara/commit/1083dfe9b1976c2078c28e3af52ce3de428029d6)) * **preview:** start Earfquake at 00:23 and switch demo songs ([5c8e193](https://github.com/thedavidweng/OpenKara/commit/5c8e1932da0cb95f2811216cdd81cb52c7b728b3)) * **settings:** serialize optimistic preference writes ([b153b65](https://github.com/thedavidweng/OpenKara/commit/b153b6549341d5ae88ca2de2eaa5da0b06aa6a6b)) * **settings:** serialize optimistic preference writes ([4a4b0ec](https://github.com/thedavidweng/OpenKara/commit/4a4b0eca288087d9f2d2547e57cd4fbb111e081f)) * **test:** stabilize WebKit alphabet Home/End and keep karaoke masks ([8c11582](https://github.com/thedavidweng/OpenKara/commit/8c1158284a8c26a6682afe50795b6b201b34228a)) * **tests:** use as_chunks in phase7 spectral npy parsing ([dc43de4](https://github.com/thedavidweng/OpenKara/commit/dc43de44525da666635c761b7d79969196fc2240)) ### Performance Improvements * **lyrics:** load romanizer engines on demand ([588e386](https://github.com/thedavidweng/OpenKara/commit/588e38671fb370df1a6f25f0eb1e5130917b0637)) * **lyrics:** load romanizer engines on demand ([af1c78d](https://github.com/thedavidweng/OpenKara/commit/af1c78dba04bd0f84c401a394f8fd8e9d2d93a61)) ## [0.14.0](https://github.com/thedavidweng/OpenKara/compare/v0.13.2...v0.14.0) (2026-08-13) ### Features * **catalog:** advance embedded snapshot to generation 13 (static-CRT Windows runtimes) ([d6b9505](https://github.com/thedavidweng/OpenKara/commit/d6b9505bfe98268a91115148ed8dfb3aac7d39c6)) * **catalog:** advance embedded snapshot to generation 13 (static-CRT Windows runtimes) ([e33703d](https://github.com/thedavidweng/OpenKara/commit/e33703d520b584f9f7c8141b642f43e7bda2c40c)), closes [#363](https://github.com/thedavidweng/OpenKara/issues/363) ### Bug Fixes * **audio:** advance crossfade overlap cursors by produced frames ([7c450f1](https://github.com/thedavidweng/OpenKara/commit/7c450f1d0a52b0ecbd505aab5ca0d9bdd2bb9ddd)), closes [#376](https://github.com/thedavidweng/OpenKara/issues/376) * **audio:** keep fade gain on post-swap samples in crossfade branch ([9e0491b](https://github.com/thedavidweng/OpenKara/commit/9e0491bc66d03303f5543cb00ec587cb3d052748)), closes [#375](https://github.com/thedavidweng/OpenKara/issues/375) * **audio:** keep transport clock advancing at exactly zero volume ([b756c8a](https://github.com/thedavidweng/OpenKara/commit/b756c8a92be0a7c498a6956b2967a62588c2b09b)), closes [#379](https://github.com/thedavidweng/OpenKara/issues/379) * **audio:** stop resampler cache panicking on the realtime callback ([9ea613e](https://github.com/thedavidweng/OpenKara/commit/9ea613e24fc66a7dee3d037c54aebf1c11444ed0)), closes [#378](https://github.com/thedavidweng/OpenKara/issues/378) * **library:** never persist an active_library_id that is not in the registry ([bb05681](https://github.com/thedavidweng/OpenKara/commit/bb0568153de94a24b47a74e58078ad0c69457021)), closes [#381](https://github.com/thedavidweng/OpenKara/issues/381) * **library:** reset integrity selection and skipped count for reportless cleanups ([a19ce05](https://github.com/thedavidweng/OpenKara/commit/a19ce052457494dafdf169ea2fbe8174793a8ea5)), closes [#389](https://github.com/thedavidweng/OpenKara/issues/389) * **library:** stop the remote wizard reporting success for a failed activation ([0e18010](https://github.com/thedavidweng/OpenKara/commit/0e180102dc816e0e255320386d8b9ce42de1d749)), closes [#385](https://github.com/thedavidweng/OpenKara/issues/385) * **library:** validate the delete confirmation name inside the dialog ([f8e49a2](https://github.com/thedavidweng/OpenKara/commit/f8e49a29787210a6910f29bdf5d5ba290ba5a1f8)), closes [#387](https://github.com/thedavidweng/OpenKara/issues/387) * **lyrics:** rederive the active word from state on line changes ([e5319c8](https://github.com/thedavidweng/OpenKara/commit/e5319c838d173dbcfcbc2ac0ed4af8eea98605fa)), closes [#384](https://github.com/thedavidweng/OpenKara/issues/384) * **playback:** stop the stale fetch-event listener when its source is replaced ([d1b3ed2](https://github.com/thedavidweng/OpenKara/commit/d1b3ed2b4d4180a01e51a8931c028d4e425eeb99)), closes [#382](https://github.com/thedavidweng/OpenKara/issues/382) * **progress:** hide an interrupted model download-complete flash ([d2bddf5](https://github.com/thedavidweng/OpenKara/commit/d2bddf5422b93ee41ec6c5107bacbd8692b72227)), closes [#386](https://github.com/thedavidweng/OpenKara/issues/386) * **remote:** give the durable operation executor a shutdown signal ([a3606d8](https://github.com/thedavidweng/OpenKara/commit/a3606d8d13c807012c7df895a4546264b16398cd)), closes [#383](https://github.com/thedavidweng/OpenKara/issues/383) * resolve 15 open bugs across audio, runtime threads, library registry, and frontend UI ([4c66fab](https://github.com/thedavidweng/OpenKara/commit/4c66fab28ccdea3428d57d12f39519c7c8285f85)) * **runtime:** surface bootstrap failure phase instead of blaming the network ([#365](https://github.com/thedavidweng/OpenKara/issues/365)) ([d169dca](https://github.com/thedavidweng/OpenKara/commit/d169dcae63e9e673cf76a12e58f5130a41dfab44)), closes [#362](https://github.com/thedavidweng/OpenKara/issues/362) * **separator:** drop the app-local VC++ CRT deployment superseded by static-CRT runtimes ([992e7d1](https://github.com/thedavidweng/OpenKara/commit/992e7d1d40337938e21b8abf2c058a71ee23fab4)) * **separator:** drop the app-local VC++ CRT deployment superseded by static-CRT runtimes ([a21b7ff](https://github.com/thedavidweng/OpenKara/commit/a21b7ff86aeea3d9b33d672c2ff79f2a81023ba6)), closes [#363](https://github.com/thedavidweng/OpenKara/issues/363) * **separator:** install same-id runtime updates whose archive digest changed ([e76e790](https://github.com/thedavidweng/OpenKara/commit/e76e790e09f138d24decb2f4eef84007db6e9d30)), closes [#394](https://github.com/thedavidweng/OpenKara/issues/394) * **separator:** install the refreshed catalog runtime on separation-triggered bootstrap ([6897238](https://github.com/thedavidweng/OpenKara/commit/6897238de34d41ed9d239507a551e8bef88d9d5e)), closes [#393](https://github.com/thedavidweng/OpenKara/issues/393) * **separator:** make the runtime install/update path digest-aware and probe-gated ([c2d95e9](https://github.com/thedavidweng/OpenKara/commit/c2d95e913f82ff674a8a1ea45c51bc40de0d1f79)) * **separator:** name DirectML.dll in the missing-dependency hint and tighten ADR 0025 ([cc56559](https://github.com/thedavidweng/OpenKara/commit/cc5655997f46b1dd8ffccb8a94e1789538739fc6)) * **separator:** never stage or replace the install the active slot names ([db91b26](https://github.com/thedavidweng/OpenKara/commit/db91b261b912aa81f376b35c856b90a9739c30d8)) * **separator:** release the runtime load latch when the loader panics ([ad37649](https://github.com/thedavidweng/OpenKara/commit/ad376490abe812818c5780b00848ef3d36d271fa)), closes [#377](https://github.com/thedavidweng/OpenKara/issues/377) * **separator:** stage the runtime candidate only after its probe succeeds ([3333086](https://github.com/thedavidweng/OpenKara/commit/33330865305c8317dae66beea8ade6382adc0304)), closes [#395](https://github.com/thedavidweng/OpenKara/issues/395) * **separator:** surface Windows load error and bundle VC++ runtime DLLs ([#284](https://github.com/thedavidweng/OpenKara/issues/284)) ([#361](https://github.com/thedavidweng/OpenKara/issues/361)) ([d32f73d](https://github.com/thedavidweng/OpenKara/commit/d32f73d518d61af848ef96ae4bd47aeca3ddc272)) * **settings:** keep library create and open non-rejecting ([fdb26d6](https://github.com/thedavidweng/OpenKara/commit/fdb26d632a1a55b22189cb84dc6e770183b412a2)) * **settings:** surface model and runtime status read failures ([c86d5b0](https://github.com/thedavidweng/OpenKara/commit/c86d5b0480843f738b7de56cd040b376b1f2aa29)), closes [#388](https://github.com/thedavidweng/OpenKara/issues/388) * **settings:** treat a failed runtime status read as unavailable ([b20533e](https://github.com/thedavidweng/OpenKara/commit/b20533eb107675a5f92d1841ab28e5d1efbef3b7)) ## [0.13.2](https://github.com/thedavidweng/OpenKara/compare/v0.13.1...v0.13.2) (2026-08-10) ### Bug Fixes * **runtime:** harden ORT DLL load on slow/AV-heavy Windows VMs ([#284](https://github.com/thedavidweng/OpenKara/issues/284)) ([#350](https://github.com/thedavidweng/OpenKara/issues/350)) ([b29ff3f](https://github.com/thedavidweng/OpenKara/commit/b29ff3fede506c68f21ed74480a07742db974b7c)) ## [0.13.1](https://github.com/thedavidweng/OpenKara/compare/v0.13.0...v0.13.1) (2026-08-08) ### Features * **catalog:** advance embedded snapshot to generation 12 ([#347](https://github.com/thedavidweng/OpenKara/issues/347)) ([f5add55](https://github.com/thedavidweng/OpenKara/commit/f5add5568bcc4adc54784b5154c324c97989b569)) ### Bug Fixes * **ci:** self-sufficient release nightly-evidence gate + stabilize Home/End e2e ([#342](https://github.com/thedavidweng/OpenKara/issues/342)) ([8b190f3](https://github.com/thedavidweng/OpenKara/commit/8b190f3e8768ef7092a0a7fce0528ffa782b420e)) * **deps:** override vulnerable transitive nanoid and postcss ([#346](https://github.com/thedavidweng/OpenKara/issues/346)) ([a967fec](https://github.com/thedavidweng/OpenKara/commit/a967fecd3a0d6835d0d0e02eceaa60fc77e9d044)) * **runtime:** fall back to CPU Windows runtime on DirectML load timeout ([#343](https://github.com/thedavidweng/OpenKara/issues/343)) ([df1b6ab](https://github.com/thedavidweng/OpenKara/commit/df1b6abe53d1a8ce732e6619e0b1bdde14b8bb4d)) ## [0.13.0](https://github.com/thedavidweng/OpenKara/compare/v0.12.1...v0.13.0) (2026-08-07) ### Features * **ui:** add copy debug info action on error toasts ([55bf6f3](https://github.com/thedavidweng/OpenKara/commit/55bf6f308e52c5d5e5528cdd5dd98efe70e2a25c)) ### Bug Fixes * address PR review findings still valid in tree ([7c57231](https://github.com/thedavidweng/OpenKara/commit/7c57231603a5ad7d90c8c066b40c1c00582d1809)) * apply CodeRabbit auto-fixes ([030a2fd](https://github.com/thedavidweng/OpenKara/commit/030a2fdb1f95f1bfa5c2f13d9168b2489a976a2d)) * apply CodeRabbit auto-fixes ([862fc10](https://github.com/thedavidweng/OpenKara/commit/862fc10aca9f71ae4632facee5cc53569c30675f)) * **ci:** align pnpm action version with packageManager 11.20.0 ([f6d3037](https://github.com/thedavidweng/OpenKara/commit/f6d303751fbbf81daee8571a1f8a4edad96f542f)) * **ci:** align pnpm pins with packageManager 11.20.0 ([64046b4](https://github.com/thedavidweng/OpenKara/commit/64046b402acaf4e4bb0d4790f747fb69e2c266d4)) * **ci:** re-create draft releases bound to the real tag ([d915a74](https://github.com/thedavidweng/OpenKara/commit/d915a74905867823c43ab986d281b580191284cd)) * pass initial value to useRef in ToastContainer ([e28b450](https://github.com/thedavidweng/OpenKara/commit/e28b4508fb082fc3d7492e42cfdca27cd9be2ca6)) * **runtime:** harden Windows ORT load and sticky app language ([a34b961](https://github.com/thedavidweng/OpenKara/commit/a34b961d9b039a57a937ef1300f18f96ca664d84)) * **runtime:** Windows ORT load, sticky language, agent docs index ([30c4c76](https://github.com/thedavidweng/OpenKara/commit/30c4c76f555c29baae4e3527095b393e91479e88)) ## [0.12.1](https://github.com/thedavidweng/OpenKara/compare/v0.12.0...v0.12.1) (2026-08-04) ### Bug Fixes * address release review findings ([f49323c](https://github.com/thedavidweng/OpenKara/commit/f49323cd3699f1f51cb1218fb0da96e086c3e44e)) * **ci:** resolve nightly-hardening.yml Windows and installed-app failures ([ee00b0e](https://github.com/thedavidweng/OpenKara/commit/ee00b0e7ef5203ac5005941c8c93116cecafc33a)) * **ci:** scope release workflow permissions ([6a7017d](https://github.com/thedavidweng/OpenKara/commit/6a7017d51500ba445f0614852827814f9859787b)) * **ci:** scope release workflow permissions ([624d0ba](https://github.com/thedavidweng/OpenKara/commit/624d0ba34c81d03e5d568e7f546095bfa451c34d)) * close issue 303 release gates and prune remote playback ([96dcd20](https://github.com/thedavidweng/OpenKara/commit/96dcd20e5bb148cb35bbd4eb5a3f0f8e097ed951)) * close release hardening gaps ([4e6f878](https://github.com/thedavidweng/OpenKara/commit/4e6f8786b646527e9ebf44b32b5a5e7209bfc0ee)) * guard stem attachment against stale requests ([f802618](https://github.com/thedavidweng/OpenKara/commit/f802618ef3639326aba86663b32525317ea8b142)) * include e2e dependencies in knip ([de31a6b](https://github.com/thedavidweng/OpenKara/commit/de31a6bd2c61af2ca4dd5bb1fe01b168c9e559c3)) * preserve stale playback cancellation ([cd1d65b](https://github.com/thedavidweng/OpenKara/commit/cd1d65bac9f4b5e500fc63fe3e5b4eeaaa5af8cf)) * **runtime:** terminate bootstrap after completed download ([316f1a6](https://github.com/thedavidweng/OpenKara/commit/316f1a62156511d492674755fe31aa077521f2c3)), closes [#284](https://github.com/thedavidweng/OpenKara/issues/284) * synchronize playback request invalidation ([652a4ae](https://github.com/thedavidweng/OpenKara/commit/652a4ae0b36d0b0d907a4ee348d55b1b9edd4cb4)) * tighten desktop and stem loading checks ([e404e97](https://github.com/thedavidweng/OpenKara/commit/e404e97ebf57f7da32a5c812d48db1a56bd8e907)) ## [0.12.0](https://github.com/thedavidweng/OpenKara/compare/v0.11.0...v0.12.0) (2026-08-02) ### Features * **release:** auto-publish after assets, then submit distribution PRs ([#309](https://github.com/thedavidweng/OpenKara/issues/309)) ([83a9481](https://github.com/thedavidweng/OpenKara/commit/83a9481f5955250962c8df7c23f9b7a222449519)) ### Bug Fixes * **ci:** stop silent release-please tag failures after merge ([#308](https://github.com/thedavidweng/OpenKara/issues/308)) ([72b0fc8](https://github.com/thedavidweng/OpenKara/commit/72b0fc807d1d82d158293c51f855b05630d22c77)) * **i18n:** route user-facing copy through translations ([#312](https://github.com/thedavidweng/OpenKara/issues/312)) ([c0894d7](https://github.com/thedavidweng/OpenKara/commit/c0894d73c71570cc39d22e5ff2753ef9830b1bfd)) * **release:** apply installation template to draft releases ([#313](https://github.com/thedavidweng/OpenKara/issues/313)) ([ee00738](https://github.com/thedavidweng/OpenKara/commit/ee00738b1af2c7aa0e43c9cdccb02106c57d453b)) ## [0.11.0](https://github.com/thedavidweng/OpenKara/compare/v0.10.0...v0.11.0) (2026-08-01) ### Features - **automation:** add canonical report schema and contract test for release gate ([6f12a2e](https://github.com/thedavidweng/OpenKara/commit/6f12a2e60b80522faffa48afd0256f3d48b2f15a)) - **automation:** add openkara_automation_driver and canonical report builder ([8156c88](https://github.com/thedavidweng/OpenKara/commit/8156c885940160d3bd7420ea328539e8be759252)) - **automation:** validate audio outputs, runtime/model digests, and [#284](https://github.com/thedavidweng/OpenKara/issues/284) assertions ([3b52513](https://github.com/thedavidweng/OpenKara/commit/3b525131d714c347c0ad7cf2b05e677ad1b4b09d)) ### Bug Fixes - **automation:** 1.0 desktop and accessibility release gate ([#305](https://github.com/thedavidweng/OpenKara/issues/305)) ([a072087](https://github.com/thedavidweng/OpenKara/commit/a0720879f2777a245f2341fa0435acf595e2d23c)) ## [0.10.0](https://github.com/thedavidweng/OpenKara/compare/v0.9.1...v0.10.0) (2026-07-29) ### Features - **audio:** make the equalizer readable with named bands, a dB scale, and presets ([#237](https://github.com/thedavidweng/OpenKara/issues/237)) ([#243](https://github.com/thedavidweng/OpenKara/issues/243)) ([46da356](https://github.com/thedavidweng/OpenKara/commit/46da35617369341670ba6efaec5321afb10b9b2d)) - **catalog:** advance the embedded snapshot to generation 9 (reduced runtimes) ([#224](https://github.com/thedavidweng/OpenKara/issues/224)) ([86218ae](https://github.com/thedavidweng/OpenKara/commit/86218aeef14bdbd5f7d33c267f03554ac7f9e418)) - **diagnostics:** show where the model file belongs ([#282](https://github.com/thedavidweng/OpenKara/issues/282)) ([62ace29](https://github.com/thedavidweng/OpenKara/commit/62ace297b63f3f043db79bf181375b1ba54c7e17)) - **i18n:** expand UI language coverage to 17 languages ([#227](https://github.com/thedavidweng/OpenKara/issues/227)) ([#253](https://github.com/thedavidweng/OpenKara/issues/253)) ([02c067a](https://github.com/thedavidweng/OpenKara/commit/02c067a066b2323ff52f7fb653de5b9da0d2a509)) - **lyrics:** add fullscreen lyric alignment toggle and fix audience truncation ([dd06e48](https://github.com/thedavidweng/OpenKara/commit/dd06e48f15710101a634869b95c3e7698bb19dda)) - **lyrics:** fullscreen alignment toggle and audience truncation fixes ([b869144](https://github.com/thedavidweng/OpenKara/commit/b86914415b277cdc4a18f494f0aefb228f245271)) - **model:** consume the openkara-models stable catalog with installed identity ([#179](https://github.com/thedavidweng/OpenKara/issues/179)) ([037a6e6](https://github.com/thedavidweng/OpenKara/commit/037a6e663807a4ab16ab662942c52a37785653d1)) - **observability:** file logging, cross-platform About, and useful debug export ([#231](https://github.com/thedavidweng/OpenKara/issues/231)) ([687da3a](https://github.com/thedavidweng/OpenKara/commit/687da3afef4bf6a79b64031c824b0a03f0b07429)) - **remote:** give a Pre-Publish Conflict a way out, and clear the dead code behind it ([#283](https://github.com/thedavidweng/OpenKara/issues/283)) ([15ef164](https://github.com/thedavidweng/OpenKara/commit/15ef164c37c40145b035fc7a79979f699f221049)) - **runtime:** catalog-driven ONNX Runtime lifecycle with staged activation ([#184](https://github.com/thedavidweng/OpenKara/issues/184)) ([7e36fec](https://github.com/thedavidweng/OpenKara/commit/7e36fec04b87491f5ff3952fa8a68236bc865469)) - **separation:** cancel single-song runs and surface cache hits ([#180](https://github.com/thedavidweng/OpenKara/issues/180), [#181](https://github.com/thedavidweng/OpenKara/issues/181)) ([#183](https://github.com/thedavidweng/OpenKara/issues/183)) ([f6b4e73](https://github.com/thedavidweng/OpenKara/commit/f6b4e73be579a411fc68e6f78d571c2ac2c88da5)) - **separation:** default new separations to four stems ([#185](https://github.com/thedavidweng/OpenKara/issues/185)) ([bd90d76](https://github.com/thedavidweng/OpenKara/commit/bd90d76c79218424c217038e870d397e0cec90a6)) - **separation:** notify natively when a separation finishes unfocused ([#268](https://github.com/thedavidweng/OpenKara/issues/268)) ([1672daf](https://github.com/thedavidweng/OpenKara/commit/1672daff2b09c2a6cab798675b83d5fe29393841)) - **separator:** native STFT/ISTFT for the spectral contract v1 ([#172](https://github.com/thedavidweng/OpenKara/issues/172)) ([#186](https://github.com/thedavidweng/OpenKara/issues/186)) ([ec4f86f](https://github.com/thedavidweng/OpenKara/commit/ec4f86fc32bb150895d4ddf99024d3ffe7a09f2b)) - **separator:** spectral-core stable switch — generation 8 + waveform path deletion ([#172](https://github.com/thedavidweng/OpenKara/issues/172) PR 5) ([#197](https://github.com/thedavidweng/OpenKara/issues/197)) ([b416cdf](https://github.com/thedavidweng/OpenKara/commit/b416cdf7917dc708bf933e095c8706c5025219cb)) - **separator:** typed spectral-core session path ([#172](https://github.com/thedavidweng/OpenKara/issues/172) PR 2) ([#192](https://github.com/thedavidweng/OpenKara/issues/192)) ([0a785a5](https://github.com/thedavidweng/OpenKara/commit/0a785a5ce2da42ecaad1ffd562789ade99067994)) - **settings:** add hide-upgrade-all option and show song count in global progress ([1d02592](https://github.com/thedavidweng/OpenKara/commit/1d02592a3f753c20d6d65becd8bb52597a8278df)) - **shell:** adopt the official updater plugin for in-app updates ([#255](https://github.com/thedavidweng/OpenKara/issues/255)) ([#259](https://github.com/thedavidweng/OpenKara/issues/259)) ([3a60fde](https://github.com/thedavidweng/OpenKara/commit/3a60fde8ca107d2838939fcc5a94f60171c4ae0d)) - **shell:** enforce a single app instance and open URLs through the opener plugin ([#258](https://github.com/thedavidweng/OpenKara/issues/258)) ([18ea7ac](https://github.com/thedavidweng/OpenKara/commit/18ea7acc3396bcf30dfce005a81dd9d935906c04)) - **shell:** persist main window geometry across launches ([#267](https://github.com/thedavidweng/OpenKara/issues/267)) ([b31f375](https://github.com/thedavidweng/OpenKara/commit/b31f375b860c3ab81a449884175c4b258da43a92)), closes [#263](https://github.com/thedavidweng/OpenKara/issues/263) - **standards:** adopt product quality baselines ([#295](https://github.com/thedavidweng/OpenKara/issues/295)) ([25ffb95](https://github.com/thedavidweng/OpenKara/commit/25ffb9502c345532fb53f0a2578a8425ea718a87)) - **test:** automate release acceptance gates ([#294](https://github.com/thedavidweng/OpenKara/issues/294)) ([87c23a8](https://github.com/thedavidweng/OpenKara/commit/87c23a80503dd9c14e8c4186436e0d237d6cfca2)) ### Bug Fixes - **audience:** let fullscreen lyrics own the whole monitor and hide controls on pointer idle ([#234](https://github.com/thedavidweng/OpenKara/issues/234)) ([#241](https://github.com/thedavidweng/OpenKara/issues/241)) ([7a1d9df](https://github.com/thedavidweng/OpenKara/commit/7a1d9df4082055fe7142d0d12a3d9c06e94594b4)) - **audio:** keep the accompaniment master and its sub-stems in lockstep ([#235](https://github.com/thedavidweng/OpenKara/issues/235)) ([#240](https://github.com/thedavidweng/OpenKara/issues/240)) ([e75a5e9](https://github.com/thedavidweng/OpenKara/commit/e75a5e9564ee666ddb1ecca0f0b684be20612ad1)) - **audio:** recover playback when the output device disconnects ([#273](https://github.com/thedavidweng/OpenKara/issues/273)) ([7a9d0a5](https://github.com/thedavidweng/OpenKara/commit/7a9d0a594994b614d3cee930a25d5075a0a99214)), closes [#250](https://github.com/thedavidweng/OpenKara/issues/250) - **bootstrap:** make the model-download failed banner recoverable ([#217](https://github.com/thedavidweng/OpenKara/issues/217)) ([#220](https://github.com/thedavidweng/OpenKara/issues/220)) ([f66947d](https://github.com/thedavidweng/OpenKara/commit/f66947daafcbb8a4f60b557452632723879d011a)) - **bootstrap:** resume artifact downloads instead of restarting them ([#281](https://github.com/thedavidweng/OpenKara/issues/281)) ([dc83f4f](https://github.com/thedavidweng/OpenKara/commit/dc83f4f563ae823cc6123414d9d551a10a9cc50f)) - **cache:** preserve songs.language through the legacy schema rebuild ([#221](https://github.com/thedavidweng/OpenKara/issues/221)) ([c9f4e0a](https://github.com/thedavidweng/OpenKara/commit/c9f4e0af17a96eacfcc3fe2fd4f839fbe11cc84d)), closes [#219](https://github.com/thedavidweng/OpenKara/issues/219) - **ci:** portable model digest verification in spectral-candidate ([#196](https://github.com/thedavidweng/OpenKara/issues/196)) ([f7afd8a](https://github.com/thedavidweng/OpenKara/commit/f7afd8ae71f13a26e54b8494491110866329a791)) - **ci:** set GH_REPO in generate-checksums job ([2a08ba7](https://github.com/thedavidweng/OpenKara/commit/2a08ba7e5bd866fbee535105bc18df389032cce5)) - **ci:** stabilize runtime and lyrics validation ([#293](https://github.com/thedavidweng/OpenKara/issues/293)) ([b8ff5e2](https://github.com/thedavidweng/OpenKara/commit/b8ff5e248e11b91dd7e93357ef1240adc34cf884)) - **clippy:** resolve lint errors and workflow shellcheck warnings ([8cd4239](https://github.com/thedavidweng/OpenKara/commit/8cd42390daf28f87d69f3d7b875b5d1d210022e9)) - **config:** atomic write + corruption recovery to end the boot brick ([#208](https://github.com/thedavidweng/OpenKara/issues/208)) ([#211](https://github.com/thedavidweng/OpenKara/issues/211)) ([cd520d8](https://github.com/thedavidweng/OpenKara/commit/cd520d8d79b9c8fdaba3cb1a5d7c3ac4940d1182)) - **e2e:** deflake webkit lyrics-follow and muted-stem tests, surface flaky counts in CI ([#218](https://github.com/thedavidweng/OpenKara/issues/218)) ([#222](https://github.com/thedavidweng/OpenKara/issues/222)) ([102df50](https://github.com/thedavidweng/OpenKara/commit/102df502c41bc3685c4c8381a068044888d8f385)) - **eq:** remove auto-preamp cancellation so band gains act as absolute boosts ([a90aa20](https://github.com/thedavidweng/OpenKara/commit/a90aa20190999bf724f8beb0ede807b21371ac31)) - **hooks:** skip the pre-push gates when a push only deletes remote refs ([#257](https://github.com/thedavidweng/OpenKara/issues/257)) ([fa5cadc](https://github.com/thedavidweng/OpenKara/commit/fa5cadc525b0a153cf45680b816efe2c718a0a82)) - **hooks:** stop passing oxfmt-ignored src-tauri files to the pre-commit hook ([#193](https://github.com/thedavidweng/OpenKara/issues/193)) ([b2ec4f3](https://github.com/thedavidweng/OpenKara/commit/b2ec4f3d20635800d22a8afe7c47bac72739c8d3)) - **i18n:** translate remote-library flow strings for zh-CN ([#209](https://github.com/thedavidweng/OpenKara/issues/209)) ([#212](https://github.com/thedavidweng/OpenKara/issues/212)) ([1881b6c](https://github.com/thedavidweng/OpenKara/commit/1881b6c05a975909f8670e31b4bf21a33d404fe6)) - **library:** atomic media import and net downgrade savings ([#206](https://github.com/thedavidweng/OpenKara/issues/206), [#207](https://github.com/thedavidweng/OpenKara/issues/207)) ([#213](https://github.com/thedavidweng/OpenKara/issues/213)) ([a09a3f0](https://github.com/thedavidweng/OpenKara/commit/a09a3f04b0563c9803b2777264007429a1ebc65e)) - **library:** name the destination on the remote-repository connect button ([#238](https://github.com/thedavidweng/OpenKara/issues/238)) ([#244](https://github.com/thedavidweng/OpenKara/issues/244)) ([c8d36ba](https://github.com/thedavidweng/OpenKara/commit/c8d36ba04a256c4bc3f24303742fb43b5a7ca39d)) - **library:** record the two-stem downgrade before deleting what it replaces ([#274](https://github.com/thedavidweng/OpenKara/issues/274)) ([ab0f004](https://github.com/thedavidweng/OpenKara/commit/ab0f00452273043c2c76c2cf4b02faa861f1fe30)), closes [#251](https://github.com/thedavidweng/OpenKara/issues/251) - **lyrics:** add a Reset button to the lyrics offset control ([#233](https://github.com/thedavidweng/OpenKara/issues/233)) ([#247](https://github.com/thedavidweng/OpenKara/issues/247)) ([772489d](https://github.com/thedavidweng/OpenKara/commit/772489d764b0810836fb84660e2d05d45270f8c4)) - **lyrics:** eliminate alignment-toggle flash by stabilizing LyricLine children ([6771557](https://github.com/thedavidweng/OpenKara/commit/6771557450eb1fc544cb2b3ec31b2d5c5586aff8)) - **lyrics:** keep interleaved romaji out of the lyric list ([#232](https://github.com/thedavidweng/OpenKara/issues/232)) ([#246](https://github.com/thedavidweng/OpenKara/issues/246)) ([8bdb68b](https://github.com/thedavidweng/OpenKara/commit/8bdb68b162675f46f02efb20ea5cf2ac4aed118a)) - **lyrics:** make seekable lyric button fill width to restore centered text ([a96c343](https://github.com/thedavidweng/OpenKara/commit/a96c3436f7b38fa0e9617443063912abe051d37e)) - **lyrics:** pin the romanization script from SongLanguage and bump lyric-romanizer to 0.3.0 ([#248](https://github.com/thedavidweng/OpenKara/issues/248)) ([#252](https://github.com/thedavidweng/OpenKara/issues/252)) ([d659b88](https://github.com/thedavidweng/OpenKara/commit/d659b8818a084f2d7251a6d9a833f21bec2ce41a)) - **lyrics:** stabilize scroll follow across ambience, layout, and resize ([#214](https://github.com/thedavidweng/OpenKara/issues/214)) ([6dbefb1](https://github.com/thedavidweng/OpenKara/commit/6dbefb1550b015db6baba04f878bb8f865b723a9)) - **lyrics:** stop auto-upgrade from overwriting user-authored lyrics ([#203](https://github.com/thedavidweng/OpenKara/issues/203)) ([#215](https://github.com/thedavidweng/OpenKara/issues/215)) ([525a2c7](https://github.com/thedavidweng/OpenKara/commit/525a2c78ff44e9bfe36926f400f50ce1b345e54a)) - **release:** gate tag/version consistency and refresh install docs for 1.0 ([#229](https://github.com/thedavidweng/OpenKara/issues/229)) ([0ad817c](https://github.com/thedavidweng/OpenKara/commit/0ad817ce96cb0ed947f0c203f3dcfbd75cb22dec)) - **remote:** bound streaming range fetches and stream downloads to disk ([#204](https://github.com/thedavidweng/OpenKara/issues/204), [#205](https://github.com/thedavidweng/OpenKara/issues/205)) ([#216](https://github.com/thedavidweng/OpenKara/issues/216)) ([f1afa6e](https://github.com/thedavidweng/OpenKara/commit/f1afa6edd2cc7f0d59a96e9f20911d5a1191c59b)) - restore playback clock and unify managed runtime ([#178](https://github.com/thedavidweng/OpenKara/issues/178)) ([030053c](https://github.com/thedavidweng/OpenKara/commit/030053cba7d2f1bc6c6b62cad3f5c8718a871668)) - **runtime:** make the ONNX Runtime install succeed and report one truth ([#236](https://github.com/thedavidweng/OpenKara/issues/236)) ([#245](https://github.com/thedavidweng/OpenKara/issues/245)) ([8ec7cd5](https://github.com/thedavidweng/OpenKara/commit/8ec7cd5bf6d2e357c720dd1ad83ea39bfdfc837a)) - **runtime:** surface the first-install ONNX Runtime download as a named task ([#226](https://github.com/thedavidweng/OpenKara/issues/226)) ([#230](https://github.com/thedavidweng/OpenKara/issues/230)) ([40f2d5b](https://github.com/thedavidweng/OpenKara/commit/40f2d5b6301cf3681577c58e348b4f738013432a)) - **setup:** make the first-run flow honest about what it is asking ([#272](https://github.com/thedavidweng/OpenKara/issues/272)) ([a5bda41](https://github.com/thedavidweng/OpenKara/commit/a5bda412090c0336ee65e3d5ece8f297a8262377)) - **shell:** isolate ObjC exceptions in the macOS window shell bridge ([#265](https://github.com/thedavidweng/OpenKara/issues/265)) ([3b2b4b0](https://github.com/thedavidweng/OpenKara/commit/3b2b4b0df84379fe87586e1cb92b8e338a409add)), closes [#261](https://github.com/thedavidweng/OpenKara/issues/261) - **shell:** reveal the main window when the frontend handshake never arrives ([#266](https://github.com/thedavidweng/OpenKara/issues/266)) ([dffb487](https://github.com/thedavidweng/OpenKara/commit/dffb487334481d1ee115da5078163a5eb694c33a)), closes [#260](https://github.com/thedavidweng/OpenKara/issues/260) - **shell:** stop the launch flash and reveal the window only once it can paint ([#239](https://github.com/thedavidweng/OpenKara/issues/239)) ([#242](https://github.com/thedavidweng/OpenKara/issues/242)) ([fc280cd](https://github.com/thedavidweng/OpenKara/commit/fc280cd04d89c4a38c60da5bf607195e16352531)) - **standards:** apply product quality baselines across the codebase ([#296](https://github.com/thedavidweng/OpenKara/issues/296)) ([1977cc6](https://github.com/thedavidweng/OpenKara/commit/1977cc61e2f94748c2e4327f4322c80bf6f94fd2)) - **ui:** stop painting the same separation progress twice ([#285](https://github.com/thedavidweng/OpenKara/issues/285)) ([11f95d4](https://github.com/thedavidweng/OpenKara/commit/11f95d4902931edd1b1ddeacd540d6e948c0b1af)) ### Performance Improvements - **config:** measured per-target execution-provider defaults ([#170](https://github.com/thedavidweng/OpenKara/issues/170)) ([#199](https://github.com/thedavidweng/OpenKara/issues/199)) ([6ecbdfa](https://github.com/thedavidweng/OpenKara/commit/6ecbdfae54fa8d789e6bbdd1ac51cef3034f0465)) - **library:** serve cover-art thumbnails through the asset protocol ([#271](https://github.com/thedavidweng/OpenKara/issues/271)) ([7cd7c73](https://github.com/thedavidweng/OpenKara/commit/7cd7c73c2bda580c90b6c00dffe591d5b6a7244e)) - **runtime:** size intra-op threads to performance cores on Apple Silicon ([#170](https://github.com/thedavidweng/OpenKara/issues/170)) ([#256](https://github.com/thedavidweng/OpenKara/issues/256)) ([316ef50](https://github.com/thedavidweng/OpenKara/commit/316ef50ae0bd0143a1456f140b10118076fa3efc)) - **separator:** bounded-memory streaming separation with OLA ring buffers ([#176](https://github.com/thedavidweng/OpenKara/issues/176)) ([c3eebe1](https://github.com/thedavidweng/OpenKara/commit/c3eebe1338e3ac859d7737d07b7abc916266b9ad)) - **separator:** fixed per-chunk working memory for the spectral session ([#172](https://github.com/thedavidweng/OpenKara/issues/172) PR 3) ([#194](https://github.com/thedavidweng/OpenKara/issues/194)) ([9f742cc](https://github.com/thedavidweng/OpenKara/commit/9f742cc4c9439e42496b0e9b5f6700e14550fce0)) ## [0.9.1] - 2026-07-22 ### 🐛 Bug Fixes - **scripts**: Copy .nupkg to .zip stub for Expand-Archive on Windows