Files
UmbraTrans/Docs/Plan_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

6.5 KiB

Plan — Umbra Tools UI (Program / Project model)

Updated: 2026-10-25 Status: shell fully implemented and verified; backend endpoint built

Core model (per user decisions)

Concept Definition
Program A book (workspace project from /api/workspace). Top-level container.
Project Each language under a Program = a full manuscript (front + body + back matter), independent per language. Separate build per language.
Language project activities Translate, Create audio, Format (EPUB/PDF metadata), Publish/download
Audio Structural, matches UmbraAudio build system (speakers/voices, proper names, chapters, assignments, runs, queue)
Edit Per-language front matter fully independent (copyright, ISBN per language) + binder: chapters → sections → scenes

Activity dropdown (topbar, left to right)

Control Panel | Program | Edit | Audio | Format

Program selector (topbar, middle-left)

  • Hidden until a program is chosen ("Select Program")
  • After program chosen: lists ALL languages as "EN — Deal Hunter Translations", "ZH-HANS — Deal Hunter Translations", etc.
  • Selecting a language navigates to #program/<id>/<lang> — enters that language project
  • Works from any activity (Program, Edit, Audio, Format) — switching languages changes the main panel

Left rail (activity-dependent)

Control Panel: Dashboard / Accounts / Organizations / Projects / Audit log (+ Nodes)

Program (no language): Create / Import / Export / Build / Analyze

Program + language selected: Overview / Metadata / Translate / Audio / Format / Publish

Edit: Binder — Front matter (Title page, Copyright, Dedication, TOC, Foreword, Preface, Acknowledgments, Prologue) / Body (Sections, Chapters, Scenes) / History (Save version)

Audio: Overview / Speakers / Proper names / Chapters / Assignments / Runs / Queue (UmbraAudio structure)

Format: EPUB / PDF tabs — Cover, ISBN, Translated blurb, Translated Amazon search terms, Print profile, Page count/spine

Shell files (done and verified)

  • web/umbra-app.html — markup with Program selector + Format option
  • web/assets/umbra-app.js — two-level routing (program → language project), per-language left rail, per-language dashboard, language switching from any activity
  • web/assets/api.js — added projectStatus(), projectDetail() methods
  • web/assets/styles.css — language-row, project-rows, program-selector visibility, binder tree groups, language-detail panel, audio layout

Backend (done)

  • GET /api/workspace/{project_id} — project detail
  • GET /api/workspace/{project_id}/status — per-language status for all 10 target languages + English source
  • umbratrans_web/project_status.py — adapter over productions/<book>-<lang>/, reports all configured target languages per program
  • umbratrans_web/schemas.py — added ProjectDetailResponse, ProjectStatusResponse, HealthResponse, LogoutResponse, PasswordResetAvailableResponse, ResetPasswordRequest, SessionUserResponse, alias names
  • umbratrans_web/config.py — added productions_root (env: UMBRATRANS_PRODUCTIONS_ROOT)
  • Env var set: UMBRATRANS_PRODUCTIONS_ROOT=/home/umbra/src/UmbraTrans/productions

10 target languages (configured)

# Language Tag Status for Deal Hunter
1 English (source) en Complete (32/32 chapters)
2 Simplified Chinese zh-Hans Text translated (32/32 chapters)
3 Spanish es-ES Not started
4 French fr-FR Not started
5 German de-DE Not started
6 Italian it-IT Not started
7 Portuguese pt-BR Not started
8 Russian ru-RU Not started
9 Japanese ja-JP Not started
10 Korean ko-KR Not started
11 Arabic ar-SA Not started

Verified (headless Firefox, live data, zero console errors)

View Activity Topbar Left rail Main
Landing control — Control Panel System overview
Program list program — Create/Import/Export/Build/Analyze 2 programs
Program detail program Deal Hunter Translations Program-level 11 language rows with status pills + actions
Language project (zh) program ZH-HANS — Deal Hunter Translations Project-level (Overview/Metadata/Translate/Audio/Format/Publish) 32/32 chapters, Text translated, Edit front matter / Review utterances / Queue audio / Format EPUB / Format PDF / EPUB↓ / PDF↓
Edit (en/zh) edit EN/ZH-HANS — Deal Hunter Translations Binder (front matter + chapters/scenes) Editable surface per language
Audio (zh) audio ZH-HANS — Deal Hunter Translations Speakers/Proper names/Chapters/Assignments/Runs/Queue Audio production (structural, UmbraAudio structure)
Format (zh) format ZH-HANS — Deal Hunter Translations EPUB/PDF tabs Cover, ISBN, Blurb, Keywords, Print profile, Page count

Per-language action buttons (program detail view)

Language Translation state Actions
English (source) Complete Edit front matter, Review text, Queue audio, Format EPUB, Format PDF
Simplified Chinese Complete Edit front matter, Review utterances, Queue audio, Format EPUB, Format PDF, EPUB↓, PDF↓
Others (9) Not started Queue translation

Language project detail panel

  • Translation status (chapters done/total)
  • Edit front matter, Review utterances by chapter, Queue audio
  • Utterance-by-chapter review section (placeholder — wires to audio backend)
  • Outputs table (EPUB, PDF download links when available)

#program/<id>, #program/<id>/zh-Hans, #edit/<id>/zh-Hans, #audio/<id>/zh-Hans, #format/<id>/zh-Hans — all survive refresh

Default activity

Admin → Control Panel; Member → Program

Test account (disposable, deactivated)

  • Email: bossnerd.work@gmail.com, Role: platform_admin — deactivated after validation
  • Password: bsnrd.work@pass

Next (backend wiring)

Per-language action buttons are structural with explanatory disabled titles. To make them live:

  • Queue translation → translation queue endpoint
  • Create audio / Queue audio → audio generation endpoint (UmbraAudio-aligned, takes English audio data)
  • Format EPUB/PDF → edition metadata endpoint (ISBN, blurb, keywords per language)
  • Review utterances by chapter → utterance-per-chapter review view (maps translation text to audio, speaker alignment)
  • Edit front matter → per-language front matter editor (ISBN, copyright per language)