Skip to content

Drop the reviewed/auto tier from slide translations - #182

Open
kcarnold wants to merge 2 commits into
mainfrom
claude/confident-albattani-owiu8s
Open

kcarnold wants to merge 2 commits into
mainfrom
claude/confident-albattani-owiu8s

Conversation

@kcarnold

@kcarnold kcarnold commented Oct 26, 2026 •

Copy link
Copy Markdown
Collaborator

The tier-removal half of #152, rebuilt on current main (where translate-ahead moved from slide_translator.py to slideSync.ts and the review screen was reworked). The per-slide notes half is stacked on this one as #184.

What

SlideTranslationEntry is now { text, provenance }. Gone: SlideStatus, status, reviewedAt, and the viewer's "unreviewed" badge.

  • resolveSlideTranslation returns the first entry along the fallback chain. The old version made two passes and ranked entries by quality.
  • storeTranslations (slideSync.ts, the server's translate-ahead) only fills missing keys. Keys are content-addressed, so an existing entry already translates this exact text. It may be a reviewer's save or an agent follow-up's revision (applyUpdates writes those straight into the doc), and a fresh draft must not undo either one. "Protect reviewed" was a special case of this rule.
  • Review screen: the cell chip says Saved, not Reviewed. That is what it always meant: the draft matches the library. After Re-translate, the screen asks the library which slides are saved. It used to infer that from status.
  • PerSlideTranslation is now an alias of SlideTranslationEntry, since they had become the same shape.
  • The 'imported' provenance had no writer, and 'llm-agent' was just llm. Both are gone.
  • slideLibrary.ts no longer stamps status/reviewedAt. Old library files keep those fields on disk. Nothing reads them, and I left the data alone rather than rewriting records on load as Drop the reviewed/auto tier; surface the translator's per-slide notes #152 did.
  • Removed saveAll and unreviewedBadge, which were dead strings.

Behavior change worth a look

A Haitian Creole viewer with no Creole text for a slide now sees the French text, whatever produced it. Before, an unreviewed French text was withheld and the slide read "(not translated)".

Smoke test

Touches §3 Proclaim sync: slide translations should still show for the on-air item, and the review screen's Save should still mark a cell Saved and update the viewer.

Verification

npm run typecheck, npm run lint, npm test (667 passed), uv run pytest: all green.

🤖 Generated with Claude Code

https://claude.ai/code/session_01F2MPHXNLbLbVZuEDZToVvz

SlideTranslationEntry is now { text, provenance }. Gone: SlideStatus,
status, reviewedAt, and the viewer's "unreviewed" badge, which told
viewers about text nobody was going to fix mid-service.

- resolveSlideTranslation returns the first entry along the fallback
  chain. A Creole viewer with no Creole text now sees the French one
  whatever produced it; before, an unreviewed French text was withheld.
- storeTranslations (server translate-ahead) fills missing keys only.
  Keys are content-addressed, so an existing entry already translates
  this exact text, and may be a reviewer's save or an agent follow-up's
  revision. "Protect reviewed" was a special case of that rule.
- The review grid's chip says Saved, and after Re-translate the screen
  asks the library what is saved instead of inferring it from status.
- 'imported' and 'llm-agent' provenance are gone (no writer / same as llm).
- Old library files keep status/reviewedAt on disk; nothing reads them.

Split out of #152; the per-slide notes half follows separately.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01F2MPHXNLbLbVZuEDZToVvz

This branch has not been deployed

No deployments
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.

2 participants