{"slug":"designtradelive","total":6,"limit":100,"offset":0,"since":null,"commits":[{"hash":"619918b","date":"2026-05-31 16:32:29 -0700","author":"Steve Abrams","subject":"Add per-site favicon (kills /favicon.ico 404)","body":""},{"hash":"acd885d","date":"2026-05-19 21:14:44 -0700","author":"Steve Abrams","subject":"clean-URL routes: /about + /contact -> /#about anchor","body":"The hamburger nav links to /about but no /about page exists, so the link\nwas 404ing. The footer already carries the about copy as an anchor\n(#about), so add a 301 redirect /about -> /#about and the same for\n/contact (which the footer also exposes via mailto), so every nav link\nlands somewhere real.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>"},{"hash":"e7feded","date":"2026-05-19 21:14:22 -0700","author":"Steve Abrams","subject":"harden static layer: ignore + 404-guard editor/refactor snapshot files","body":"Broadens .gitignore to cover *.bak / *.bak.* / *.pre-* / *.orig / *.rej /\n*.swp / *~ so refactor-pass leftovers never land in the repo, and adds an\nExpress middleware ahead of express.static that 404s any request whose\npath matches the same pattern. Defends against the case where one of those\nfiles does end up in public/ — it still can't serve to the public.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>"},{"hash":"4b9a7a9","date":"2026-05-13 14:02:15 -0700","author":"Steve Abrams","subject":"polish: editorial-bold hero + Field Guide section (3-card 'How to work the year')","body":""},{"hash":"b1ed8f3","date":"2026-05-10 22:21:18 -0700","author":"Steve Abrams","subject":"hamburger nav: apply canonical pattern from sister-site fleet","body":""},{"hash":"8f611a5","date":"2026-05-10 03:26:25 -0700","author":"Steve Abrams","subject":"initial scaffold + GA gtag G-E8R8V9RDXN — designtradelive events directory (25 seed events)","body":""}]}