{"slug":"new-engine","total":11,"limit":100,"offset":0,"since":null,"commits":[{"hash":"5d3e091","date":"2026-08-25 10:48:57 -0700","author":"Steve","subject":"creds-safe fetch guard: resolve relative fetch vs credential-free location (creds-in-URL trap)","body":"Fleet inoculation — opening this basic-auth app with credentials in the URL\npoisoned document.baseURI and made relative fetch('/api/…') throw. Guard resolves\nnon-absolute request URLs against location instead. Ref: creds-in-url-fetch-guard-fleet-pattern.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"1e55589","date":"2026-08-12 08:53:19 -0700","author":"Steve","subject":"viewer standard: add Grid/List toggle + per-field on/off menu to internal record-grid viewer","body":""},{"hash":"fe0b370","date":"2026-07-28 17:15:43 -0700","author":"Steve Abrams","subject":"fix 'connecting' hang: add response cache (single-flight + serve-stale) so the slow canonical-DB catalog query isn't re-run every refresh; slower 15s poll, pause-when-hidden, clear loading state","body":""},{"hash":"40f95bb","date":"2026-07-28 14:58:24 -0700","author":"Steve Abrams","subject":"deploy.conf: HEALTH_URL -> public https domain (surfaces on projects.agentabrams.com as public)","body":""},{"hash":"6df1adf","date":"2026-07-28 14:48:17 -0700","author":"Steve Abrams","subject":"Add search + vendor filter, sort, since-date filter, and density slider","body":"- server: fetchItems() with safe filters (sq-escaped q/vendor, whitelisted sort/since) + /api/facets vendor list\n- front-end: persisted controls (localStorage), density switches list<->multi-col image grid\n- injection-guarded, verified across all filters\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"da6a927","date":"2026-07-28 13:19:01 -0700","author":"Steve Abrams","subject":"Save prod nginx vhost (IP-specific listen 45.61.58.125:80/443 + LE SSL + /var/www/html ACME webroot)","body":"The IP-specific listen is required — wildcard 'listen 80' loses to the fleet's\n'listen 45.61.58.125:80' blocks for external traffic, which was breaking cert issuance.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"c6f56d6","date":"2026-07-28 11:34:30 -0700","author":"Steve Abrams","subject":"Repoint engine to port 9870 (9840 taken on Kamatera)","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"9fc2f59","date":"2026-07-28 11:12:12 -0700","author":"Steve Abrams","subject":"Basic Auth default → house admin/DW2024! (still BASIC_AUTH-overridable)","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"09f66bb","date":"2026-07-28 09:59:40 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-28T09:59:38 (1 files) — .deploy.conf","body":""},{"hash":"ff8a755","date":"2026-07-28 09:46:15 -0700","author":"Steve Abrams","subject":"Add HTTP Basic Auth (admin/admin, env-overridable via BASIC_AUTH); /healthz stays open","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"f73dcfd","date":"2026-07-28 09:31:27 -0700","author":"Steve Abrams","subject":"New Arrivals engine for new.engine.designerwallcoverings.com — corvette-9797 pattern, live newest-first pull from dw_unified (port 9840)","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n"}]}