feat: finished-page comic pipeline as default - #29
Merged
Conversation
Capture the approved whole-page default path (schema-first plans, deterministic prompts, explicit panel fallback) without copying the external studio's agent/file workflow. Co-authored-by: Cursor <cursoragent@cursor.com>
Break the approved design into TDD tasks for schemas, prompt render, page planning, pipeline default path, and docs/web wiring. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Add the finished_page render path to creative_comic: after extract + portraits, plan_comic_pages() replaces the storyboard/panel loop, one image is generated per ComicPagePlan and saved to pages/page_cXXXX_pYYYY.png (position-derived, not a running counter, so a stale/missing page always regenerates to the same file instead of risking collision with another page's filename on partial resume). PDF export runs ExportEngine directly over the pages dir (no LayoutEngine 2x2 collage). panel_compose keeps the existing storyboard -> panels -> LayoutEngine path unchanged behind an explicit render_mode= kwarg (falls back to config.render_mode()). - _render_fingerprint now includes render_mode + finished_page_size so switching modes (or page size) soft-invalidates rendered assets, now also clearing pages_done/stale_pages/generated.pages. No _PIPELINE_STATE_VERSION bump: that guards the structure fingerprint (extract/storyboard cache), which this change does not affect. - estimate_progress/_progress_label prefer page-based counts when state.render_mode == "finished_page"; content-policy rejections land in skipped_pages (no L3 on this path, per design). - tests/conftest.py opts the whole suite into panel_compose by default (core.config.render_mode() now defaults to finished_page), since most existing FakeChat/FakeImage fixtures assume the storyboard/panel contract; tests/test_finished_page_pipeline.py overrides this locally. Co-authored-by: Cursor <cursoragent@cursor.com>
- Add dark ink-stone hero SVG with comic-panel motif - Add numbered section header SVGs (Proof → What → Why → How → Use) - Add pipeline flow diagram SVG - Restructure content sequence: Proof before claims - Unify color palette derived from logo (#1B212C ink / #C0412B seal red) - Replace table of contents with visual section rhythm Co-Authored-By: Claude <noreply@anthropic.com>
When switching render modes, stale page_01.png files from LayoutEngine could pollute finished-page PDF export. Scope export to page_c*_p*.png and remove leftover panel-compose page sheets before calling ExportEngine. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
_start_job now loads render_mode, pages_done, and skipped_pages from ProjectState when resuming, matching progress seeding behavior. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Cross-chunk page_id collisions no longer skip generation; finished_page webtoon mode stacks page PNGs; README pipeline blurb updated. Co-authored-by: Cursor <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
plan_comic_pages→ deterministic page prompt → one image per page → PDF/webtoon bind (dynamic manga-style pages instead of 2×2 panel collage).INKSTONE_RENDER_MODE=panel_compose/render_mode=for recovery and A/B.ComicPagePlan*,GeneratedPage, page resume fields), stricter one-shot retry, web progress seeding, and honesty notes in README/ROADMAP.Test plan
ruff check core tests web utils scripts && ruff format --check core tests web utils scriptspytest -qpages/page_c*_p*.pngandcomic.pdfINKSTONE_RENDER_MODE=panel_composestill produces layout collage PDFrender_mode/pages_done/skipped_pagesMade with Cursor