Ffepurchasing
Search the build
-
098c6b72026-07-06 Square product-card images (aspect-ratio 1/1) -
ff7f64b2026-07-03 corner-nav: move login to its own hamburger in upper-left (panel slides from left) -
a2c5b592026-06-19 Mount new-arrivals promo strip (Tier B): require ../_shared/_universal-promo-banner before express.static — text-only rotating 'New · <product> →' banner from /api/products?sort=newest. Local only; deploy gated. -
4c051582026-06-18 fix: safeImg allow same-origin /img/ proxy urls (vendor-neutral image proxy 2026-06-03) — product cards were falling back to hero-bg (images all wrong) -
2e367c72026-06-11 ffepurchasing: rails fire again — wire sliders + grid filter to aesthetic-OR-tags matcher (prod-safe try-require + inline fallback) -
1ec14db2026-06-09 step2 vendor-leak fix: dual-key /sample resolver + handle_display hrefs -
004be022026-06-09 snapshot before step2 codemod -
7bd91092026-06-03 Scrub residual vendor names from products.json (title/vendor/tags); preserve sku/handle -
4ffcd752026-06-01 admin: add dw-theme-nav 20-theme navigator (upper-right, admin-only) -
81397e62026-06-01 hero: rotate curated room-setting pool (hero-pool.json), guard >=1400px, no swatch blur -
1fb9ff72026-06-01 homepage: collapse duplicated 'Ideas' rail-eyebrows into one section eyebrow -
1934fb32026-06-01 Unique hero image (backsync from prod, fleet hero dedup 2026-06-01) -
fc990f82026-06-01 clean-URL: 301 redirect legacy /*.html -> extension-less routes (/index.html -> /, /trade-account.html -> /trade-account) -
1dadf892026-06-01 noopener,noreferrer on sister-site constellation window.open popup -
4c34b572026-06-01 /api/facets: drill-down counts over the active filtered set (q/aesthetic/vendor) via shared filterProducts() — was counting whole niche catalog -
02ead9b2026-05-30 remove served backup file public/index.html.bak-20260526152130 and add *.bak-* to .gitignore -
8a7bd962026-05-28 scrub vendor name leaks from products.json source (224 products: title/vendor/tags cleaned per sku-redact denylist) -
14c38052026-05-26 frontend: cleanSku() strips vendor names from displayed sku (.ven/list/detail) + defer renderRailSections call (fix ReferenceError) — click-through verified -
9ea99912026-05-26 sku-redact: wire shared vendor-id display scrubber -
1ac04322026-05-26 ffepurchasing: editorial rail/facet labels — polished neutrals over real aesthetic buckets; behavior unchanged -
6ff2de02026-05-26 ffepurchasing: commit config-rails fix — aspirational hotel/restaurant (0 hydrate) → real buckets (5 rails fire) -
407df7e2026-05-26 wire api-vendor-redact middleware (close vendors-facet leak) -
8b06c9d2026-05-25 remove vendor names from customer-facing cards/rows/rails (DW rule: never expose vendor identity) -
52ff72f2026-05-25 retag aesthetic from PG: 598 rows updated -
f1221c92026-05-19 make server.js self-contained — gate _shared/admin-catalog behind MICROSITE_ADMIN_ENABLED env flag (kamatera deploy unblock) -
118b48e2026-05-19 fix: add noreferrer to target=_blank external links -
084f9b52026-05-19 WIP: partial sort hydration from killed agent — finish in next pass -
2bdb4aa2026-05-19 fix: add .bak/.pre-* 404 guard and correct /api/facets total -
8a7784b2026-05-19 chore: untrack .bak/.pre-* snapshots and broaden .gitignore -
c489d2e2026-05-19 Phase 2b: harden .card .pat against long-token title clipping (overflow-wrap) -
232394b2026-05-19 Phase 2: mobile-ready + tap-to-reveal -
e92af142026-05-19 fix site.config.json — correct slug/identity (was copy-pasted from hospitalitywallpaper) -
0de1c6c2026-05-19 stage2: wire microsite catalog + admin CRUD -
72acf4a2026-05-14 hero-4grid: relocate json from data/ to public/ for Express static -
e92a6292026-05-14 4-grid hero: drop-in script + crop CSS + initial 4 newest products -
768f0bf2026-05-14 favicon: Mag-7-inspired SVG glyph -
eec46e02026-05-13 corner-nav: title-case the brand name even when .ns-name source is lowercase -
84446f42026-05-13 corner-nav: title-case brand display (e.g. corkwallcovering → Cork Wallcovering) -
33c6ad82026-05-13 corner-nav: fix injection — script tag was landing inside HTML comment, now anchored to real </body> -
8dec2712026-05-13 fix: contact modal CSS+HTML (was rendering inline as raw emoji/links) -
29b5c4c2026-05-13 add universal corner-nav.js (UR 4-icon: bag/account/search/menu) -
0102b552026-05-13 remove stray contact modal markup that was rendering inline on the page -
24cf5362026-05-13 snapshot: 5 file(s) changed, +3 new, ~2 modified -
137bcca2026-05-10 add gated figma capture loader (only fires on ?figmacapture= URL param) -
af3374d2026-05-10 brand customization for ffepurchasing -
690b5d62026-05-08 fleet UX: novasuede-style hamburger drawer (DW-Websites/_shared/dw-fleet-nav.js) -
c9699382026-05-07 graphic-loop pass 13: real footer brand + Facebook link + OG/Twitter meta tags -
f8c4ed72026-05-07 graphic-loop pass 12: niche keyword filter (no off-niche products like 'solid' on patterned sites) -
3e4a6bb2026-05-07 graphic-loop pass 11: add Ideas rails (New this week + Curated picks) above main grid -
de6aabe2026-05-07 graphic-loop pass 10: center-mark to top + readable text-shadow + tighter letter-spacing (no mix-blend-mode) -
fb4455f2026-05-07 graphic-loop pass 9: real site name + 20-image hero rotation + 2400px hero res -
9880dd82026-05-07 graphic-loop pass 8: theme-aware font Cormorant Garamond (panel-approved comprehensive 16-bucket assignment) -
2cbfe462026-05-06 graphic-loop pass 2: fix .corner-mark contrast + soften hero overlay (qwen3:14b consensus across fleet) -
404c2522026-05-06 initial scaffold (gitify-all 2026-05-06)
Authors
- Steve54
Agents used
Skills used
- /vendor3
- /facets3
- /body3
- /products2
- /tags2
- /index2
- /trade-account2
- /sample1
- /handle1
- /aesthetic1
- /list1
- /detail1
- /facet1
- /restaurant1
- /rows1
- /rails1
- /admin-catalog1
- /header1
- /identity1
- /links1
- /account1
- /search1
- /menu1
- /robots1
- /dw-fleet-nav1
Creative ideas + design notes
52ff72f · 2026-05-25 · retag aesthetic from PG: 598 rows updated
before: all=600 after: all=2, beige=43, contemporary=60, gray=3, textured=448, traditional=26, white=18 Backfills correct multi-bucket aesthetic tagging from dw_unified.microsite_products (DTD verdict B, 2026-05-25 fleet retag run). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
118b48e · 2026-05-19 · fix: add noreferrer to target=_blank external links
Both index.html (Facebook) and dw-fleet-nav.js (sister-brand rail) had target="_blank" with rel="noopener" only — adds noreferrer per the standing fleet hygiene rule. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2bdb4aa · 2026-05-19 · fix: add .bak/.pre-* 404 guard and correct /api/facets total
- Express middleware before express.static returns 404 for any path matching .bak / .bak.* / .pre-* so leftover local snapshots never serve from public/. - /api/facets total now reflects PRODUCTS_NICHE (the filtered list served by /api/products) instead of the raw PRODUCTS array, so the footer/header counts match what users can actually see. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
8a7784b · 2026-05-19 · chore: untrack .bak/.pre-* snapshots and broaden .gitignore
Removes 16 committed snapshot files (15 index.html backups + 1 server.js backup) from version control; adds *.bak.*, *.pre-*, *.pre-*.bak patterns to .gitignore so future snapshots stay local-only. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
137bcca · 2026-05-10 · add gated figma capture loader (only fires on ?figmacapture= URL param)
The script never loads for normal visitors — only when the URL contains 'figmacapture=' query string or hash, which is required for the figma MCP generate_figma_design tool to convert the page to a Figma file.
af3374d · 2026-05-10 · brand customization for ffepurchasing
- swap Heritage Atelier → site-specific brand - swap GA G-XM0936TL4N → site-specific measurement_id - swap palette + typography to match per-site fashion template - swap port + sitemap/robots domain
690b5d6 · 2026-05-08 · fleet UX: novasuede-style hamburger drawer (DW-Websites/_shared/dw-fleet-nav.js)
This site has 2 </body> (one in a comment block) — script tag goes before the LAST </body> per the corrected injector logic.
File tree
- .gitignore
- _universal-auth.js
- _universal-contact.js
- data/products.json
- data/trade-inquiries.jsonl
- package-lock.json
- package.json
- public/corner-nav.js
- public/dw-fleet-nav.js
- public/dw-theme-nav.js
- public/favicon.svg
- public/hero-4grid.js
- public/hero-4grid.json
- public/hero-bg.jpg
- public/index.html
- public/sku-redact.js
- public/trade-account.html
- server.js
- site.config.json