{"slug":"flockedwallpaper","total":45,"limit":100,"offset":0,"since":null,"commits":[{"hash":"62f7ce1","date":"2026-09-23 13:49:48 -0700","author":"front-page-steward","subject":"Reapply \"front-page-steward: ux-primitives bundle (grid) TK-12031\"","body":"This reverts commit f806effca42cb84d0813ef17b116c85b28c35c6a."},{"hash":"f806eff","date":"2026-09-23 13:47:15 -0700","author":"Steve","subject":"Revert \"front-page-steward: ux-primitives bundle (grid) TK-12031\"","body":"This reverts commit 2b771cc930ef5691fbf29ffb0bc7774717ac5bbf."},{"hash":"2b771cc","date":"2026-09-23 13:46:44 -0700","author":"front-page-steward","subject":"front-page-steward: ux-primitives bundle (grid) TK-12031","body":""},{"hash":"fd084e3","date":"2026-09-23 11:54:42 -0700","author":"Steve","subject":"TK-12031: bump ux-primitives bundle to canonical v1.1.1#7d74cd3b4123 (finish() clearSkel guard) — pilot parity with the 41-site fleet","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01KDmDMpwuKtwpXZnhec7bTP"},{"hash":"d0f64b8","date":"2026-09-22 16:45:46 -0700","author":"Steve","subject":"front-page-steward: ux-primitives v1.1.1 — Cody slow-load fix (empty-state retracts on late products; never strands over a populated grid) TK-12031","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"78de9f1","date":"2026-09-22 16:05:37 -0700","author":"front-page-steward","subject":"front-page-steward: ux-primitives v1.1.0 lifecycle grid activation (data-ux-grid: safe skeleton auto-clear + zero-detect empty-state) TK-12031","body":"Real-activation neg-control proven both engines: skeleton appears-then-auto-clears, products render, sort re-render 0 ghost skeletons, true-zero empty-state only, no new bundle errors.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Bjud9yhkmyLh365yZodCdn"},{"hash":"5e587a7","date":"2026-09-22 15:19:09 -0700","author":"front-page-steward","subject":"front-page-steward: rework ux-primitives to silent bundle (remove demo-strip+fabricated SKU; no unsafe skeleton) TK-12031","body":"Negative-control proven: bundle introduces no new errors, grid/sort/density intact.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Bjud9yhkmyLh365yZodCdn"},{"hash":"31033ad","date":"2026-09-22 14:29:18 -0700","author":"front-page-steward","subject":"front-page-steward: wire ux-primitives Bundle-B (toast+copy demo, idempotent) TK-12031","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Bjud9yhkmyLh365yZodCdn"},{"hash":"cb7a2b8","date":"2026-09-10 11:56:24 -0700","author":"Steve Abrams","subject":"Add clean /privacy route/rewrite (AdSense)","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"96fdcef","date":"2026-09-10 11:20:52 -0700","author":"Steve Abrams","subject":"Add privacy footer link (AdSense discoverability)","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"1de43b7","date":"2026-09-10 11:04:50 -0700","author":"Steve Abrams","subject":"Standardize privacy policy to /privacy.html + footer link (AdSense)","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"c0e5de1","date":"2026-09-09 16:02:07 -0700","author":"Steve","subject":"TK-11341: add AdSense Auto-Ads loader + ads.txt (revert to remove ads)","body":""},{"hash":"08d17aa","date":"2026-08-12 08:33:41 -0700","author":"Steve","subject":"viewer standard: add Grid/List toggle + per-field on/off menu (Fields) to product grid","body":""},{"hash":"2e9a728","date":"2026-08-04 11:44:42 -0700","author":"Steve","subject":"SEO: rel=nofollow sponsored on designerwallcoverings.com links (independent ranking) [fleet-seo]","body":""},{"hash":"905c339","date":"2026-08-04 11:27:32 -0700","author":"Steve","subject":"Wire DW Meta Pixel 1431180262113856 + DW-network ad slot [ads/tracking rollout]","body":""},{"hash":"7dc735a","date":"2026-08-03 13:38:32 -0700","author":"Steve","subject":"Revert \"GA4: propagate site gtag to untagged pages (fleet coverage)\"","body":"This reverts commit ee2e0451fe5283c487006ca0756ae83b72415c3a."},{"hash":"ee2e045","date":"2026-08-03 13:37:06 -0700","author":"Steve","subject":"GA4: propagate site gtag to untagged pages (fleet coverage)","body":""},{"hash":"23813f6","date":"2026-07-29 09:58:11 -0700","author":"Steve","subject":"corner-nav: block javascript:/data: URIs in search preview (URL-scheme allowlist)","body":""},{"hash":"9860a0d","date":"2026-07-29 09:42:41 -0700","author":"Steve","subject":"corner-nav: live as-you-type search with thumbnail previews (title+tags+description)","body":""},{"hash":"80278b4","date":"2026-07-06 17:57:07 -0700","author":"Steve","subject":"Square product-card images (aspect-ratio 1/1)","body":""},{"hash":"adf4683","date":"2026-07-03 09:57:40 -0700","author":"Steve Abrams","subject":"corner-nav: move login to its own hamburger in upper-left (panel slides from left)","body":""},{"hash":"fcffa62","date":"2026-06-22 10:39:40 -0700","author":"Steve Studio","subject":"flockedwallpaper: rebuild data from live catalog (0 banned 'Wallpaper' titles, drop archived/deleted) + wire /img proxy route","body":"- flocked_products PG table rebuilt from live dw_unified shopify_products mirror:\n  synced 106 ACTIVE rows to current 'Wallcovering' titles, dropped 117 archived/deleted/draft + 4 orphans\n- server.js: wire the redact module's /img/<token> image-proxy route (was unrouted in this\n  raw-http server -> product images 404'd) + pre-warm token map at boot\n- result: 106 products, 0 'Wallpaper' titles, images 200 via Cloudflare\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>"},{"hash":"78c5957","date":"2026-06-17 09:47:04 -0700","author":"Steve Abrams","subject":"leak fix: 404-guard raw catalog json (flocked-products.json served 227 products w/ Cole&Son/Thibaut names) + git-rm the artifact; page uses scrubbed /api/products","body":""},{"hash":"5234c73","date":"2026-06-12 09:21:58 -0700","author":"Steve","subject":"code-health: untrack test/diagnostic html + 404-guard scratch/test/backup/source files in static server","body":""},{"hash":"459b4e6","date":"2026-06-04 07:31:48 -0700","author":"Steve","subject":"seo: add canonical + Open Graph + Twitter card + meta description to homepage head","body":""},{"hash":"6367d69","date":"2026-06-01 16:18:32 -0700","author":"Steve","subject":"vendor-redact: scrub DW vendor names from /api/products (raw-http server uses redact() inline; was leaking)","body":""},{"hash":"b397162","date":"2026-05-30 23:56:11 -0700","author":"Steve","subject":"remove publicly-served backup files and tighten .gitignore to prevent recurrence","body":""},{"hash":"6228a2f","date":"2026-05-27 16:34:09 -0700","author":"Steve","subject":"flocked: fix inert sort+density controls — defer wiring to DOMContentLoaded","body":"The controls-wiring IIFE ran at parse time, before #productGrid was declared\n(getElementById -> null -> early return), so the density slider and live\nsort-change listener never bound. Wrapped the wiring in a DOMContentLoaded\nguard so the grid exists when it runs. Sort/density now functional + remain\nlocalStorage-persisted. Corner-nav + controls markup were already present."},{"hash":"1f3cea8","date":"2026-05-26 09:45:04 -0700","author":"Steve","subject":"redact vendor names from customer-facing /api (close fleet leak)","body":""},{"hash":"950ca66","date":"2026-05-20 00:27:39 -0700","author":"Steve","subject":"add: pre-stage Meta Pixel snippet (placeholder; flip via _dw-batch set-fb-pixel.sh)","body":"Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>"},{"hash":"3e74f2c","date":"2026-05-19 23:13:47 -0700","author":"Steve","subject":"flockedwallpaper: untrack 6 stale files at repo root (21MB freed from clone)","body":"- claude-skills-export.zip (21MB), claude-skills-md-only.zip (600K): stale ~/.claude/skills exports from May 7\n- index-old-backup.html, server-old-backup.js: pre-rewrite snapshots, superseded\n- test-hex-sort.html, test-load.html: throwaway test pages\nAll 6 now match patterns in .gitignore (previous commit). Files remain on disk; cache-only removal."},{"hash":"1e56daa","date":"2026-05-19 23:13:47 -0700","author":"Steve","subject":"flockedwallpaper: gitignore stale-file patterns + make dotenv path env-overridable","body":"- .gitignore: add *.zip, *-old-backup*, test-*.html (catches the 6 stale files at repo root)\n- server.js:4 — dotenv path now reads process.env.DOTENV_PATH first, falls back to /root/DW-Agents/claudette-agent/.env (Kamatera default); unblocks local dev which can't read the Kamatera-absolute path"},{"hash":"11ebb51","date":"2026-05-19 22:10:26 -0700","author":"Steve Abrams","subject":"add corner-nav.js — universal top-right nav per _shared/corner-nav.js","body":"Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>"},{"hash":"bdd3a6f","date":"2026-05-18 20:35:18 -0700","author":"Steve","subject":"Fix doubled period in footer description copy","body":""},{"hash":"2518b85","date":"2026-05-18 20:34:58 -0700","author":"Steve","subject":"gitignore: also exclude plain *.bak files","body":""},{"hash":"075035f","date":"2026-05-18 20:34:43 -0700","author":"Steve","subject":"Hero search keeps the active sort order applied instead of resetting to DB order","body":""},{"hash":"d957aed","date":"2026-05-18 20:34:43 -0700","author":"Steve","subject":"server.js: confine static file serving to project root — block path traversal","body":""},{"hash":"0f7f065","date":"2026-05-18 20:34:07 -0700","author":"Steve","subject":"Wire the Sort select to actually re-sort the grid (newest/color/style/sku/title) and persist across reload + color filter","body":""},{"hash":"d2dfd90","date":"2026-05-18 20:33:25 -0700","author":"Steve","subject":"Make product grid a CSS grid so the density slider actually changes column count","body":""},{"hash":"a4e67c8","date":"2026-05-13 07:22:47 -0700","author":"Steve","subject":"header: remove duplicate <header> with dwmOpen-contact (was overlapping ns-header) + add display:none default to .ns-modal so How-can-we-help only opens on click. Restores canonical logo-UL + hamburger-UR layout per MEMORY rule.","body":""},{"hash":"a024499","date":"2026-05-13 07:15:16 -0700","author":"Steve","subject":"brand: replace remaining fake brand globally → 'flockedwallpaper' across head/meta/wordmark/footer — enforces MEMORY brand-stem rule","body":""},{"hash":"e3e91f7","date":"2026-05-11 02:21:58 -0700","author":"Steve Abrams","subject":"fleet-grid refine: chip_uniform_aspect (flockedwallpaper)","body":""},{"hash":"ef423f3","date":"2026-05-11 02:19:54 -0700","author":"Steve Abrams","subject":"snapshot before fleet-grid refine tick 4","body":""},{"hash":"f426863","date":"2026-05-08 07:35:37 -0700","author":"Steve","subject":"Hamburger always visible on right — propagated from novasuede a815690","body":"Standing rule (~/.claude/skills/dw-site-build/SKILL.md): hamburger ALWAYS\nvisible on the right, inline nav collapses to drop-panel at all widths.\nSame edit as novasuede + silkwallcoverings.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>"},{"hash":"f7432b6","date":"2026-05-07 20:38:37 -0700","author":"Steve","subject":"initial scaffold + ns-header + Atelier rebrand + sort/density/search controls","body":"47/47 fleet QA (100%) milestone state.\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>\n"}]}