Skip to content

Commit 0a81fde

Browse files
PipFowerakerclaude
andauthored
art(review): local review app -- persistent verdicts + notes, multi-session (serve_review.py) (#706)
Adds tools/art_review/serve_review.py: a stdlib-only (http.server, no deps) local web app that reviews ALL P(Doom)1 art in one place -- pixellab art_source/ AND the gpt-image art_generated/ tree (game_icons, ui_icons, hero_banners, screen_backgrounds, terminal_textures, + any new category dirs). Per asset: clickable keep/maybe/reroll verdict, free-text note, comma tags, on a checkered alpha backdrop, grouped by category with a sticky section nav and keyboard nav (arrows / K / M / R / N). Every edit POSTs to /api/state and AUTO-PERSISTS to tools/art_review/review_state.json on disk (not localStorage), so a review survives across sittings and is a clean pipeline input: { asset_id: { verdict, note, tags, updated_at } } asset_id is pipeline-friendly: gen:<category>:<base_id>:<variant> / px:<relpath>. PNGs stream live from disk via /img?p=<relpath> (path-sandboxed to art-root, png only) -- the 1.1 GB gitignored art_generated/ tree is never copied or committed. Closes the "build.py doesn't read art_generated" glue gap in ASSET_PIPELINE.md. review_state.json is gitignored (per-reviewer local state). Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 489eb3f commit 0a81fde

2 files changed

Lines changed: 660 additions & 0 deletions

File tree

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,8 @@ test-results-*.xml
130130
art_generated/
131131
generated_icons/
132132
asset_gallery.html
133+
# Local art-review app state (per-reviewer verdicts/notes; written by serve_review.py)
134+
tools/art_review/review_state.json
133135
test_output.png
134136
test_openai_api.py
135137
generate_icons.py

0 commit comments

Comments
 (0)