Shopify Room Mockup

repo: ~/Projects/shopify-room-mockup · 4 commits · 1 in last 24h, 3 in last 7d · ██ █

Search the build

4 commits indexed

  1. e6427c0 2026-09-26 TK-12096: double-run guard — refuse push when ledger has a live upload for product+ticket (--force overrides) + negative test; ledger records the 5 duplicate deletions
  2. 3a3e31e 2026-09-24 TK-12090 Fix 1: ledger the media id upload_media() already returns
  3. 37d416c 2026-09-23 Repoint room render off the dead Kamatera :3075 service to room-engines' local $0 compositor (TK-12096)
  4. f470b56 2026-05-29 shopify-room-mockup: reusable tool to add photoreal room mockups to Shopify products (select by ids/query/collection, render via :3075 over SSH, staged-upload + productCreateMedia, --skip-existing idempotency, --dry-run). Built from the Crowley's Crocodile batch

Authors

Agents used

  • none detected

Skills used

  • /claude3
  • /code3
  • /room-mockup-ledger1
  • /grasscloth1
  • /silk1
  • /query1
  • /collection1

Creative ideas + design notes

Commits with substantial prose (≥120 chars) — the rationale behind each move.

e6427c0 · 2026-09-26 · TK-12096: double-run guard — refuse push when ledger has a live upload for product+ticket (--force overrides) + negative test; ledger records the 5 duplicate deletions
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VqJiAb5GBhYitB8Fr17eGx
3a3e31e · 2026-09-24 · TK-12090 Fix 1: ledger the media id upload_media() already returns
productCreateMedia's response already carries the MediaImage gid
(media{id status}), but the success branch only ever printed the
product title -- the id reached no ledger, so a documented undo
(productDeleteMedia for "the ids the mutation returns") was
unexecutable, because those ids existed nowhere after the run.

Adds --ledger (JSONL, default out/room-mockup-ledger.jsonl) and
--ticket. Every successful upload writes {ts, ticket, product_gid,
media_id, undo_cmd} BEFORE printing the success line, so a crash
between write and print can't lose the id. A response missing a
usable id, or a ledger-write failure, is now a loud refusal to
report success (stderr + counted failed) instead of a silent green
line with nothing recorded.

Adds --delete-media/--product as a small undo-utility mode so the
ledger's undo_cmd is a directly runnable invocation of this same
script, not a hand-assembled GraphQL call.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KXUyzc9vybUz39rhnNJdwY
37d416c · 2026-09-23 · Repoint room render off the dead Kamatera :3075 service to room-engines' local $0 compositor (TK-12096)
:3075 is confirmed dead — the port is now bound by tailscaled and the real
room-setting-app pm2 process moved to :3076 and is crash-looping (50
restarts/2h). render_room() now shells out locally to room-engines'
compose_real.py (the $0 patch-quilt "real-swatch" engine, one of the
engines room-engines' own judge/apply_winners pipeline already picks
per-SKU), bootstrapping its expected /tmp scratch from the viewer's
permanently-preserved bakeoff-assets/. CLI surface kept identical
(--box now a deprecated no-op); this tool's distinct value — generic
--ids/--query/--collection Shopify-side selection pulling a product's own
live featured image — is preserved and not duplicated by room-engines,
which is wired to a single book's local catalog table + manifest. Verified
locally against 3 different swatches (bamboo/grasscloth/silk), all render
valid 1024x1024 PNGs in <1s, $0.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KXUyzc9vybUz39rhnNJdwY

File tree

4 files tracked. Click any to browse the source at HEAD.

Other build journals

← Shopify Order Bell  ·  all 4 projects  ·  Shopify Sample Shipping →

Export

commits.csv · feed.atom · project.json · commits.json

rendered in 1ms