{"slug":"paul-conrad-cartoons-shadowman","total":17,"limit":100,"offset":0,"since":null,"commits":[{"hash":"2ba5293","date":"2026-09-25 11:07:45 -0700","author":"Steve","subject":"TK-12241: export approved Shadow Man pieces to the P24 Cartoon Desk","body":"scripts/export-p24-shadowman.mjs copies status=approved finals to <p24>/cartoons/shadow-man/ and\nwrites cartoons/shadow-man-data.js; --test-include-pending is for scratch-copy verification only.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>"},{"hash":"d329174","date":"2026-09-25 11:06:20 -0700","author":"Steve","subject":"TK-12241: Shadow Man gallery + Arena Ideas curation in Inkwell","body":"- Rendered 20 original Shadow Man briefs locally ($0 SDXL) + 2 simplified-prompt retries;\n  visual review (signature, no fake lettering, gag adherence) kept 13 of 20 briefs.\n- gen_shadowman.py: 6% bottom crop kills SDXL's painted fake signatures; raw frames saved;\n  --force re-render; per-brief negative_extra. retry_briefs.py writes r1/r2 retry batches.\n- build-shadowman.mjs publishes reviewed finals to public/shadowman/*.jpg + data/shadowman.json.\n- Inkwell: Shadow Man section + Arena Ideas section (62 ideas from 5 local models, extracted by\n  scripts/extract-arena-ideas.cjs), theme/era/model filters, sort, density, created date+time chips,\n  checkbox select, big Approve/Delete buttons, sticky bulk bar, in-page delete confirm,\n  show-deleted/restore. Loopback-only POST APIs through sendClean(); delete moves images to\n  generator/out/_trash; approved arena ideas queue to generator/idea-queue.json and\n  compose-prompts.mjs --from-queue turns them into the next batch. Actions log to\n  data/shadowman-actions.jsonl.\n- verify-inkwell.cjs: +36 checks (62/62 pass against a scratch copy).\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>"},{"hash":"5891a07","date":"2026-09-25 10:11:17 -0700","author":"Steve Abrams","subject":"Replace text-only research-records section with public-domain cartoon gallery (DPLA libraries/universities + Met, Art Institute of Chicago, Cleveland open access)","body":"Items are kept only when the holding institution's own rights field says public domain / CC0 /\nNoC-US. scripts/fetch-pd-cartoons.mjs builds data/pd-cartoons.json + local images; /api/cartoons\n(research records) is no longer served; verify-inkwell.cjs 28/28 incl. PD gallery checks.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01SW5KHgwrh2Rr9TKHM6ndqM"},{"hash":"17318de","date":"2026-09-25 09:48:08 -0700","author":"Steve","subject":"TK-12230: P24 Art gallery — all 68 photos + cartoons inline with type filter, sort, density slider, date+time chips","body":"Filter/sort/density persist to localStorage; every card shows a created date+time chip\n(ISO in title=); click opens a detail modal with full art + extracted panels. Styles live\nin public/style.css only. scripts/verify-inkwell.cjs is the E2E check (22 assertions,\nincl. a negative self-test of the name detector).\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>"},{"hash":"ab51ad1","date":"2026-09-25 09:46:16 -0700","author":"Steve","subject":"TK-12230: mask the forged artist signature the image model painted into daily-cartoon posters","body":"The Flux-generated daily posters carry a bottom-right signature reading the artist's\nname (pixels, so the text scrub could not catch it). import-p24.mjs now paints that\ncorner (x80-100%, y84-100%) with the region's median colour on every daily poster.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>"},{"hash":"fad40a7","date":"2026-09-25 09:42:06 -0700","author":"Steve","subject":"TK-12230: import all P24 photos + cartoons (41 photos, 27 cartoons) into public/p24 + data/p24.json","body":"scripts/import-p24.mjs reads the P24 repo read-only: images/*.jpg, the 22 cartoon\nstrip pages (Playwright renders + advances every panel, saves each artwork svg with\ncomputed styles inlined, a strip PNG, and decodes embedded rasters), and the daily\ncartoon queue posters. Slugs/captions are scrubbed of the artist name; the script\nexits 1 on any leak.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>"},{"hash":"1d63d18","date":"2026-09-25 09:41:58 -0700","author":"Steve","subject":"TK-12230: rebrand app to Inkwell — Editorial Cartoon Archive; API scrubs artist name from research records on the way out","body":"Research data kept verbatim in data/cartoons.json; /api/cartoons neutralizes text\n(name -> 'the artist') and withholds URLs/paths embedding the name; sendClean()\nblocks any response still containing it. Adds /api/p24 route for imported art.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>"},{"hash":"f8ea2cd","date":"2026-09-24 15:53:48 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-09-24T15:53:39 (49 data files) — research/corpus.json research/raw/wsu/112029.md research/raw/wsu/112030.md research/raw/wsu/112031.md research/raw/wsu/112032.md","body":""},{"hash":"f6437ab","date":"2026-09-24 15:23:26 -0700","author":"Steve Abrams","subject":"TK-12179: Shadow Man generator (prompt composer, local SDXL renderer w/ memory guard + signature stamp, contact sheet + verifier)","body":"Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_019vkV6GBLJ9rN1VQ8oM8HJc"},{"hash":"d51a0f3","date":"2026-09-24 15:23:13 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-09-24T15:23:04 (101 data files) — research/corpus.json research/raw/conrad-ead.xml research/raw/loc-page-1.json research/raw/syr.md research/raw/wsu-colorg.md","body":""},{"hash":"4591417","date":"2026-09-24 15:11:18 -0700","author":"Steve Abrams","subject":"TK-12179: never display Conrad images; move references out of served public/","body":"Steve: Conrad cartoons are research-only. Viewer renders text records with a\nsource link; the 19 reference images move to research/reference-img (not served).\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_019vkV6GBLJ9rN1VQ8oM8HJc"},{"hash":"666e26b","date":"2026-09-24 14:59:11 -0700","author":"Steve Abrams","subject":"chore: lint, v0.2.0 (session close)","body":"Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01V29xaoBwcFwJyR4KC43ptn"},{"hash":"7995bcd","date":"2026-09-24 13:28:17 -0700","author":"Steve Abrams","subject":"Add verified cartoon images, topic tags, and a full nav bar","body":"- Sourced 11 new verified cartoon images: all 10 Library of Congress items\n  via loc.gov's own full-resolution service derivatives (visually confirmed\n  against each item's cataloged title/subject), plus one more (Nast 1982\n  homage) via Spartacus Educational. Reused 6 already-verified images as\n  clearly-labeled representative images for the 3 Pulitzer-year and 3\n  archive-collection-summary records (year-of-work awards and finding aids\n  name no single cartoon). 25 of 38 records now show a verified image\n  (up from 8); the remaining 13 documented cartoons have no digitized copy\n  found anywhere free and show an honest \"no verified image found\" placeholder\n  linking to the citation source.\n- Added a topics[] array to all 38 records (Nixon/Watergate, Vietnam War,\n  Civil Rights, Nuclear Arms & Cold War, Reagan Era, Iran-Contra, Space Race,\n  Gun Politics, Media & Press, Economy, Religion, LA/California, and more),\n  shown as chips on cards and in the modal.\n- Rebuilt the header into a sticky top nav: wordmark, section links\n  (Cartoons / Pulitzers / Library of Congress / Archives / Bio), a\n  horizontally-scrollable topic-chip row with live counts, a search box,\n  and a decade quick-jump (50s-00s). Bio opens in the existing modal.\n  Added a Topic A-Z sort option; all choices persist to localStorage.\n  Collapses to a hamburger menu at mobile widths with no horizontal\n  page scroll (verified at 390px).\n- artifact/ (the metadata-only shareable build) is untouched.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01V29xaoBwcFwJyR4KC43ptn"},{"hash":"4f7f8a0","date":"2026-09-24 12:49:33 -0700","author":"Steve","subject":"add shareable Artifact build (metadata + link-out only, no copyrighted images) + regen script","body":""},{"hash":"add8978","date":"2026-09-24 12:34:11 -0700","author":"Steve","subject":"compile 38-record research dataset (3 Pulitzers, 22 documented cartoons, 10 LOC records, 3 archive summaries) + 8 reference images + bio","body":""},{"hash":"0c8b77d","date":"2026-09-24 12:28:51 -0700","author":"Steve","subject":"add viewer (filter panel, sort+density grid, detail modal) and placeholder dataset","body":""},{"hash":"680341b","date":"2026-09-24 12:26:21 -0700","author":"Steve","subject":"initial scaffold","body":""}]}