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
2479617964
fix: run blocking requests/sleep in async routes via to_thread
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 00:40:34 +02:00
dea6286775
feat(conversation): pick the LLM endpoint from the configured language models
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 00:33:30 +02:00
8ce8e791b2
feat(conversation): thinking on/off switch
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 00:21:11 +02:00
e8c0df027e
test: fail any spec that would write to the live API
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 21:00:25 +02:00
a2f9c12b2d
Release v1.60.0
Test and SonarQube / quality (push) Has been cancelled
2026-10-04 20:12:46 +02:00
38f88958c6
fix(magazine): mock /api/settings in magazine specs and await lazy module in deep-link spec
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 20:06:52 +02:00
c7d5134734
chore(qa): isolated per-run python env and optional coverage for sonar
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 19:29:37 +02:00
aa92ed30b3
refactor(installer): extract run_command helper to cut cognitive complexity
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 19:28:37 +02:00
8f226dce99
chore(security): stop tracking two scratch scripts flagged by the secret scan
...
Files stay on disk. Keys they may hold are still in git history: rotate them.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 19:03:18 +02:00
3317bfd063
test: make spawn helper test independent of leaked tasks
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 19:00:06 +02:00
2f4c8529e9
fix(i18n): remove duplicate keys and dead frontend branches
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 18:58:14 +02:00
668681dd24
fix(security): private temp dir for docker installer, https for OMDb, md5 non-security flag
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 18:57:34 +02:00
4f30ee5c0d
fix: keep references to background asyncio tasks
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 18:57:20 +02:00
03529a5403
chore(sonar): use the real project key, exclude vendored libs, raise JS analyzer heap
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 18:54:46 +02:00
b7cfe056a3
fix(voices): rename archetype say helper to avoid global collision
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 18:38:44 +02:00
2a06d0a488
fix(export): ship untagged file when provenance tagging fails
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 18:38:42 +02:00
1fd79866f8
chore(qa): central npm run qa command with optional SonarQube stage
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 18:36:48 +02:00
8fed5eeda8
fix(voices): archetype language filter accepts ISO codes
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 18:29:28 +02:00
5dbe8c8998
docs(voices): archetype gallery manual and architecture
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 18:23:44 +02:00
b33559884c
feat(voices): archetype gallery UI
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 18:23:14 +02:00
281869709b
fix(voices): drop the Source unknown badge from list rows
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 18:22:41 +02:00
fece9122d1
feat(voices): archetype catalog and API
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 18:10:35 +02:00
c0a5d54763
fix(voices): robust LibriVox search and expose export_provenance_default
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 18:07:22 +02:00
7a86e51faa
test(audiobook): cover emotion to instruct path and document audiobook emotions
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 17:56:54 +02:00
772c43d7f0
feat(voices): LibriVox and Wikimedia Commons voice sources
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 17:42:36 +02:00
9b169037a4
feat(tts): inline tags in generate, audiobook and magazine paths
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 17:35:18 +02:00
5a7c73ea42
feat(export): provenance tags and optional disclosure for exported audio
...
ID3 provenance tags (synthetic speech, generator, version, date, opt-in
voice name) on magazine MP3/ZIP/EPUB exports via a stream-copied temp copy;
verify endpoint and CLI; AudioSeal tier is a documented stub.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 17:02:41 +02:00
8b51487a64
feat(tts): inline pause, spell and speed tags
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 16:52:23 +02:00
91843e95e6
feat(voices): optional vocal isolation for URL imports
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 16:50:14 +02:00
e0daafd4e1
feat(voices): export and import voice bundles
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 16:42:28 +02:00