Add v2 step-based book editing UI with preview and pipeline improvements#56
Merged
nicpottier merged 14 commits intomainfrom Feb 17, 2026
Merged
Add v2 step-based book editing UI with preview and pipeline improvements#56nicpottier merged 14 commits intomainfrom
nicpottier merged 14 commits intomainfrom
Conversation
- Step sidebar with colored headers, settings gear, and sub-tab navigation - Extract view: page grid, page detail with classified text/image editing, version picker with explicit save/discard, text type dropdown, prune toggles - Extract settings: split into General/Text Types/Extraction Prompt sub-tabs - Storyboard view: section-level navigation across all pages with rendered HTML in resizable top panel and editable section input data below - API: version-aware node data, prompt routes, page detail with versions
- Sidebar collapses to icons on narrow screens, hover-expands with overlay - Add "ADT Studio" header linking to book index - Add book step with pipeline flow cards and colored connectors - Show book cover + metadata banner on extract page - Settings gear hidden on book landing step
…nd prompt viewers - StoryboardSettings component with General tab (default render strategy picker, section types table with pruning/descriptions/render strategy overrides) and separate Sectioning Prompt / Rendering Prompt tabs with model pickers - Reusable PromptViewer component for prompt template display with model selection - StepSidebar updated with SETTINGS_TABS lookup for extensible per-step settings tabs - Settings route wired up for storyboard step
Expand PageSection from storing partIds (string references) to inline parts with full text group and image data. The LLM still outputs part_ids which are post-processed into SectionPart objects. Unassigned parts are added to the last non-pruned section as pruned. This enables the storyboard UI to display and edit section content directly. Adds Eye/EyeOff toggle buttons on text groups and images to flip isPruned status, with save/discard via the existing version picker pattern. Also adds BookPreviewFrame iframe component, collapsible sidebar, and storyboard split-pane layout with resizable preview.
…e, and fix iframe preview - Add PUT /books/:label/pages/:pageId/rendering endpoint for saving rendering versions - Add updateRendering to frontend API client - Wire up Save button on rendering VersionPicker to save old versions as new - Auto-trigger re-render after saving sectioning changes - Fix iframe preview: load shell once and swap innerHTML to avoid reflow cascade - Defer height measurement until fonts settle to prevent slow collapse - Remove split-pane layout, use single scrollable container with full-width preview - Remove min-h-screen from iframe body, add scrolling="no" and overflow:hidden
Cherry-pick from collapse-nav: hover-expand sidebar, ADT Studio header, book step with pipeline flow cards, and cover image banner on extract page.
… filled step arrows - Add PUT /prompts/:name endpoint for updating prompt templates - Make PromptViewer editable with Liquid syntax highlighting (textarea overlay) - Wire prompt saves to Save & Rerun flow in both ExtractSettings and StoryboardSettings - Add metadata prompt tab to extraction settings - Extract PruneToggle component (eye/eye-off circle toggle) and use in both settings - Add table headers and font-mono keys to text types and section types tables - Replace chevron step connectors with filled arrows on book landing page
…ne steps - Quizzes: editable questions/options/explanations with versioning, simplified settings (pages per quiz + prompt) - Glossary: editable definitions with versioning, simplified settings (prompt only) - Captions: real caption data display with image previews, simplified settings (prompt only) - Translations: text catalog view with language tabs and side-by-side display, settings with language picker + prompt - Text-to-Speech: real TTS data with per-language audio playback, settings with model/voice/format - New API routes: text-catalog, tts (with audio file serving), quiz/glossary PUT endpoints - Consistent header bar pills and VersionPicker pattern across all steps
Backend: step-service (job tracking, SSE), step-runner (all 7 steps), steps routes with sync data clearing, per-book prompt support. Frontend: SSE hook (use-step-run), StepProgressRing, StepRunCard, progress rings in sidebar/book view, StepRunCard in all step views, step-scoped save-and-rerun in all settings with navigation.
Added hasCaptioning field to page list endpoint so the frontend can detect whether image captioning has been run, not just whether pages have images.
…peline improvements - Add Preview step with auto-packaging, iframe display, and cache-busting - Color sidebar step icons based on whether each step has data - Show classified (translated) text on extract page cards instead of raw text - Replace master-status gate with web-rendering check for packaging - Add step-status API endpoint for sidebar icon state - Set no-cache headers on ADT static files - Add concurrency utilities and step-scoped rerun support
- Combine imports and routes from both branches in app.ts - Keep detailed TTS response (per-language grouping) and adopt safeParseLabel helper - Keep all client API methods (text catalog, glossary, quizzes, step status) plus remote additions (presets, global config, export) - Combine stage badge with storyboard/new UI links in book detail page - Use shared LanguagePicker component (remove inline duplicate from books.new) - Fix use-tts hook to match grouped TTS response format - Update pages test for classified text preview
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Test plan
pnpm test— all 481 tests passpnpm typecheck— clean