bd5bc352026-06-30deeper Booksy pull: full review TEXT for all 5 reviews (clicked into reviews tab) — real quotes now show in review cards (xss-escaped); 9/9 tests
6d5052d2026-06-30pull from Booksy: booking → his Booksy page, hero → his real shop photo (strong scrim for readability), 20 portfolio photos in gallery, 5★ reviews section; Lighthouse P91/A100/BP100/SEO100, 9/9 tests
75166d32026-06-30pull from Booksy: 14 real cut photos (inspiration + review_photos) into gallery + wire Book button → Robert's Booksy page (Alumni Barbershop, Sherman Oaks). Standalone — no DW infra
a7ab1ca2026-06-30de-entangle friend build from DW infra: remove venturacorridor scheduler/embed entirely, booking → Robert's own scheduler link (empty→contact), CSP tightened to frame-src none, JSON-LD points to own site; canary already reverted to info@DW
c065dfb2026-06-30re-theme to ROBERT BARBER (business identified): hero BOOK A CUT + barber-pole SVG, services Cut/Fade/Beard&Shave, HairSalon JSON-LD, barber OG card, copy throughout; Lighthouse held 100s, 9/9 tests
693c5742026-06-30round3 item (4): print stylesheet — black-on-white, hide interactive-only elements (nav/CTA/iframe/form), expand booking link to show URL; verified under print media
a6fa9802026-06-30round3 item (7): microcopy — unify to first-person singular (Robert) voice: 'Talk to me', 'I'll be in touch', 'my end' (was mixed me/us); matches hero + JSON-LD Person
dc71cfa2026-06-30round3 item (1): real WebKit+Firefox verify FOUND+FIXED a bug — /embed/appointments.js returns text/html (not JS), script-injection threw uncaught SyntaxError; switched to iframe of /book?embed=1 (no X-Frame-Options) + permanent 'open in new tab' escape link; verified 0 syntax errors across chromium/webkit/firefox
f3aa79c2026-06-29overnight loop item (h): design critique applied — shorter mobile hero (content not buried), lighter mobile shadow, neutralize leftover wallcovering copy to generic booking language
ba29b472026-06-29overnight loop item (i): zero-dep test suite (node --test) — 7 tests covering brand/config/headers/SEO/404/contact-hardening/admin-auth, all green
Commits with substantial prose (≥120 chars) — the rationale behind each move.
dac2f03 · 2026-09-04 · deploy: guard prod-only runtime data from rsync --delete
deploy.sh runs 'rsync -az --delete' with no data/ exclude, so a deploy
overwrote the box's runtime file with the local copy and destroyed
everything written since the last deploy. Added a surgical
RSYNC_EXTRA_EXCLUDES for this project's runtime path(s) only, so genuine
build artifacts under data/ keep syncing.
Verified by itemized rsync --dry-run against prod: the runtime file is
listed for transfer WITHOUT the exclude and absent WITH it.
Fleet sweep, TK-11227. Same bug class as the July 2026 artmura/quadrille
mis-target fix and the abramsagency lead-ledger fix (TK-10536).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013mq9RQtVZZEWvreDqqTgv2
Fleet inoculation — opening this basic-auth app with credentials in the URL
poisoned document.baseURI and made relative fetch('/api/…') throw. Guard resolves
non-absolute request URLs against location instead. Ref: creds-in-url-fetch-guard-fleet-pattern.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
File tree
49 files tracked. Click any to browse the source at HEAD.