Commit Graph

591 Commits

Author SHA1 Message Date
084a99af2c fix(characters): isolate image generation per character
Bind the consistent-image Idempotency-Key to the character request so a reused
key cannot return another character's job; add back-to-back and concurrent
two-character regression tests.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 22:34:07 +02:00
4d4dc334e7 fix(characters): keep rating stars visible beside the sticky name column on phones
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 22:31:13 +02:00
4d8d71a046 feat(magazine): driving mode display menu, article index sheet, speed beside the slider
Replace the three-icon view switch with one flyout menu (views, show text/pictures, minimize), add an Index sheet listing all articles with durations, and move playback speed into the slider row.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 17:51:13 +02:00
adc1fab3f8 feat(magazine): driving mode as top bar, flexible content and pinned controls dock with picture, lyrics and compact views
Controls can no longer fall off screen (320x568 up to tablets and landscape), share no longer overlaps the title.
Picture view with zoom/pan, Spotify-style whole-text lyrics with follow/back-to-current, minimize to current line,
persisted view choice, 44px segmented control.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 16:54:21 +02:00
f88fefcee4 feat(magazine): driving mode shows three sentence lines and syncs per frame
Previous/current/next sentence in a fixed-height box with a fade, tap to jump. The
highlight is a binary search over sentence starts on audio.currentTime every animation
frame, with forced resync on seeking, seeked, ratechange, play, pause and visibility; the
marked word uses the sentence's own span. Playwright covers seeks, 1.5x/2x, rapid seeks.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 14:57:39 +02:00
63034b07eb fix(magazine): record where speech starts in each sentence so the highlight is not early
The TTS pads every sentence with 0.4-0.9 s of silence; boundaries are exact but the
highlight lit up that long before the words. Record per-sentence speech onsets at render
time, measure them from the decoded MP3 for older audio, and expose them as 'speech' in
/timings.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 14:57:30 +02:00
904d6a432c fix(characters): accessory pictures show only props, no body parts
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 12:33:33 +02:00
f5b5993e4d feat(magazine): share an article or magazine as a deep link into driving mode
Share buttons (toolbar, playlist, driving mode) build #s-magazine?doc=..&article=..&mode=drive; opening it routes to the article and starts driving mode with a Tap-to-play prompt if autoplay is blocked. Ids are validated strictly; access is unchanged.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 12:18:05 +02:00
270b8d56ca fix(magazine): driving-mode text and picture follow the recorded sentence times
Adds GET .../articles/{id}/timings (exact per-sentence times via plan_sentences); the player uses them, falls back to the length estimate, and gives captions no time slot.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 11:51:58 +02:00
c8b004c74a fix(magazine): keep player transport buttons round on narrow screens
Fixed 1:1 sizes scaled with clamp(), no flex-shrink/stretch; overlay no longer clips when content is taller than the viewport.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 11:09:42 +02:00
93c9d48327 chore: ignore the local TODO.md
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-10-02 09:02:48 +02:00
d4099e45c6 fix(characters): remove the gutters between the concept sheet panels
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 08:12:15 +02:00
1a527c3b41 fix(characters): ground the concept sheet's lower pictures in the character and the book's world
The story moment was a ~5,400-character prompt whose period rules sat at
the end, out of reach of the 4-step model; it opened with "ears clearly
visible" and asked for studio photography by a photographer with a real
actor, and drew a modern man with headphones and a camera in a garden,
captioned with pseudo-text. The prop tile was a stock catalog photo. The
negative prompts were inert because those samplers run at cfg 1.0.

