tts-voice-creator-clone-and.../tests
mARTin-B78 736aeaaeac feat: add magazine projects with layout-aware article extraction
Magazines break the audiobook pipeline's assumptions: several unrelated
articles share a page, columns run in parallel, adverts and sidebars
interrupt body copy, and a feature routinely jumps twenty pages to its
tail. Narrating page-by-page walks out of an article mid-sentence and
into an advert, so the canonical object is the article, not the page.

core/magazine.py reconstructs articles from a flat PDF: PyMuPDF extracts
blocks with bboxes and font metrics, tesseract supplies a TSV fallback so
scanned pages join the same column grouping, blocks are classified and
ordered column-major, and articles are anchored by the parsed table of
contents with "continued on page N" tails linked back.

routes/magazine.py adds 13 endpoints. Ingestion is a restart-safe
background job. Nothing is narrated until a human approves the
boundaries; podcast generation refuses unapproved articles.

Podcast mode renders an approved article as a 2-3 host discussion using
the configured LLM and voices the user picks, alongside narration rather
than instead of it.

Verified end-to-end over HTTP on a synthetic 8-page issue: the feature
came back as pages [3, 8] with its jump tail absorbed and the advert page
excluded, and an image-only rendering recovered all 47 blocks via OCR.
44 new tests; full suite 90 passing.

The Studio UI is not built — this is reachable only via the API.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-05 12:46:54 +02:00
..
fixtures test: add book two attribution fixture 2026-09-04 09:18:41 +02:00
bundle.spec.js Release v1.6.0: a11y (WCAG AA), i18n (DE), PWA, perf, tests, Cast UX 2026-06-03 14:23:35 +02:00
characters.spec.js perf: lazy-load section feature modules 2026-09-04 10:23:20 +02:00
constrained.spec.js test: measure constrained character workloads 2026-09-04 10:34:27 +02:00
i18n.spec.js Stabilize browser smoke tests for current UI 2026-08-19 16:59:39 +02:00
lazy-loading.spec.js fix: preserve audiobook dialogue boundaries 2026-09-04 15:36:26 +02:00
rehearser.spec.js refactor: extract rehearser voice matching 2026-09-04 11:47:51 +02:00
smoke.spec.js feat: expand resource diagnostics 2026-09-04 10:42:08 +02:00
test_conversation.py test: lock visual identity prompts 2026-09-04 15:30:39 +02:00
test_magazine_routes.py feat: add magazine projects with layout-aware article extraction 2026-09-05 12:46:54 +02:00
test_magazine.py feat: add magazine projects with layout-aware article extraction 2026-09-05 12:46:54 +02:00
test_provider_health.py refactor: centralize provider health probes 2026-09-04 10:25:55 +02:00
test_security.py feat: distinguish provider configuration and health 2026-09-04 11:35:52 +02:00