e999a8f38b
fix(voices): keep per-model speaker embeddings with their voice package
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-11 05:40:45 +02:00
e52a73c868
fix(tts): custom engine availability follows health, not the library voice list
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-11 05:18:52 +02:00
8c70f06da8
Release v1.61.0
Test and SonarQube / quality (push) Waiting to run
2026-10-11 04:44:31 +02:00
0551b6651f
feat(voices): redesigned My Voices list, working copy, engine-aware TTS availability
...
My Voices
- Top bar with search, filter toggle (active-count badge), synth-source drawer, group and table buttons;
filters/sort in a collapsible labelled panel; one-line sort header with select-all/none checkbox
- Groups chip list is a collapsed accordion; bottom bar is Refresh/Sync/Import plus one Actions (N) menu
(Edit / Audio / Share / Danger), disabled until voices are checked; touch targets stay 44px
- Copy selected works again (copyText was no longer exported), shows "N voice names copied to clipboard"
and falls back to a copy dialog when the async clipboard is unavailable
TTS / engines
- Health probe works for /v1 card URLs and, behind a LiteLLM gateway, checks the selected model's own
upstream so stopped containers are not reported as available
- Unhiding a voice publishes a missing entry to the engine's voices.json (no more silent default-voice fallback)
- Status-bar TTS picker also drives the My Voices and STT-test selectors; Use as TTS refreshes the status bar
Includes the engine connect/disconnect, custom TTS, STT footer and magazine auth work that was already
in the working tree, with their tests.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-11 04:44:27 +02:00
b365894e44
fix(sonar): remove duplicate characters in regex classes (javascript:S5869)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 13:33:25 +02:00
c16590709b
fix(sonar): drop redundant data = null assignment (javascript:S4165)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 13:31:47 +02:00
4ba43f2b75
fix(qa): sonar auto loop rebuilds the bundle after fixer commits
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 13:31:12 +02:00
7df275b378
fix(sonar): share status setter between LLM and OCR panels (javascript:S4144)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 13:11:58 +02:00
544db8883c
fix(sonar): sort rotated voice list in separate statement (javascript:S4043)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 13:10:50 +02:00
32aac96c9a
fix(sonar): remove unused byId map in cast spans (javascript:S4030)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 13:09:40 +02:00
39469ced2b
fix(sonar): split mixed-type sort value in perf history (javascript:S3800)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 13:08:54 +02:00
bf4a71a61a
fix(sonar): stop reassigning loop counter in quote splitter (javascript:S2310)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 13:00:27 +02:00
8d61f22ba4
fix(sonar): merge identical branches in segment merge (javascript:S1871)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 12:59:44 +02:00
4f8a5c6e15
fix(sonar): drop useless assignments (javascript:S1854)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 12:58:35 +02:00
776c5cba4c
feat(qa): automatic sonar-fixer loop (file, deliver, verify, repeat) with safety stops
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 12:57:45 +02:00
8f856c8f8b
fix(sonar): move default out of runPool parameter list (javascript:S1788)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 12:00:33 +02:00
e81ebbc45b
fix(sonar): extract assignments from expressions (javascript:S1121)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 11:59:52 +02:00
bab9b50643
feat(qa): sonar triage --no-webhook (file issues now, deliver them with --drain)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 11:58:53 +02:00
69c33526f4
fix(qa): run the container tests on a writable copy and add node to the test image
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 11:58:13 +02:00
456b64f5b7
feat(qa): run python tests in a throwaway container built from the app image
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 11:56:42 +02:00
9d93b4fb89
fix(qa): run Python tests with an interpreter that has the project dependencies
...
Agents see /usr/bin/python3 first, which has no fastapi.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 11:51:33 +02:00
c0e892aaf8
fix(sonar): use np.nonzero for single-argument np.where (python:S6729)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 11:41:35 +02:00
9a542cd198
fix(sonar): document empty _Sink.flush (python:S1186)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 11:40:25 +02:00
40c3db6831
test(rehearser): pin ACT/SCENE heading forms (digits, roman, words) and the empty-numeral regression
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 11:37:16 +02:00
ccbd834eea
feat(qa): sonar triage --drain with delivery check and one resend
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 11:31:55 +02:00
sparky
402fd52f40
fix(sonar): drop redundant optional group in audio-link regex (python:S5842)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 11:31:20 +02:00
1b3fff1e0d
fix(sonar): ACT/SCENE heading regex no longer matches empty numeral (javascript:S5842)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 11:30:12 +02:00
dda8ffa133
chore(build): rebuild static bundle after sonar JS fixes
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 05:12:42 +02:00
2328852aab
feat(qa): refactor lane for cognitive-complexity findings (own webhook, one issue per function)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 04:19:27 +02:00
c2048ebc45
docs(qa): sonar-refactorer agent for cognitive-complexity findings
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 04:13:37 +02:00
ba774f219d
fix(sonar): avoid identical assertion operands (python:S5863)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 04:12:26 +02:00
68f0dd824e
feat(qa): --exclude-rules for sonar triage
...
Also suppress groups whose keys sit in closed fixed-local issues (Sonar is not re-scanned between batches).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 04:11:44 +02:00
2914f7ebe3
fix(sonar): drop redundant regex alternatives (python:S5855)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 04:07:57 +02:00
2cd14c9ddf
fix(sonar): wrap backendVoiceId in arrow for map (javascript:S7727)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 04:06:35 +02:00
9baa8ad5ba
docs(qa): sonar-fixer moves finished multica issues to Done
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 04:05:12 +02:00
1963cdc0f4
docs(qa): sonar-fixer reports and closes the GitHub issue
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 04:00:06 +02:00
b60586a559
fix(sonar): compare speed with math.isclose instead of float equality (python:S1244)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 03:51:32 +02:00
11ab1ff677
fix(sonar): use replaceAll string instead of control-char regex (javascript:S6324)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 03:51:04 +02:00
1d65a4df7c
fix(sonar): remove unused variables and commented-out code
...
Removes 43 small Sonar findings (unused locals, dead helpers, a misread comment); behaviour unchanged. CHANGELOG entry was already swept into 9f78a15 .
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 03:42:44 +02:00
a60b7e555d
fix(sonar): add localeCompare compare function to bare sort() calls (javascript:S2871)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 03:32:10 +02:00
9f78a1552f
feat(qa): fire a multica webhook autopilot for each sonar GitHub issue
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 03:28:41 +02:00
557983d247
feat(qa): file sonar issues most valuable first (bugs before style findings)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 03:24:36 +02:00
220f5fc1ec
feat(qa): group sonar issues per rule
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 03:03:23 +02:00
98a87077d9
feat(qa): sonar triage loop (dry-run default) and multica agent hookup
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 02:47:21 +02:00
bae588375f
fix(conversation): size metrics charts to the column so text is legible
...
Charts use the rendered width as viewBox (re-rendered on resize), 11px text,
two x ticks, larger dot for single points. Includes docs/changelog for the
mic colours, Turn history fix and chart size.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 02:14:55 +02:00
caee289bcc
fix(conversation): keep Turn history rows visible in the Latency column
...
The rows were added to the DOM but the overflow:auto list was shrunk to zero
height by the flex column panel once the charts filled it. Adds tests for
#n + time rows, error rows and stats arriving after done.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 02:14:55 +02:00
a3ba3581fe
feat(conversation): red/blue mic button with aria-pressed state
...
Red while the mic is hot (live or recording), blue when off; label toggles
Stop/Start microphone (DE+EN); pulse only without reduced motion; reset to
blue when microphone access fails.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 02:14:49 +02:00
0a30b00d7f
refactor(conversation): show metrics in the latency column instead of a second tab
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 01:30:27 +02:00
e7a25d80ff
feat(conversation): metrics view with TTFB charts and token usage
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 00:48:32 +02:00
60eb108360
fix(ui): surface silently swallowed save and fetch errors
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 00:44:31 +02:00