{"slug":"flock-fix-viewer","total":24,"limit":100,"offset":0,"since":null,"commits":[{"hash":"7ae3e73","date":"2026-09-25 13:56:00 -0700","author":"Steve Abrams","subject":"TK-12268: add creds-in-URL fetch guard (fleet pattern) to gated page","body":"Relative fetch() on a Basic-Auth page threw on user:pass@host bookmarks.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01D7LB6rCwpA7ubJTqYzqXEX"},{"hash":"09bf1a1","date":"2026-09-10 17:52:30 -0700","author":"Steve Abrams","subject":"governance(TK-11370): make live-by-default Shopify writers dry-run by default","body":"Flip `DRY = argv.includes('--dry')` -> `DRY = !argv.includes('--apply')` so a\nzero-argument run no longer fires customer-facing Shopify writes.\n\nBackward compatible: `--dry` still means dry; `--apply` now required to write.\nOnly zero-arg invocations change behaviour, and every candidate was checked\nagainst its launchd/cron/pm2/wrapper invocation sites first (4 scripts that a\ncadence job runs flagless were EXCLUDED so this cannot silently disable them).\n\nVerified: node --check/py_compile 87/87 with a positive control proving the\nchecker rejects an injected fault; argv truth-table negative test 5/5.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01L53y4oP2itY3qeJ8WQgMzc"},{"hash":"1b9bb1d","date":"2026-09-03 13:47:58 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-09-03T13:47:49 (1 data files) — archive-flock-residual-snapshot.json","body":""},{"hash":"e350807","date":"2026-09-03 13:32:07 -0700","author":"Steve Abrams","subject":"TK-11122: reversible archive script for 5 residual unbuyable flock listings","body":""},{"hash":"e920313","date":"2026-09-03 13:21:44 -0700","author":"Steve Abrams","subject":"add reversible mfr# fix for FLOCK-8004 -> Osborne & Little W5725-04","body":"TK-11122: FLOCK-8004 confirmed W5725-04 (FileMaker flock8004 + visual fans\nmatch). Writes real code over placeholder, snapshots+ledgers undo, dry-run\ndefault. 8003 excluded (paisley, not W5725). Live --apply Steve-gated.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BkyWhErFtVhis8AShV5cjX"},{"hash":"66b6c5c","date":"2026-09-03 13:07:55 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-09-03T13:07:42 (3 data files) — sadie-snapshots/1038-survivor-pre.json sadie-snapshots/1039-survivor-pre.json sadie-snapshots/69430-survivor-pre.json","body":""},{"hash":"15e48c7","date":"2026-09-03 12:09:27 -0700","author":"Steve Abrams","subject":"flock-combine: generalize identity from SRC twin (wire 1038/1039/69430)","body":"TK-11122 follow-on: title/handle/roll-SKU now derive from the archived\nsource twin instead of hardcoded Sadie strings, so the combine works for\nMaggie's Circles (1038/1039) and La Mayorca (XCD-69430). Dry-run verified;\nSadie 1045-1047 unaffected. Live --apply stays Steve-gated.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BkyWhErFtVhis8AShV5cjX"},{"hash":"49dfe0d","date":"2026-09-02 17:52:10 -0700","author":"Steve Abrams","subject":"Mark Shopify links as record drills","body":""},{"hash":"78a3bee","date":"2026-09-02 17:32:21 -0700","author":"Steve Abrams","subject":"Fix normalized flock dimension verification","body":""},{"hash":"fc17f16","date":"2026-09-02 16:47:30 -0700","author":"Steve Abrams","subject":"href-drill-canary: fix flock-fix-viewer flat grid — per-card drill to Shopify admin, URL-persist sort/density","body":"Cards' SKU and title were inert text with no deeper-data drill target, and the\nsort/density controls only persisted to localStorage, not the URL. Fixed per\nthe approval-viewer c64e08d pattern (TK-11131 cycle 3/4):\n\n- server.js: request the product's numeric Shopify id via GraphQL and emit\n  adminUrl (https://admin.shopify.com/store/designer-laboratory-sandbox/\n  products/<id>) per row — the genuinely deeper record (full variants,\n  metafields, media) behind each summary card.\n- public/index.html: wrap the card title and SKU in real <a> hrefs to that\n  admin product page (target=_blank, noopener noreferrer). Add syncUrl()/\n  applyUrlState() so sort + density persist to the URL via\n  history.replaceState, matching approval-viewer's own convention, so a\n  filtered/sorted view is now a shareable/bookmarkable link.\n\nVerified live: restarted the plain-node process (no pm2 entry, PID replaced),\ncurled /api/status — adminUrl present on all 97 rows — and curled / — served\nHTML contains the new ttl/sku-link href markup.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>"},{"hash":"9290c2e","date":"2026-09-02 16:45:31 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-09-02T16:45:26 (2 data files) — sadie-snapshots/1045-survivor-pre.json sadie-snapshots/1047-survivor-pre.json","body":""},{"hash":"65e3d3d","date":"2026-09-02 16:04:26 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-09-02T16:03:42 (4 data files) — __pycache__/apply-flock-combine.cpython-314.pyc sadie-snapshots/1045-survivor-pre.json sadie-snapshots/1046-survivor-pre.json sadie-snapshots/1047-survivor-pre.json","body":""},{"hash":"0f610a9","date":"2026-09-02 15:33:23 -0700","author":"Steve Abrams","subject":"flock: reversible combine roll+sample fix script (TK-11122, session close)","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EbJqkkF59hjUzX8PH7PHDN"},{"hash":"348c48a","date":"2026-09-02 15:21:13 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-09-02T15:21:07 (1 data files) — sadie-snapshots/family-snapshot.json","body":""},{"hash":"258c4cf","date":"2026-09-02 14:54:25 -0700","author":"Steve Abrams","subject":"non-astek flock (c): house private-label flock specs for 8 ROP/ERE/PRNC (unverifiable MFR); reversible","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01A8mCr1GHE1PGSWJd1yydnh"},{"hash":"93a9bfd","date":"2026-09-02 14:50:50 -0700","author":"Steve Abrams","subject":"non-astek flock (b): verified specs to 29 real-brand flock (DG 9 + Osborne 20 Regency); per-key metafield types; reversible","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01A8mCr1GHE1PGSWJd1yydnh"},{"hash":"21f8dea","date":"2026-09-02 14:42:49 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-09-02T14:42:45 (1 data files) — strip-mistag-snapshot.json","body":""},{"hash":"3133a62","date":"2026-09-02 14:31:45 -0700","author":"Steve Abrams","subject":"non-astek flock: verify + segment 192 non-PR flock-tagged; apply print_type=Flock to 33 active genuine-flock (reversible); gated per-vendor plan","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01A8mCr1GHE1PGSWJd1yydnh"},{"hash":"5f23184","date":"2026-09-02 14:23:12 -0700","author":"Steve","subject":"flock: enrichment rollout (27 Astek-matched, exact match+conflict guard), draft price-ups, 1-para desc trim, material multi-line, sqft sweep","body":""},{"hash":"2e5e767","date":"2026-09-02 14:02:17 -0700","author":"Steve","subject":"board: sqft + specs chips, pinned port 61438; sqft/enrich/theme tools","body":""},{"hash":"5ac880f","date":"2026-09-02 14:01:03 -0700","author":"Steve","subject":"board: show sqft S/R+D/R + specs-verified chips; pin port 61438; sqft + St Moritz enrichment tools","body":""},{"hash":"73033e4","date":"2026-09-02 13:25:37 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-09-02T13:25:17 (1 data files) — priceup-snapshots/gable-velvet-flocked-wall-paper-wflo-9015.json","body":""},{"hash":"682f69a","date":"2026-09-02 13:12:37 -0700","author":"Steve","subject":"flock quotes-removal batch tool (idempotent, reversible, ledgered) + confirmed all 41 priced flock buyable","body":""},{"hash":"c01bb17","date":"2026-09-02 13:08:52 -0700","author":"Steve","subject":"flock-fix live viewer: per-SKU field status board (live Shopify, sort+density, created-time chips)","body":""}]}