Files
UmbraTrans/Docs/TaskList_Umbra_Tools_UI.md
umbra audio 3e0568b9d1 Generate backend endpoints for language-project workflow
Add REST endpoints and frontend wiring for per-language project actions:
- POST /api/workspace/{project}/translation/{lang}/queue — queue translation
- POST /api/workspace/{project}/audio/{lang}/queue — queue audio generation
- GET/POST /api/workspace/{project}/format/{lang} — format metadata (EPUB/PDF)
- GET /api/workspace/{project}/review/{lang}/chapters/{chapter} — utterance review
- GET/POST /api/workspace/{project}/front-matter/{lang} — front matter editor
- GET /api/workspace/{project}/chapters/{lang} — chapter list
- GET /api/workspace/{project}/chapter-content/{lang}/{chapter} — chapter text

Frontend fixes:
- Review page shows per-language text (English source, Chinese translation, etc.)
- Non-translated languages show 'Queue translation' button only
- Speaker data from English source matched by paragraph ID
- UmbraAudio column layout: Speaker, Variation, Text, Actions
- Chapter tree in left sidebar: Front matter, Back matter, Body
- Audio Format label at top of sidebar
- Pandoc formatting toolbar for front matter text editing
2026-10-25 11:04:53 -07:00

3.1 KiB
Raw Permalink Blame History

Task List — Umbra Tools UI and project-status backend

Updated: 2026-10-22 Plan: Docs/Plan_Umbra_Tools_UI.md

Legend: [ ] todo [~] in progress [x] done [!] blocked

F1 — Shell routing and defaults

  • Default activity: control for administrators, project for members (D2)
  • Activity change repaints left rail AND main panel reliably
  • Deep links: #control, #project, #project/<id>, #edit, #audio
  • Banner: logo + activity dropdown / project name / user + role + account menu
  • Guard: hidden/disabled control option for non-administrators
  • Session + workspace loaded before first paint (no empty flash)

B1 — Project status endpoint (D4)

  • GET /api/projects/{id} — project detail (membership-checked)
  • GET /api/projects/{id}/status — per-language edition status
  • Status adapter over productions/<book>-<lang>/ with a store seam
  • Report translation chapters done / total, last update
  • Report per-output format availability (epub, pdf-paperback, pdf-hardback)
  • Report audio state
  • Report review tags (needs review / needs update)
  • Tests for scope enforcement (member vs platform admin, foreign org)

F3 — Projects activity (D3)

  • List projects in scope using /api/workspace
  • Assigned to me filter
  • Honest empty and error states (reuse workspace.html wording)
  • Click a project → detail (F4)

F4 — Project detail: language rows

  • One row per language from B1 status
  • Source row → Edit activity
  • Translate / Create audio / Format buttons, gated by state with reasons
  • EPUB↓ / PDF↓ download links when available

F2 — Embeddable admin module (D1)

  • Extract admin views into assets/admin-view.js (mount function)
  • Standalone uadmin/index.html uses the module, unchanged behaviour
  • Shell mounts the module inline, keeps its own banner
  • Verify framing policy untouched (DENY remains on the standalone page)
  • Admin module tests / smoke check

B2 — Edition + output metadata endpoints (D5, §32)

  • GET /api/projects/{id}/editions
  • GET /api/editions/{id}/metadata?format= (resolved view, §32.4)
  • PUT /api/editions/{id}/outputs/{format} with rev check
  • POST /api/metadata/proposals (+ accept/reject) §32.6
  • Gate evaluation for §32.7
  • Schema/migration for editions, outputs, bindings, proposals

F5 — Format activity (D5, §32)

  • Metadata matrix: fields × editions/outputs
  • Mode badge (L/R/S/U) and state chip per cell
  • EPUB and PDF tabs
  • Needs-attention panel from §32.7 gates
  • ISBN entry with check-digit validation and duplicate rejection
  • Add Language: edition + outputs + proposals

F6 — Edit and Audio activities

  • Edit: binder + composing editor, autosave (labelled not-saving until wired)
  • Edit: Save version, keep last ten revisions
  • Audio: mount existing Umbra Audio UI, sections in left rail

Cross-cutting

  • Bump SERVICE_VERSION on each shipped slice
  • Restart umbratrans-web and verify served files match the repo
  • Update status notes after each slice