Contractwallpaper
repo: ~/Projects/contractwallpaper · 105 commits · 0 in last 24h, 5 in last 7d · ▅█
Search the build
105 commits indexed
9650e5c
2026-09-23
front-page-steward: ux-primitives bundle (grid) TK-12031
900971f
2026-09-23
Revert "front-page-steward: ux-primitives bundle (grid) TK-12031"
7498839
2026-09-23
front-page-steward: ux-primitives bundle (grid) TK-12031
76f7cb3
2026-09-22
revert ux-primitives auto-apply — coordinator gates fan-out (TK-12031)
d912c71
2026-09-22
front-page-steward: ux-primitives bundle (silent) TK-12031
cd6b4f6
2026-09-10
governance(TK-11370): make live-by-default Shopify writers dry-run by default
e506b04
2026-09-10
Add clean /privacy route (AdSense URL consistency)
0794bbd
2026-09-10
Standardize privacy policy to /privacy.html + footer link (AdSense)
b393e92
2026-09-10
Add AdSense-compliant privacy policy page + footer link + /privacy route
99698dd
2026-09-09
TK-11341: add AdSense Auto-Ads loader + ads.txt (revert to remove ads)
ba62416
2026-08-24
auto-data-snapshot: 2026-08-24T04:13:07 (1 data files) — server.js.ldrbak.1787569812
267c8b1
2026-08-24
Add p.visible!==false guard to product load filter (cluster5 resid)
cabc469
2026-08-22
auto-data-snapshot: 2026-08-22T11:19:22 (1 data files) — data/products.json
f2b52d6
2026-08-12
viewer standard: add per-field on/off menu (Fields ▾) to product grid
973785f
2026-08-04
fix: take infinite-scroll .loading indicator out of flow (kills ~0.3-0.4 CLS scroll-jump)
acaf361
2026-08-04
Wire DW Meta Pixel 1431180262113856 + DW-network ad slot [ads/tracking rollout]
6a2ec05
2026-08-03
GA4: propagate site gtag to untagged pages (fleet coverage)
1ab1552
2026-08-01
contractwallpaper: adopt href-to-deeper-data storefront primitives (TK-10093)
3fae184
2026-07-30
Catalog-wide Finish/Collection cosmetic cleanup: Title-Case 2,780 all-caps Collections + normalize 358 semicolon Finishes across all vendors (Shopify + mirror), 0 fail
43a400e
2026-07-30
auto-save: 2026-07-30T10:16:54 (1 files) — tmp-kravet-finish-collection-clean.mjs
ffef1db
2026-07-30
search: scroll results into view on mobile (grid was below the fold → looked like nothing happened)
b3ba1e2
2026-07-29
corner-nav: block javascript:/data: URIs in search preview (URL-scheme allowlist)
65e722d
2026-07-29
search: /api matcher now covers title+tags+description+type+vendor+sku
7edf9de
2026-07-29
corner-nav: live as-you-type search with thumbnail previews (title+tags+description)
1124c80
2026-07-28
auto-save: 2026-07-28T12:30:33 (1 files) — tmp-kravet-alldata.mjs
59e9f3f
2026-07-28
auto-save: 2026-07-28T11:00:01 (2 files) — tmp-kravet-alldata.mjs tmp-kravet-spec-pilot.mjs
91d4777
2026-07-28
auto-save: 2026-07-28T10:29:49 (1 files) — tmp-kravet-cat360.mjs
b13919a
2026-07-06
Square product-card images (aspect-ratio 1/1)
0c0df6a
2026-07-03
corner-nav: move login to its own hamburger in upper-left (panel slides from left)
d106d64
2026-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.
9fa7175
2026-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)
0e26959
2026-06-11
contractwallpaper: rails fire again — wire sliders + grid filter to aesthetic-OR-tags matcher (prod-safe try-require + inline fallback)
02b2c8a
2026-06-09
step2 vendor-leak fix: dual-key /sample resolver + handle_display hrefs
cc26092
2026-06-09
snapshot before step2 codemod
8f1c928
2026-06-03
Scrub residual vendor names from products.json (title/vendor/tags); preserve sku/handle
65e7148
2026-06-03
seo/a11y: add visually-hidden <h1> (site name) for heading semantics — zero visual change
a4620fe
2026-06-03
a11y: add aria-label to contact/sample form inputs (zero visual; screen-reader association)
5d799ee
2026-06-01
admin: add dw-theme-nav 20-theme navigator (upper-right, admin-only)
0a2dcb0
2026-06-01
fleet rebuild: dw-header (hamburgers UL + centered name) + unique high-res hero + accent — local branch
e6c7052
2026-06-01
dw-header: hide ANY pre-existing <header> (not just ns-header); title-case bare-slug names
cc41d0d
2026-06-01
FIX: dw-header was injected inside a doc-comment (never ran); re-inject before the real </body>
f499eb9
2026-06-01
hero: rotate curated room-setting pool (hero-pool.json), guard >=1400px, no swatch blur
bd1c24c
2026-06-01
header name → domain name 'Contract Wallpaper' (remove odd brand name)
d159c4c
2026-06-01
hero: huge 2520px clean hero from dw_unified (graphic-designer vetted; no header/text/watermark)
2452c17
2026-06-01
header A-rebuild: dw-header.js wins fleet — patched to hide original header + corner-nav + v1, fix centered site-name (title fallback), add theme toggle; v1 removed from index
5086934
2026-06-01
hero: graphic-designer-vetted clean replacement (no baked text/watermark/vendor logo)
1453284
2026-06-01
header: remove dw-header.js — fixes overlapping hamburgers (DW-HAMBURGER-NAV v1 sole nav); fleet regression sweep
8720ad5
2026-06-01
hero/ideas: single big full-bleed hero (remove 2x2 four-square grid + hero-4grid.js/json + inert CSS), collapse Ideas to one rail
567bd23
2026-06-01
disable hero-4grid overlay so the unique high-res room/pattern hero shows full-bleed
d09a4fc
2026-06-01
fleet rebuild: dw-header (hamburgers UL + centered name) + unique high-res hero + accent — local branch
a939fdc
2026-06-01
homepage: collapse duplicated 'Ideas' rail-eyebrows into one section eyebrow
c0f0cef
2026-06-01
Unique hero image (backsync from prod, fleet hero dedup 2026-06-01)
d7cdec8
2026-06-01
Re-add Big Red embed (revert conflicted; re-injected)
11ef480
2026-06-01
fleet rebuild: dw-header (hamburgers UL + centered name) + unique high-res hero + accent — local pilot branch
8f96f91
2026-06-01
hero: activate self-contained 2x2 hero-4grid (fleet sweep, local)
530a207
2026-06-01
Remove Big Red widget — never UX-worked, collided with Help pill (fleet sweep)
15566a6
2026-06-01
noopener,noreferrer on sister-site window.open popup
c90b50d
2026-06-01
/api/facets drill-down counts via shared filterProducts() + legacy .html->clean 301 redirect
34cc042
2026-05-30
fix: add *.bak-* pattern to .gitignore and remove leaked public backup file
10ccec0
2026-05-29
feat(fleet): theme1/theme2 query-param-gated toggle on catalog page
78cb0ba
2026-05-28
scrub vendor name leaks from products.json source (224 products: title/vendor/tags cleaned per sku-redact denylist)
177cbdb
2026-05-26
frontend: cleanSku() strips vendor names from displayed sku (.ven/list/detail) + defer renderRailSections call (fix ReferenceError) — click-through verified
961be83
2026-05-26
sku-redact: wire shared vendor-id display scrubber
60b930c
2026-05-26
rails: repoint at real aesthetic buckets so rails fire + editorial labels
30f6e7a
2026-05-26
Revert "site.config rails: align with actual product aesthetics"
3e62562
2026-05-26
site.config rails: align with actual product aesthetics
00ce39f
2026-05-26
wire api-vendor-redact middleware (close vendors-facet leak)
eca0bc3
2026-05-25
add: clean-URL routes for /care /history /sourcing /trade /vocabulary + 404 guard middleware
40b9ebc
2026-05-25
fix: remove vendor leak in Ideas rail + add noreferrer to fb link
0c9c64a
2026-05-25
retag aesthetic from PG: 586 rows updated
ba7d9bb
2026-05-20
add: pre-stage Meta Pixel snippet (placeholder; flip via _dw-batch set-fb-pixel.sh)
385ee04
2026-05-20
fix: /about → history.html alias (was 404)
07f66cf
2026-05-19
make server.js self-contained — gate _shared/admin-catalog behind MICROSITE_ADMIN_ENABLED env flag (kamatera deploy unblock)
a2caabb
2026-05-19
Phase 2b: harden .card .pat against long-token title clipping (overflow-wrap)
13d9e8e
2026-05-19
fix: null-guard dead #theme-toggle reference (clean console + immediate grid render)
15ec576
2026-05-19
Phase 2: mobile-ready + tap-to-reveal
1868cca
2026-05-19
stage2: wire microsite catalog + admin CRUD + grid/list view
b491062
2026-05-18
remove dead PRODUCTS_ORIG var, no-op global defineProperty, and stale comment
c310678
2026-05-18
untrack 28 stale .bak/.pre- snapshot files (26 in public/) and gitignore the patterns
9d6418a
2026-05-18
wire up sort select to /api/products query + fix /api/facets total to use niche-filtered count
8041255
2026-05-14
hero-4grid: relocate json from data/ to public/ for Express static
30aa6a7
2026-05-14
4-grid hero: drop-in script + crop CSS + initial 4 newest products
0d3f42f
2026-05-14
favicon: Mag-7-inspired SVG glyph
813fe58
2026-05-13
fix env wiring — add __dirname-anchored dotenv + dotenv dep so ADMIN_PASS / GEORGE_AUTH actually load
6688096
2026-05-13
corner-nav: title-case the brand name even when .ns-name source is lowercase
ea08447
2026-05-13
corner-nav: title-case brand display (e.g. corkwallcovering → Cork Wallcovering)
4b41bde
2026-05-13
embed Big Red customer chat (lower-left, retail mode, vendor-redacted)
68796bd
2026-05-13
chip-click → product details modal; vendor redacted in card overlay
6a91d80
2026-05-13
add universal corner-nav.js (UR 4-icon: bag/account/search/menu)
4939dbb
2026-05-13
remove stray contact modal markup that was rendering inline on the page
7d4eed2
2026-05-13
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.
c873653
2026-05-13
brand: replace remaining fake brand globally → 'contractwallpaper' across head/meta/wordmark/footer — enforces MEMORY brand-stem rule
5230419
2026-05-11
hamburger nav: apply canonical pattern from sister-site fleet
cec05d5
2026-05-11
snapshot before fleet-grid refine
33c3359
2026-05-10
sort-skill UI: add Light→Dark / Dark→Light / Color Wheel options
d1aa536
2026-05-10
sort-skill canonical: add light-dark/dark-light/wheel + helpers
26256f1
2026-05-07
graphic-loop pass 13: real footer brand + Facebook link + OG/Twitter meta tags
6491a09
2026-05-07
graphic-loop pass 12: niche keyword filter (no off-niche products like 'solid' on patterned sites)
36f2610
2026-05-07
graphic-loop pass 11: add Ideas rails (New this week + Curated picks) above main grid
bd077ce
2026-05-07
graphic-loop pass 10: center-mark to top + readable text-shadow + tighter letter-spacing (no mix-blend-mode)
dea5d30
2026-05-07
graphic-loop pass 9: real site name + 20-image hero rotation + 2400px hero res
a6cd7bb
2026-05-07
graphic-loop pass 8: theme-aware font Inter (panel-approved comprehensive 16-bucket assignment)
3983406
2026-05-06
graphic-loop pass 5: serif hero typography (Cormorant Garamond) + nav legibility (qwen3 unanimous)
51df14d
2026-05-06
graphic-loop pass 2: fix .corner-mark contrast + soften hero overlay (qwen3:14b consensus across fleet)
a40a5d9
2026-05-06
initial snapshot — gitify all builds (CLAUDE.md rule 2026-05-06)
Authors
Steve 98 front-page-steward 4 auto-commit-fleet 2 steve 1
Skills used
/products 4 /vendor 4 /privacy 3 /sample 2 /tags 2 /watermark 2 /facets 2 /care 2 /list 2 /cron 1 /pm2 1 /wrapper 1 /claude 1 /code 1 /off 1 /tracking 1 /data 1 /handle 1 /a11y 1 /body 1 /text 1 /ideas 1 /json 1 /pattern 1 /aesthetic 1 /index 1 /theme2 1 /detail 1 /sliders 1 /history 1
Creative ideas + design notes
Commits with substantial prose (≥120 chars) — the rationale behind each move.
cd6b4f6 · 2026-09-10 · governance(TK-11370): make live-by-default Shopify writers dry-run by default
Flip `DRY = argv.includes('--dry')` -> `DRY = !argv.includes('--apply')` so a
zero-argument run no longer fires customer-facing Shopify writes.
Backward compatible: `--dry` still means dry; `--apply` now required to write.
Only zero-arg invocations change behaviour, and every candidate was checked
against its launchd/cron/pm2/wrapper invocation sites first (4 scripts that a
cadence job runs flagless were EXCLUDED so this cannot silently disable them).
Verified: node --check/py_compile 87/87 with a positive control proving the
checker rejects an injected fault; argv truth-table negative test 5/5.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L53y4oP2itY3qeJ8WQgMzc
c90b50d · 2026-06-01 · /api/facets drill-down counts via shared filterProducts() + legacy .html->clean 301 redirect
facets now counts each dimension over the set filtered by the OTHER active
facets (was counting the whole niche catalog regardless of q/aesthetic/vendor);
/api/products reuses the same helper. Adds 301 from /care|history|sourcing|trade|vocabulary.html
to the extension-less clean URL (runs before express.static).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
34cc042 · 2026-05-30 · fix: add *.bak-* pattern to .gitignore and remove leaked public backup file
public/index.html.bak-20260526152130 was being served by express.static
(returned HTTP 200). Removed the file and extended .gitignore to cover
*.bak-* (hyphen-dated backups) and *.orig alongside existing *.bak / *.bak.*
patterns. Also commits package-lock.json generated by npm install.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
10ccec0 · 2026-05-29 · feat(fleet): theme1/theme2 query-param-gated toggle on catalog page
Default: theme1, toggle hidden. Opt-in via ?theme=2 or localStorage
('wallco-page-theme' key shared across the fleet). Same gate pattern
as dw-domain-fleet productPage.
3e62562 · 2026-05-26 · site.config rails: align with actual product aesthetics
Old rails [type-ii,hospitality,healthcare,office,retail,wipe-clean] matched
ZERO products → /api/sliders returned 0 rails → homepage rendered flat grid.
New rails [textured,contemporary,beige,traditional,gray,brown] match actual
data: textured 351, contemporary 56, beige 35, traditional 27, gray 8,
brown 4. All 6 rails now fire. DTD verdict A (2/2).
0c9c64a · 2026-05-25 · retag aesthetic from PG: 586 rows updated
before: all=600
after: all=14, beige=37, brown=4, contemporary=59, gray=9, textured=449, traditional=28
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>
File tree
33 files tracked. Click any to browse the source at HEAD.
rendered in 2ms