{"slug":"fix-live-board","total":13,"limit":100,"offset":0,"since":null,"commits":[{"hash":"6dc71f5","date":"2026-09-26 09:19:42 -0700","author":"Steve Abrams","subject":"TK-12333: remove Scalamandre from showroom-vendors (Steve 2026-09-26: Scalamandre is NOT a showroom line)","body":"Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_018HHVEexYEwkT1HYJzkvv66"},{"hash":"9bcd81c","date":"2026-09-26 08:22:24 -0700","author":"Steve Abrams","subject":"TK-11860: add Jeffrey Stevens, Mind the Gap, Sandberg, Scalamandre to showroom-vendors (Steve approved 2026-09-26)","body":"Exact vendor strings verified against dw_unified mirror. Scalamandre Wallpaper/Fabrics NOT included (not in approved memo). Undo: git revert this sha.\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_018HHVEexYEwkT1HYJzkvv66"},{"hash":"be04e86","date":"2026-09-10 16:41:06 -0700","author":"Steve Abrams","subject":"showroom: commit a regression suite for the tag predicate (TK-11307)","body":"The exact-match tag comparison IS the safety design of the showroom-only\nrollout, and it had broken twice (whitespace token split matching the\nunrelated 'Showroom Line' tag on 18,518+ sellable products; a Liquid\nconsumer enumerating only 3 casings). Both were caught by hand.\n\n28 assertions over REAL live tag strings, plus a --mutate mode that swaps\nin the historical broken predicate and requires the suite to go RED, so\nthe test is proven to actually guard the invariant rather than just pass.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_011FAPArHdMKRiNHqJiorUFm"},{"hash":"34860f0","date":"2026-09-10 09:46:02 -0700","author":"Steve Abrams","subject":"chore: lint + refactor pass (session close) — TK-11307","body":"Comment accuracy after the ShowroomOnly rename. No logic change.\nVerified: 10/10 consumer-agreement suite still green.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>"},{"hash":"d6185a7","date":"2026-09-10 08:55:25 -0700","author":"Steve Abrams","subject":"showroom: rename tag to 'ShowroomOnly' — 'Showroom' collides with 'Showroom Line' (TK-11307) Steve ruled 2026-09-10: the MDC showroom tag is 'ShowroomOnly', not 'Showroom'.","body":"A pre-existing 'Showroom Line' tag sits on 18,518+ ACTIVE SELLABLE products\n(Kravet 1969, China Seas 1775, sellable Phillipe Romano 1753, Scalamandre 913,\nOsborne & Little 616, Designers Guild 559, ...). Shopify/Boost `tag:` queries are\nPREFIX/TOKEN matchers and quoting does not help — measured live, `tag:Showroom`\nand `tag:\"Showroom\"` each return 10,000+ ACTIVE of which a sampled 100/100 carry\n'Showroom Line' and 0/100 carry the exact tag. 'ShowroomOnly' measures 0\ncollisions, so it is safe in code AND in a Shopify/Boost tag query (which makes\nthe Boost index rule usable and un-traps applier verification).\n\nVerified: all 5 consumers (canonical primitive, hasShowroomTag, microsite\nisShowroomTagged, theme Liquid render-skip, theme JS backstop) agree 7/7 on real\ntag strings — MDC's new tag matches everywhere, every 'Showroom Line' sellable\ncase is false everywhere, and the old 'Showroom' tag no longer matches. Phillip\nJeffries stays suppressed via the untouched vendor path.\n\nApplier must stamp 'ShowroomOnly'. Theme PUSH and fleet deploy remain Steve-gated.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>"},{"hash":"2fe5fee","date":"2026-09-08 15:37:03 -0700","author":"steve","subject":"showroom: add tag-aware isShowroomProduct primitive (TK-11307)","body":"A product is showroom-only if vendor is on showroom-vendors.json OR it carries\nthe 'Showroom' tag. Lets a shared-vendor line (MDC under 'Phillipe Romano') be\nhidden from discovery/feed without hiding the vendor's sellable products.\nVendor list unchanged; tag is an additional product-level key. 11/11 unit tests.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01JDeaFL4eeREBZX79tc4cnr"},{"hash":"9ba8420","date":"2026-09-03 11:19:31 -0700","author":"Steve Abrams","subject":"Add reusable isShowroomVendor() primitive keyed off showroom-vendors.json (TK-11186)","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BgCcr9t5zNGdb43pS4f1ks"},{"hash":"e6f437b","date":"2026-09-02 15:43:01 -0700","author":"Steve","subject":"board: movable/dockable nav — drag grip (float/move up-down-anywhere) + Dock-left toggle (left sidebar panel), position+mode persisted","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01KkjHuJKiariXaTtFujZxWC"},{"hash":"7bb00cf","date":"2026-09-02 14:53:13 -0700","author":"Steve","subject":"board: default to light (black-on-white) day theme; add creds-in-URL fetch guard (fixes empty board when opened with user:pass@host)","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01KkjHuJKiariXaTtFujZxWC"},{"hash":"edfc58b","date":"2026-09-02 14:33:34 -0700","author":"Steve","subject":"board UX upgrade: day/night toggle, click-to-drill detail drawer, Hootsuite-style column/stream view (group by state/status/vendor), green→red usage meter, group-by + sort — nav-bar-standard style","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01KkjHuJKiariXaTtFujZxWC"},{"hash":"d014212","date":"2026-09-02 14:03:17 -0700","author":"Steve","subject":"last5: treat showroom lines (Phillip Jeffries) as sample-only-correct — waive sellable+price, show 'showroom' pill; config/showroom-vendors.json editable","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01KkjHuJKiariXaTtFujZxWC"},{"hash":"5f15a19","date":"2026-09-02 13:56:24 -0700","author":"Steve","subject":"add last5 job: last-5-days new-products go-live board (live Shopify, 6-field rule); fix sample-as-sellable false-green in recent probe","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01KkjHuJKiariXaTtFujZxWC"},{"hash":"b6cba65","date":"2026-09-02 13:44:17 -0700","author":"Steve","subject":"fix-live-board: generalized broken→fixed live board (source-agnostic probe + gated fixer launch + always-on watcher); flock = reference impl","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01KkjHuJKiariXaTtFujZxWC\n"}]}