Skip to content

Add v2 step-based book editing UI with preview and pipeline improvements#56

Merged
nicpottier merged 14 commits intomainfrom
nicpottier/step-ui
Feb 17, 2026
Merged

Add v2 step-based book editing UI with preview and pipeline improvements#56
nicpottier merged 14 commits intomainfrom
nicpottier/step-ui

Conversation

@nicpottier
Copy link
Contributor

Summary

  • Add v2 step-based book editing UI with collapsible sidebar, step navigation, and per-step views
  • Add Preview step that auto-packages ADT and displays in iframe with cache-busting
  • Color sidebar step icons based on whether each step has data (step-status API)
  • Show classified/translated text on extract page cards instead of raw extracted text
  • Add step-scoped reruns with progress tracking for all pipeline steps
  • Add editable prompts, storyboard settings, and version save/rollback
  • Replace master-status gate with web-rendering check for packaging
  • Add concurrency utilities for pipeline step execution

Test plan

  • Verify sidebar step icons are colored when step data exists, gray otherwise
  • Verify extract page cards show classified text preview
  • Verify Preview step auto-packages and shows fresh content after edits
  • Verify step-scoped reruns work for all pipeline steps
  • Run pnpm test — all 481 tests pass
  • Run pnpm typecheck — clean

- 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
@nicpottier nicpottier merged commit d76a35f into main Feb 17, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant