This website requires JavaScript.
56d2a9daef
Release v1.61.1
main
v1.61.1
mARTin-B78
2026-10-11 05:44:24 +0200
e999a8f38b
fix(voices): keep per-model speaker embeddings with their voice package
mARTin-B78
2026-10-11 05:40:45 +0200
e52a73c868
fix(tts): custom engine availability follows health, not the library voice list
mARTin-B78
2026-10-11 05:18:52 +0200
8c70f06da8
Release v1.61.0
v1.61.0
mARTin-B78
2026-10-11 04:44:31 +0200
0551b6651f
feat(voices): redesigned My Voices list, working copy, engine-aware TTS availability
mARTin-B78
2026-10-11 04:44:27 +0200
b365894e44
fix(sonar): remove duplicate characters in regex classes (javascript:S5869)
mARTin-B78
2026-10-06 13:33:25 +0200
c16590709b
fix(sonar): drop redundant data = null assignment (javascript:S4165)
mARTin-B78
2026-10-06 13:31:47 +0200
4ba43f2b75
fix(qa): sonar auto loop rebuilds the bundle after fixer commits
mARTin-B78
2026-10-06 13:31:12 +0200
7df275b378
fix(sonar): share status setter between LLM and OCR panels (javascript:S4144)
mARTin-B78
2026-10-06 13:11:58 +0200
544db8883c
fix(sonar): sort rotated voice list in separate statement (javascript:S4043)
mARTin-B78
2026-10-06 13:10:50 +0200
32aac96c9a
fix(sonar): remove unused byId map in cast spans (javascript:S4030)
mARTin-B78
2026-10-06 13:09:40 +0200
39469ced2b
fix(sonar): split mixed-type sort value in perf history (javascript:S3800)
mARTin-B78
2026-10-06 13:08:54 +0200
bf4a71a61a
fix(sonar): stop reassigning loop counter in quote splitter (javascript:S2310)
mARTin-B78
2026-10-06 13:00:27 +0200
8d61f22ba4
fix(sonar): merge identical branches in segment merge (javascript:S1871)
mARTin-B78
2026-10-06 12:59:44 +0200
4f8a5c6e15
fix(sonar): drop useless assignments (javascript:S1854)
mARTin-B78
2026-10-06 12:58:35 +0200
776c5cba4c
feat(qa): automatic sonar-fixer loop (file, deliver, verify, repeat) with safety stops
mARTin-B78
2026-10-06 12:57:45 +0200
8f856c8f8b
fix(sonar): move default out of runPool parameter list (javascript:S1788)
mARTin-B78
2026-10-06 12:00:33 +0200
e81ebbc45b
fix(sonar): extract assignments from expressions (javascript:S1121)
mARTin-B78
2026-10-06 11:59:52 +0200
bab9b50643
feat(qa): sonar triage --no-webhook (file issues now, deliver them with --drain)
mARTin-B78
2026-10-06 11:58:53 +0200
69c33526f4
fix(qa): run the container tests on a writable copy and add node to the test image
mARTin-B78
2026-10-06 11:58:13 +0200
456b64f5b7
feat(qa): run python tests in a throwaway container built from the app image
mARTin-B78
2026-10-06 11:56:42 +0200
9d93b4fb89
fix(qa): run Python tests with an interpreter that has the project dependencies
mARTin-B78
2026-10-06 11:51:33 +0200
c0e892aaf8
fix(sonar): use np.nonzero for single-argument np.where (python:S6729)
mARTin-B78
2026-10-06 11:41:35 +0200
9a542cd198
fix(sonar): document empty _Sink.flush (python:S1186)
mARTin-B78
2026-10-06 11:40:25 +0200
40c3db6831
test(rehearser): pin ACT/SCENE heading forms (digits, roman, words) and the empty-numeral regression
mARTin-B78
2026-10-06 11:37:16 +0200
ccbd834eea
feat(qa): sonar triage --drain with delivery check and one resend
mARTin-B78
2026-10-06 11:31:55 +0200
402fd52f40
fix(sonar): drop redundant optional group in audio-link regex (python:S5842)
sparky
2026-10-06 11:31:20 +0200
1b3fff1e0d
fix(sonar): ACT/SCENE heading regex no longer matches empty numeral (javascript:S5842)
mARTin-B78
2026-10-06 11:30:12 +0200
dda8ffa133
chore(build): rebuild static bundle after sonar JS fixes
mARTin-B78
2026-10-06 05:12:42 +0200
2328852aab
feat(qa): refactor lane for cognitive-complexity findings (own webhook, one issue per function)
mARTin-B78
2026-10-06 04:19:27 +0200
c2048ebc45
docs(qa): sonar-refactorer agent for cognitive-complexity findings
mARTin-B78
2026-10-06 04:13:37 +0200
ba774f219d
fix(sonar): avoid identical assertion operands (python:S5863)
mARTin-B78
2026-10-06 04:12:26 +0200
68f0dd824e
feat(qa): --exclude-rules for sonar triage
mARTin-B78
2026-10-06 04:11:44 +0200
2914f7ebe3
fix(sonar): drop redundant regex alternatives (python:S5855)
mARTin-B78
2026-10-06 04:07:57 +0200
2cd14c9ddf
fix(sonar): wrap backendVoiceId in arrow for map (javascript:S7727)
mARTin-B78
2026-10-06 04:06:35 +0200
9baa8ad5ba
docs(qa): sonar-fixer moves finished multica issues to Done
mARTin-B78
2026-10-06 04:05:12 +0200
1963cdc0f4
docs(qa): sonar-fixer reports and closes the GitHub issue
mARTin-B78
2026-10-06 04:00:06 +0200
b60586a559
fix(sonar): compare speed with math.isclose instead of float equality (python:S1244)
mARTin-B78
2026-10-06 03:51:32 +0200
11ab1ff677
fix(sonar): use replaceAll string instead of control-char regex (javascript:S6324)
mARTin-B78
2026-10-06 03:51:04 +0200
1d65a4df7c
fix(sonar): remove unused variables and commented-out code
mARTin-B78
2026-10-06 03:42:44 +0200
a60b7e555d
fix(sonar): add localeCompare compare function to bare sort() calls (javascript:S2871)
mARTin-B78
2026-10-06 03:32:10 +0200
9f78a1552f
feat(qa): fire a multica webhook autopilot for each sonar GitHub issue
mARTin-B78
2026-10-06 03:28:41 +0200
557983d247
feat(qa): file sonar issues most valuable first (bugs before style findings)
mARTin-B78
2026-10-06 03:24:36 +0200
220f5fc1ec
feat(qa): group sonar issues per rule
mARTin-B78
2026-10-06 03:03:23 +0200
98a87077d9
feat(qa): sonar triage loop (dry-run default) and multica agent hookup
mARTin-B78
2026-10-06 02:47:21 +0200
bae588375f
fix(conversation): size metrics charts to the column so text is legible
mARTin-B78
2026-10-06 02:14:55 +0200
caee289bcc
fix(conversation): keep Turn history rows visible in the Latency column
mARTin-B78
2026-10-06 02:14:55 +0200
a3ba3581fe
feat(conversation): red/blue mic button with aria-pressed state
mARTin-B78
2026-10-06 02:14:40 +0200
0a30b00d7f
refactor(conversation): show metrics in the latency column instead of a second tab
mARTin-B78
2026-10-06 01:30:27 +0200
e7a25d80ff
feat(conversation): metrics view with TTFB charts and token usage
mARTin-B78
2026-10-06 00:48:32 +0200
60eb108360
fix(ui): surface silently swallowed save and fetch errors
mARTin-B78
2026-10-06 00:44:31 +0200
2479617964
fix: run blocking requests/sleep in async routes via to_thread
mARTin-B78
2026-10-06 00:40:34 +0200
dea6286775
feat(conversation): pick the LLM endpoint from the configured language models
mARTin-B78
2026-10-06 00:33:30 +0200
8ce8e791b2
feat(conversation): thinking on/off switch
mARTin-B78
2026-10-06 00:21:11 +0200
e8c0df027e
test: fail any spec that would write to the live API
mARTin-B78
2026-10-04 21:00:25 +0200
a2f9c12b2d
Release v1.60.0
v1.60.0
mARTin-B78
2026-10-04 20:12:46 +0200
38f88958c6
fix(magazine): mock /api/settings in magazine specs and await lazy module in deep-link spec
mARTin-B78
2026-10-04 20:06:52 +0200
c7d5134734
chore(qa): isolated per-run python env and optional coverage for sonar
mARTin-B78
2026-10-04 19:29:37 +0200
aa92ed30b3
refactor(installer): extract run_command helper to cut cognitive complexity
mARTin-B78
2026-10-04 19:28:37 +0200
8f226dce99
chore(security): stop tracking two scratch scripts flagged by the secret scan
mARTin-B78
2026-10-04 19:03:18 +0200
3317bfd063
test: make spawn helper test independent of leaked tasks
mARTin-B78
2026-10-04 19:00:06 +0200
2f4c8529e9
fix(i18n): remove duplicate keys and dead frontend branches
mARTin-B78
2026-10-04 18:58:14 +0200
668681dd24
fix(security): private temp dir for docker installer, https for OMDb, md5 non-security flag
mARTin-B78
2026-10-04 18:57:34 +0200
4f30ee5c0d
fix: keep references to background asyncio tasks
mARTin-B78
2026-10-04 18:56:39 +0200
03529a5403
chore(sonar): use the real project key, exclude vendored libs, raise JS analyzer heap
mARTin-B78
2026-10-04 18:54:46 +0200
b7cfe056a3
fix(voices): rename archetype say helper to avoid global collision
mARTin-B78
2026-10-04 18:38:44 +0200
2a06d0a488
fix(export): ship untagged file when provenance tagging fails
mARTin-B78
2026-10-04 18:38:42 +0200
1fd79866f8
chore(qa): central npm run qa command with optional SonarQube stage
mARTin-B78
2026-10-04 18:36:48 +0200
8fed5eeda8
fix(voices): archetype language filter accepts ISO codes
mARTin-B78
2026-10-04 18:29:28 +0200
5dbe8c8998
docs(voices): archetype gallery manual and architecture
mARTin-B78
2026-10-04 18:23:44 +0200
b33559884c
feat(voices): archetype gallery UI
mARTin-B78
2026-10-04 18:23:14 +0200
281869709b
fix(voices): drop the Source unknown badge from list rows
mARTin-B78
2026-10-04 18:22:41 +0200
fece9122d1
feat(voices): archetype catalog and API
mARTin-B78
2026-10-04 18:10:35 +0200
c0a5d54763
fix(voices): robust LibriVox search and expose export_provenance_default
mARTin-B78
2026-10-04 18:07:22 +0200
7a86e51faa
test(audiobook): cover emotion to instruct path and document audiobook emotions
mARTin-B78
2026-10-04 17:56:54 +0200
772c43d7f0
feat(voices): LibriVox and Wikimedia Commons voice sources
mARTin-B78
2026-10-04 17:42:36 +0200
9b169037a4
feat(tts): inline tags in generate, audiobook and magazine paths
mARTin-B78
2026-10-04 17:35:18 +0200
5a7c73ea42
feat(export): provenance tags and optional disclosure for exported audio
mARTin-B78
2026-10-04 17:02:41 +0200
8b51487a64
feat(tts): inline pause, spell and speed tags
mARTin-B78
2026-10-04 16:52:23 +0200
91843e95e6
feat(voices): optional vocal isolation for URL imports
mARTin-B78
2026-10-04 16:50:14 +0200
e0daafd4e1
feat(voices): export and import voice bundles
mARTin-B78
2026-10-04 16:42:28 +0200
781bf6e7f2
feat(voices): consent and provenance field per voice
mARTin-B78
2026-10-04 16:39:32 +0200
b36423457b
feat(design): auto-pick the best seed by scored candidates
mARTin-B78
2026-10-04 16:37:58 +0200
a0cd7b867f
feat(voices): show audio problems in the voice library
mARTin-B78
2026-10-04 16:35:01 +0200
67537310d0
feat(design): attribute chips for voice-design prompts
mARTin-B78
2026-10-04 16:34:06 +0200
19283a53a4
feat(voices): timestamped audio problem flags in voice health
mARTin-B78
2026-10-04 16:10:56 +0200
2594a236c4
feat(magazine): journalist/guest voices for c't-style interviews
mARTin-B78
2026-10-04 15:25:51 +0200
b90c9ce51a
chore(release): v1.59.0
v1.59.0
mARTin-B78
2026-10-04 00:41:57 +0200
a8177711f4
feat(characters): global cast view in the sidebar and per-book characters inside Studio
mARTin-B78
2026-10-03 22:29:42 +0200
e1aca0ba34
feat(magazine): exclude entries from the untitled-page cleanup
mARTin-B78
2026-10-03 22:05:49 +0200
a60a5a92ca
chore(release): v1.58.0
v1.58.0
mARTin-B78
2026-10-03 20:21:12 +0200
03ebd9ba35
feat(magazine): show page labels, display titles and merge suggestions
mARTin-B78
2026-10-03 19:22:55 +0200
42bb556db9
fix(magazine): approving a review page keeps all blocks of a multi-page article
mARTin-B78
2026-10-03 14:48:37 +0200
572fae892d
fix(magazine): fit driving-mode text inside the frame and offer less text
mARTin-B78
2026-10-03 14:46:31 +0200
48af2b3ccb
feat(magazine): detect continuation pages and suggest titles for untitled articles
mARTin-B78
2026-10-03 14:36:29 +0200
7eabdf0e43
feat(characters): distinct deterministic face profiles per character
mARTin-B78
2026-10-03 14:25:56 +0200
488e57e609
feat(magazine): clearer driving-mode menu with switches and theme selector
mARTin-B78
2026-10-03 14:24:05 +0200
1f812d2faf
fix(characters): merge profiles only on real names, keep other cast names, reasoning and foreign quotes out of a character
mARTin-B78
2026-10-03 14:09:53 +0200
04f791e1f5
feat(characters): translate character info to English before image prompts
mARTin-B78
2026-10-03 12:01:42 +0200
4fd21b1d1c
fix(characters): base dwarf body lock and species text on the character's own species assertion
mARTin-B78
2026-10-03 11:09:19 +0200