Skip to content

Add cartoon content creation flow on /create page#1218

Merged
realproject7 merged 1 commit into
mainfrom
task/1215-cartoon-create-flow
May 16, 2026
Merged

Add cartoon content creation flow on /create page#1218
realproject7 merged 1 commit into
mainfrom
task/1215-cartoon-create-flow

Conversation

@realproject7
Copy link
Copy Markdown
Owner

Summary

  • Fiction/Cartoon selector on /create page, defaulting to Fiction
  • Fiction mode unchanged (text area + markdown)
  • Cartoon mode replaces text area with multi-image upload via /api/upload-plot-images
  • Drag-and-drop reordering, optional alt text and scene labels per panel
  • Vertical webtoon preview of uploaded images
  • Publishes as generated markdown image sequence with contentType: "cartoon" in metadata
  • 10K character budget displayed and enforced for generated markdown
  • Invalid image types/sizes blocked client-side before upload

Closes #1215

Test plan

  • TypeScript typecheck passes
  • ESLint passes (no new errors)
  • Unit tests pass (cartoon markdown generation: ordering, labels, budget)
  • Full test suite passes (62 tests)
  • RE1/RE2 review
  • Manual: Fiction mode unchanged after adding selector
  • Manual: Cartoon mode — upload images, reorder via drag, add labels
  • Manual: Preview shows vertical webtoon sequence
  • Manual: Publish cartoon storyline, verify contentType stored correctly

🤖 Generated with Claude Code

- Fiction/Cartoon selector at top of create form (defaults to Fiction)
- Fiction mode unchanged: text area with markdown support
- Cartoon mode: multi-image upload via /api/upload-plot-images with
  drag-and-drop reordering, optional alt text and scene labels per panel
- Vertical webtoon preview of uploaded panels
- Generates markdown image sequence for on-chain storage, passes
  contentType: "cartoon" through publish/index metadata
- Shows and enforces 10K character budget for generated markdown
- Blocks invalid image types/sizes before upload
- Tests for cartoon markdown generation (ordering, labels, budget)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented May 16, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
plotlink Ignored Ignored May 16, 2026 11:34pm

Request Review

Copy link
Copy Markdown
Owner Author

@realproject7 realproject7 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

RE2 Review: ✅ Approve

Well-structured feature. Clean separation between markdown generation, upload UI, and preview.

Highlights:

  • Fiction flow completely untouched when selector is on Fiction — good isolation
  • CartoonUploader handles drag-and-drop reordering cleanly with visual feedback
  • Client-side validation mirrors server-side checks (type, size) — prevents wasted upload attempts
  • generateCartoonMarkdown is pure and well-tested (ordering, labels, budget)
  • contentType: "cartoon" correctly passed through metadata to the indexer
  • Alt text derived from filename is a nice accessibility touch

Minor non-blocking note:

  • The MIN_CONTENT_LENGTH (500 chars) check applies to the generated cartoon markdown. A typical IPFS image markdown line is ~60-80 chars, so a cartoon with <6 panels may fail the minimum content validation. If this is intentional (ensuring enough panels for a meaningful story), it's fine. If not, cartoon mode may need a lower minimum or panel-count-based minimum instead. Not a blocker for this PR — can be addressed as UX feedback.

CI still pending at review time.

Copy link
Copy Markdown
Collaborator

@project7-interns project7-interns left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: APPROVE

Summary

The cartoon create flow is wired through cleanly: Fiction remains the default path, Cartoon mode uses the batch image endpoint, generated markdown is published as the content payload, and contentType: \"cartoon\" is passed to the storyline indexer metadata.

Findings

  • None blocking.

Decision

Approved. The implementation matches the #1215 acceptance criteria. lint-and-typecheck is green; e2e was still pending at approval time and should be verified before merge.

@realproject7 realproject7 merged commit c470426 into main May 16, 2026
4 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.

Support cartoon content creation on PlotLink create page

2 participants