{"slug":"philipperomano","total":20,"limit":100,"offset":0,"since":null,"commits":[{"hash":"d391781","date":"2026-07-27 20:05:44 -0700","author":"Steve Abrams","subject":"migrate GoDaddy auth → Bearer PAT (TK-10 key rotation); sso-key fallback retained","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"9d4d252","date":"2026-06-24 08:04:58 -0700","author":"Steve","subject":"Coastal Mist: point at canonical Shopify CDN image (live fix applied)","body":""},{"hash":"c8d1c7d","date":"2026-06-24 07:49:12 -0700","author":"Steve","subject":"Coastal Mist: use genuine BA469 (Washington WC Smoke Gray Sisal) image, replacing tan-sibling interim","body":""},{"hash":"118d152","date":"2026-06-24 07:38:10 -0700","author":"Steve","subject":"Coastal Mist: swap oil-filter image for real Portofino Bamboo texture (interim; live fix pending approval)","body":""},{"hash":"983ba4d","date":"2026-06-23 09:32:44 -0700","author":"Claude","subject":"Replace pagination with infinite scrolling (IntersectionObserver)","body":"- Remove pagination nav controls (prev/next/page numbers)\n- Add scroll sentinel at grid bottom\n- Load next page on scroll via fetch when user approaches sentinel\n- Preserve sort + density slider functionality\n- localStorage tracks current page for continuous browsing\n\nComplies with standing requirement: all product grids must use infinite scrolling."},{"hash":"efb6b90","date":"2026-06-03 23:10:58 -0700","author":"Steve","subject":"gitignore: exclude .deploy.conf (deploy config, untracked)","body":""},{"hash":"9ddbf64","date":"2026-06-03 20:45:29 -0700","author":"Steve","subject":"Scrub residual vendor names from products.json (title/vendor/tags); preserve sku/handle","body":""},{"hash":"8aa8581","date":"2026-06-03 20:20:22 -0700","author":"Steve","subject":"philipperomano SEO: add canonical + Open Graph + Twitter card + listing h1 (DTD verdict B)","body":"Storefront had ZERO canonical/og/twitter and no h1 on the listing page.\nExtended layout() with canonical/ogImage/ogTitle/ogDesc params injecting:\ncanonical, og:type/site_name/title/description/url/image, twitter:card.\nListing route: canonical = path + cat/type only (DTD-B, drops volatile\nsort/page/q to consolidate faceted duplicates), og:image = first product;\nadded an sr-only h1. Detail route: per-product canonical /p/<handle> +\nog:image (detail already had a visible h1). Added .sr-only utility CSS.\nVerified on a free port: homepage + faceted + detail all correct, grid/sort/\ndensity intact, JS unaffected. Local — needs deploy."},{"hash":"6f1ad72","date":"2026-05-31 00:01:46 -0700","author":"Steve Abrams","subject":"gitignore: add full backup-file pattern set (*.bak-*, *.pre-*, *.orig, *.save, *~, *.old, copy-of-*)","body":"Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>"},{"hash":"5895c84","date":"2026-05-30 21:24:24 -0700","author":"Steve Abrams","subject":"fix: /p/:handle uses ENRICHED (junk-filtered) not raw DATA; /health reports post-filter count; add noreferrer to all target=_blank links","body":"Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>"},{"hash":"84c4840","date":"2026-05-29 15:11:06 -0700","author":"Steve Abrams","subject":"feat(theme): add ?theme=N toggle to layout() — mirrors dw-domain-fleet productPage() canonical (commit 34fbe0e). Single block injected after <body> opening. Hidden until ?theme=1|2 or localStorage opt-in. Shares 'wallco-page-theme' key for cross-site continuity.","body":""},{"hash":"cf04469","date":"2026-05-28 07:26:16 -0700","author":"Steve","subject":"scrub vendor name leaks from products.json source (176 products: title/vendor/tags cleaned per sku-redact denylist)","body":""},{"hash":"fe6a21f","date":"2026-05-25 00:26:25 -0700","author":"Steve Abrams","subject":"naturals: add /naturals route + nav link + inclusive classifier","body":"Catches all 1,894 natural-fiber wallcoverings — both real fiber (grasscloth /\ncork / linen / silk / jute / sisal / abaca / raffia / seagrass / bamboo) AND\nType II commercial vinyls with natural-look textures (linen-look / cork-look /\ngrasscloth-look / etc.).\n\nPer Steve's directive 2026-05-24 — \"most Type II vinyl textures work\". The\nclassifier is intentionally inclusive: any product whose product_type contains\n'natural' OR whose title/handle matches the NATURALS_RE regex (which includes\nall the fiber names PLUS texture-suggestion words like 'fiber', 'woven',\n'paperweave', 'cane', 'rattan', 'reed', 'sandstone') lands in /naturals.\n\nChanges:\n- ENRICHED rows now carry _isNatural boolean (computed on boot, ~1ms total)\n- NEW NATURALS_COUNT constant, printed in boot log\n- NEW /naturals route — 302-redirects to /?cat=naturals\n- Index route now reads ?cat= alongside ?type=, filters ENRICHED (not raw DATA)\n- Nav: 'Naturals (1,894)' link with count, between 'All' and the product-type list\n- layout() takes a cat= param so the active highlight is correct\n\nBoot results — junk-filter keeps 5,913 of 8,227 (drops 2,314), naturals\nenriched count = 1,894 (32% of post-filter catalog)."},{"hash":"8fdcf2f","date":"2026-05-21 18:57:51 -0700","author":"Steve Abrams","subject":"header.top flex + .contact CSS from kamatera (hunk 4)","body":""},{"hash":"00974f4","date":"2026-05-21 18:56:34 -0700","author":"Steve Abrams","subject":"Shopify fetch + cache + categorizeTags + safeBodyHtml + memoMailto from kamatera (hunk 3)","body":""},{"hash":"30d1a86","date":"2026-05-21 18:52:42 -0700","author":"Steve Abrams","subject":"color buckets + colorway-hex + ENRICHED + junk-filter from kamatera (hunk 2)","body":""},{"hash":"03b56e8","date":"2026-05-21 18:48:55 -0700","author":"Steve Abrams","subject":"contacts: import DW_PHONE/PR_EMAIL constants from kamatera (hunk 1)","body":""},{"hash":"597bd72","date":"2026-05-18 20:30:23 -0700","author":"Steve Abrams","subject":"add sort select + density slider to product grid (DW standing rule), with localStorage persistence","body":""},{"hash":"4cd23c3","date":"2026-05-18 10:18:02 -0700","author":"Steve Abrams","subject":"copy: replace 'private label' with 'exclusive' (brand-voice rule)","body":""},{"hash":"2428a07","date":"2026-05-06 10:25:45 -0700","author":"Steve Abrams","subject":"initial scaffold (gitify-all 2026-05-06)","body":""}]}