Skip to content

Fix cartoon cut export/upload state and failure handling #225

@realproject7

Description

@realproject7

Parent: #197

Found during review of merged PRs #212-#223 before #211 pilot.

Problem

The cartoon cut export/upload flow can leave the UI in an incorrect state or hide failures.

Observed in app/web/components/CutListPanel.tsx and LetteringEditor.tsx:

  • LetteringEditor export saves finalImagePath / exportedAt on the backend, but the parent CutListPanel does not reload cuts on successful export or close. The cut can still appear as "Clean ready" and Upload & Generate can remain disabled until a manual reload or unrelated save.
  • Export can be run with unsaved overlay edits. The final image contains local overlay state, but cuts.json may not persist those overlays unless the user separately clicks Save.
  • Upload & Generate silently continues on failed asset fetch, failed upload, or failed set-uploaded, then generates markdown anyway. The response warnings are not surfaced in that path.

This makes #211 pilot unreliable because the user may think cuts are exported/uploaded when the canonical cut state or generated markdown says otherwise.

Scope

  • After successful export, refresh the selected cut / cuts file state in the UI.
  • Ensure export either persists current overlays first or clearly requires/surfaces unsaved overlay state before export. Prefer a single user action that leaves cuts.json consistent with the exported image.
  • Make Upload & Generate fail visibly if any cut upload step fails. Do not silently skip failed cuts.
  • Read and display generate-markdown warnings after Upload & Generate.
  • Keep existing PlotLink upload endpoint usage unchanged. Do not add new PlotLink APIs.

Acceptance Criteria

  • Exporting a cut updates UI status to lettered without requiring app refresh.
  • Exported final image and saved overlay state cannot diverge silently.
  • Upload failures show a user-visible error with the failed cut id.
  • Markdown generation warnings are shown after upload/generate.
  • Upload & Generate only reports success when all required final images are uploaded and recorded in cuts.json.
  • Regression tests cover export state refresh, unsaved overlay/export behavior, and failed upload visibility.

Public Safety

This is a public repo. Do not include secrets, API keys, wallet private keys, mnemonics, auth tokens, OWS vault internals, private story drafts, full Claude session IDs, or sensitive local paths in issues, PRs, logs, docs, tests, or examples.

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent/T3Assigned to T3 builder agentbugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions