{"slug":"designer-line","total":6,"limit":100,"offset":0,"since":null,"commits":[{"hash":"b9eda2f","date":"2026-05-31 16:56:02 -0700","author":"Steve Abrams","subject":"Link favicon.svg in head (use branded SVG, not .ico fallback)","body":""},{"hash":"ae5df42","date":"2026-05-31 16:32:28 -0700","author":"Steve Abrams","subject":"Add per-site favicon (kills /favicon.ico 404)","body":""},{"hash":"f7ab358","date":"2026-05-19 18:34:23 -0700","author":"Steve Abrams","subject":"add price ↑/↓ + title z→a + sku z→a sort options to commerce grid","body":"Brings the commerce sort <select> closer to the canonical DW sort pattern\n(Steve's standing rule). COALESCE(net_price, retail_price) so trade pricing\nsorts first when available, else MSRP. Existing localStorage persist /\nhydrate behavior on the sort key carries through unchanged.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>"},{"hash":"d7d7eb8","date":"2026-05-19 18:33:53 -0700","author":"Steve Abrams","subject":"guard static root from serving .bak / .pre-* / .orig snapshot files","body":"Adds an Express middleware before static() that returns 404 for any path\nmatching .bak, .bak.<ts>, .pre-*, or .orig. Defense-in-depth — .gitignore\nalready prevents them from being committed, but this catches any local\nsnapshot dropped into public/ before deploy.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>"},{"hash":"994fe12","date":"2026-05-19 18:32:30 -0700","author":"Steve Abrams","subject":"snapshot before refactor pass","body":""},{"hash":"c1bf670","date":"2026-05-11 17:59:07 -0700","author":"Steve Abrams","subject":"scaffold designerline v0.1 — landing + commerce + advocacy + community on port 9780","body":""}]}