{"slug":"gracie-internal","total":9,"limit":100,"offset":0,"since":null,"commits":[{"hash":"69f55eb","date":"2026-07-15 15:01:21 -0700","author":"Steve Abrams","subject":"gracie-internal: add Memo/Stock/Price chip actions (shared vendor-requests module)","body":"Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>"},{"hash":"5866b3a","date":"2026-07-15 13:06:56 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-15T13:06:41 (1 files) — lib/","body":""},{"hash":"e78260f","date":"2026-07-14 07:56:27 -0700","author":"Steve","subject":"Revert \"Add Activation Calendar tab (go-live date+time per staged SKU)\"","body":"This reverts commit f55e279c4644a27034e9b9718e983ff592901d8c."},{"hash":"f55e279","date":"2026-07-14 07:53:06 -0700","author":"Steve Abrams","subject":"Add Activation Calendar tab (go-live date+time per staged SKU)","body":""},{"hash":"6896916","date":"2026-07-09 16:08:50 -0700","author":"Steve","subject":"Upgrade rail to all.dw feature-parity: active-chip row + collapsible facet sections (Type/Book/Color-families/Style/Material/Price-quote-only/Tags/Image), color-family bucketing + style/tag explosion computed identically in pg + jsonl modes, type-ahead + cap/expand, swatch dots, card-field toggles","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"0b12522","date":"2026-07-09 15:51:27 -0700","author":"Steve","subject":"jsonl-backed data layer: self-contained bundle for Kamatera (no prod DB)","body":"Auto-detect source (DATA_SOURCE=jsonl or the data/<vendor>.jsonl bundle present)\nloads all rows in-memory from the bundle; the pg/psql path is preserved for local.\nDB driver require made lazy so no DB connection is needed in jsonl mode. Includes\nthe full-fidelity export (all columns the viewer consumes) + export script.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"88443b8","date":"2026-07-09 13:44:48 -0700","author":"Steve Abrams","subject":"Strip product count from unauthenticated /healthz","body":"Red-team FIX2: open /healthz leaked count:<n>; now returns {ok:true} only\n(HTTP 200 preserved for keep-alive/uptime probes). Count stays behind auth\nvia /api/facets.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"d9e5f8b","date":"2026-07-09 09:52:42 -0700","author":"Steve","subject":"Persist gracie viewer sort selection to localStorage","body":"sort onchange only called render() — now saves gracieSort and restores it on\nload like the density/imgonly prefs.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"c6011ff","date":"2026-07-09 09:15:07 -0700","author":"Steve","subject":"initial scaffold: Gracie internal (internal line viewer :10073)","body":""}]}