Story moment and signature-item prompts are now short, world-first and
positive-only: The Dark Eye, 900-1300 AD and the book profile's setting
(never the title), the same identity, appearance and costume as the
turnaround, the book moment, a period background and a hand-made,
unmarked world; the item is the character's own, in the craftsmanship
and colours of their costume, on a table in a medieval room. Text and
modern objects are added to the scene and prop negatives.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 08:00:53 +02:00
6d1c6c1b88 fix(characters): remove divider lines from the concept sheet
The sheet composer drew light lines between the three poses and between
the top and bottom rows, cutting through capes and swords.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 07:49:19 +02:00
b50855ea2e test(magazine): use a fixed fixture for the page-159 delete-picture test
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 06:34:14 +02:00
0244fceb55 feat(magazine): filter the page grid by status from the legend
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 06:34:14 +02:00
319d4401da Release v1.56.3
Some checks failed
Test and SonarQube / quality (push) Has been cancelled
2026-09-30 18:44:52 +02:00
80ec22b752 fix(magazine): deleting a picture removes both of its records; say clearly while a turn is being read
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 18:35:20 +02:00
916d19d22f Release v1.56.2
Some checks are pending
Test and SonarQube / quality (push) Waiting to run
2026-09-30 15:01:34 +02:00
884bbf33aa fix(magazine): a turned page shows at once (versioned picture URLs), turns are visible and undoable, one turn at a time
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 13:35:25 +02:00
28d6439604 fix(magazine): unbreakable text can no longer collapse the review; endless repeated tokens are OCR noise
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 13:13:40 +02:00
81e2c6b4ef Release v1.56.1
Some checks are pending
Test and SonarQube / quality (push) Waiting to run
2026-09-30 12:49:30 +02:00
8da797751b fix(magazine): draw and edit panels are mounted on body so the sticky bars cannot cover them
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 12:48:27 +02:00
130fd273c6 fix(magazine): read a turned page through a ladder (turned, original with carried boxes, tesseract)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 12:31:44 +02:00
6fdf9fbc38 feat(magazine): turn a page scanned sideways or upside down and read it again
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 12:13:13 +02:00
119d3ba3ae fix(magazine): correct flagged words in place; whole-text editor keeps the paragraph's look and underlines
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 11:54:50 +02:00
dd5ddc5842 Release v1.56.0
Some checks are pending
Test and SonarQube / quality (push) Waiting to run
2026-09-30 11:33:30 +02:00
9ad881ada8 feat(magazine): manage OPDS catalogues in the app, env-based login, result paging
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 11:03:03 +02:00
7e9be98709 feat(magazine): page overview shows status, article count, page flow and what to do next
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 10:59:08 +02:00
85c5b8427a feat(magazine): hands-free listening (Media Session, wake lock); fix Listen not starting audio
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 10:50:41 +02:00
15f59428ca docs: put the order-panel note next to the reading-order text
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 10:46:35 +02:00
2318e8899e docs: file the new changelog entries under Unreleased, not the released 1.55.0
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 10:46:16 +02:00
60654bf867 chore(docker): allow-list .dockerignore; rebuilt image includes mutagen
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 10:45:48 +02:00
e241821325 fix(magazine): keep the Order by clicking controls on screen in a floating panel
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 10:45:48 +02:00
268ed391a3 feat(magazine): EPUB 3 Media Overlay export with measured sentence timings; tolerate missing mutagen
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 10:33:08 +02:00
4a20a12f66 feat(magazine): show sidebars in the reading view as labelled, never-narrated asides
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 10:26:27 +02:00
30b80fcbf7 feat(magazine): mark hand-edited text, show a word diff against the recognised text, restore it
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 10:24:27 +02:00
0f4b28ba14 feat(magazine): link a tail to its head from 'continued from page N'
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 10:20:35 +02:00
0005ae0ebd feat(magazine): import a magazine from PNG/JPEG page images
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 10:19:14 +02:00
0d3178f733 docs: general-purpose OCR porting brief for letters, papers and forms
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 10:10:59 +02:00
13f9ae6194 Release v1.55.0
Some checks are pending
Test and SonarQube / quality (push) Waiting to run
2026-09-29 21:38:32 +02:00
6faaa349d5 docs: OCR porting brief; test: current prompt version fixture, known phone-width issue
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-29 21:38:28 +02:00
3f4dfb70a4 fix(characters): harder gender/period locks in scene prompts, no unchecked sheet overwrites a validated one, weapon wording only for armed characters, poll survives 5xx blips
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-29 21:20:56 +02:00
35e0a64665 feat: OCR benchmark harness and first candidate results (docling, PaddleOCR)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-29 17:55:48 +02:00
c3c5c55f17 feat(magazine): find and import issues from the Internet Archive and OPDS catalogues
Also reuses the existing magFmtClock for the contents list (the duplicate
tripped the frontend collision gate).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-29 17:35:08 +02:00
834146de30 feat(magazine): synthesis state, MP3 length and inline play in the contents list
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-29 17:24:13 +02:00
4d7434f9af fix: explain why designed-voice benchmarks fail and stop batches on an unreachable service
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-29 16:03:23 +02:00
f1b12993a1 docs: mark magazine live ingest preview as done
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-29 15:11:26 +02:00
f2c338aa96 docs: add TODO for a general UI/UX simplification pass on settings/config screens
User's own comparison: VoiceStudio's integrations screen is cleaner than
this app's Settings/Engines equivalent (880-line s-llms.html, 31+ fields
all visible at once vs VoiceStudio's collapsed per-category model cards).
Direction: progressive disclosure over one long flat form.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-29 14:41:26 +02:00
b7202e030d docs: add TODO items for VoiceStudio-inspired features the user picked
Projects nav grouping (Audiobooks/Magazines/Script Rehearsals/Video
Dubbing), Video Dubbing itself, Live STT Dictation, an onboarding/setup
wizard, a global command palette + cross-app recent history, and a
curated voice-design preset gallery. Telephony integrations were in the
same gap list but not picked -- left alone.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-29 14:40:15 +02:00