Skip to content

Design overhaul: landing page, taste pass rounds 1-3, smoke test - #54

Merged
Dandiggas merged 14 commits into
mainfrom
design/taste-pass
Jul 5, 2026
Merged

Design overhaul: landing page, taste pass rounds 1-3, smoke test#54
Dandiggas merged 14 commits into
mainfrom
design/taste-pass

Conversation

@Dandiggas

Copy link
Copy Markdown
Owner

Summary

  • First logged-out landing page at / (record-sleeve dark, real product screenshots, framer-motion behind reduced-motion); logged-in users still redirect to /sessions
  • Design taste pass rounds 1-3: warm-dark studio tokens, single teal accent discipline, sentence-case field labels (eyebrows only on zone titles), zero-count/absolute-date noise removed, staggered session list, metronome pulse-on-beat, editorial page headers
  • Auth glow-up: login rebuilt around "Pick up where you left off." with product-shot collage; register unified to one accent
  • Dark-mode bug fix: TakeRecorder + StatsCard were hardcoded to light slate; now on semantic tokens
  • Real-stack Playwright smoke test (issue Testing: modernize Playwright E2E for current sessions workflow #34): npm run smoke

Test plan

  • 68/68 Jest component tests green
  • npm run smoke green locally (login, create session, add track, cleanup in 2.9s)
  • Desktop + mobile screenshots verified in both themes (frontend/next-app/.design-audit/round2/)

🧙 Built with WOZCODE

https://claude.ai/code/session_012aunqZTFgcc7YSwNdDFNgc

Dandiggas and others added 14 commits July 4, 2026 12:05
Brief (.impeccable.md) calls for warm-dark studio surfaces and restrained teal
accents. Dark surfaces were neutral gray (#191919) and the primary was
saturated cyan (#2dd4bf) used on ~9 controls per view. Surfaces now carry a
warm undertone; primary desaturated to studio teal (#3aa392); destructive
softened; purple/orange chart hues muted to sit in the same family.

Co-Authored-By: WOZCODE <contact@withwoz.com>
Claude-Session: https://claude.ai/code/session_019KMyYkdjgDzeEAjCkYMP1s
…d destructives

New Button variants: 'selected' (quiet teal chip for active toggles) and
'destructiveOutline'. Metronome/Tuner toggle, time signatures, and take
capture modes no longer render as filled primaries; Delete/Stop no longer
filled red at rest. Each zone keeps exactly one filled primary CTA.

Co-Authored-By: WOZCODE <contact@withwoz.com>
Claude-Session: https://claude.ai/code/session_019KMyYkdjgDzeEAjCkYMP1s
… warm empty state

Sessions list: card stack with redundant OPEN pills replaced by a single
divided-list surface with relative timestamps and a chevron affordance.
Nav: 'The Shed' item renamed 'Sessions' (brand no longer duplicated), active
page gets a teal underline. Empty state warmed up and points at the create
panel.

Co-Authored-By: WOZCODE <contact@withwoz.com>
Claude-Session: https://claude.ai/code/session_019KMyYkdjgDzeEAjCkYMP1s
Three different accent hues (teal/gold/green) on one screen contradicted the
one-restrained-accent rule; all three bullets now sit in the primary family.

Co-Authored-By: WOZCODE <contact@withwoz.com>
Claude-Session: https://claude.ai/code/session_019KMyYkdjgDzeEAjCkYMP1s
…track, cleanup

Runs against the real Django+Next stack (not the e2e mock): npm run smoke.
Prod-ready via BASE_URL/SMOKE_USER/SMOKE_PASS env. 3.3s locally, passing.

Co-Authored-By: WOZCODE <contact@withwoz.com>
Claude-Session: https://claude.ai/code/session_019KMyYkdjgDzeEAjCkYMP1s
… only, zero-count and absolute-date noise dropped

Field labels move from all-caps letterspaced micro-labels to sentence-case
text-sm; uppercase eyebrows remain only on top-level zone titles. Track rows
hide '0 licks', the takes pill hides at zero, session header shows relative
time, transport readouts go mono. Lick in/out inputs lose their box-in-box
wrappers (F4, low-risk subset).

Co-Authored-By: WOZCODE <contact@withwoz.com>
Claude-Session: https://claude.ai/code/session_012aunqZTFgcc7YSwNdDFNgc
…t error

CSS rise-in keyframe with per-row --stagger delay, gated behind
prefers-reduced-motion: no-preference. Transport/YouTube playback errors get
the tinted destructive container instead of a bare red line. Em-dash removed
from the empty-state copy.

Co-Authored-By: WOZCODE <contact@withwoz.com>
Claude-Session: https://claude.ai/code/session_012aunqZTFgcc7YSwNdDFNgc
… slate onto tokens

Both components carried slate-50/200/950 light-theme values that broke in
dark mode. All surfaces, labels, error blocks, and the recording indicator
now use the semantic tokens; buttons rely on their variants.

Co-Authored-By: WOZCODE <contact@withwoz.com>
Claude-Session: https://claude.ai/code/session_012aunqZTFgcc7YSwNdDFNgc
Record-sleeve dark studio page: asymmetric hero with layered app
screenshots, licks feature band, continuity split, divided tools rows,
manifesto close. framer-motion reveals behind useReducedMotion; committed
dark regardless of app theme. Logged-in users still redirect to /sessions;
app Header hides on /. Screenshots captured from the running app into
public/landing/.

Co-Authored-By: WOZCODE <contact@withwoz.com>
Claude-Session: https://claude.ai/code/session_012aunqZTFgcc7YSwNdDFNgc
…age headers

BPM numeral pulses with the click (harder on the downbeat), gated behind
useReducedMotion. Page h1s on sessions/account/standalone tools and the
empty-session heading move to landing-scale display type. .impeccable.md
records Dan's 2026-07-05 amendment: display moments may push past calm,
working controls stay quiet.

Co-Authored-By: WOZCODE <contact@withwoz.com>
Claude-Session: https://claude.ai/code/session_012aunqZTFgcc7YSwNdDFNgc
… login

Login marketing panel: display-black 'Pick up where you left off.' with the
layered tracks/metronome product shots replacing icon-circle feature
bullets. Register: headline to font-black, feature bullets unified to the
single teal accent (was three hues).

Co-Authored-By: WOZCODE <contact@withwoz.com>
Claude-Session: https://claude.ai/code/session_012aunqZTFgcc7YSwNdDFNgc
Co-Authored-By: WOZCODE <contact@withwoz.com>
Claude-Session: https://claude.ai/code/session_012aunqZTFgcc7YSwNdDFNgc
@Dandiggas
Dandiggas merged commit c1b9c3a into main Jul 5, 2026
3 checks passed
@Dandiggas
Dandiggas deleted the design/taste-pass branch July 5, 2026 15:02
Dandiggas added a commit that referenced this pull request Jul 16, 2026
* docs: add cross-agent AGENTS.md (state protocol, smoke flow, standing rules)

Claude-Session: https://claude.ai/code/session_019KMyYkdjgDzeEAjCkYMP1s

* style(design): F1a — warm-dark studio tokens, restrained teal primary

Brief (.impeccable.md) calls for warm-dark studio surfaces and restrained teal
accents. Dark surfaces were neutral gray (#191919) and the primary was
saturated cyan (#2dd4bf) used on ~9 controls per view. Surfaces now carry a
warm undertone; primary desaturated to studio teal (#3aa392); destructive
softened; purple/orange chart hues muted to sit in the same family.

Claude-Session: https://claude.ai/code/session_019KMyYkdjgDzeEAjCkYMP1s

* style(design): F1b/F2 — one filled primary per zone, quiet toggles and destructives

New Button variants: 'selected' (quiet teal chip for active toggles) and
'destructiveOutline'. Metronome/Tuner toggle, time signatures, and take
capture modes no longer render as filled primaries; Delete/Stop no longer
filled red at rest. Each zone keeps exactly one filled primary CTA.

Claude-Session: https://claude.ai/code/session_019KMyYkdjgDzeEAjCkYMP1s

* style(design): F5/F6/F8 — sessions list as divided rows, nav clarity, warm empty state

Sessions list: card stack with redundant OPEN pills replaced by a single
divided-list surface with relative timestamps and a chevron affordance.
Nav: 'The Shed' item renamed 'Sessions' (brand no longer duplicated), active
page gets a teal underline. Empty state warmed up and points at the create
panel.

Claude-Session: https://claude.ai/code/session_019KMyYkdjgDzeEAjCkYMP1s

* style(design): F9 — login feature bullets use the single accent hue

Three different accent hues (teal/gold/green) on one screen contradicted the
one-restrained-accent rule; all three bullets now sit in the primary family.

Claude-Session: https://claude.ai/code/session_019KMyYkdjgDzeEAjCkYMP1s

* test: real-stack smoke flow (issue #34) — login, create session, add track, cleanup

Runs against the real Django+Next stack (not the e2e mock): npm run smoke.
Prod-ready via BASE_URL/SMOKE_USER/SMOKE_PASS env. 3.3s locally, passing.

Claude-Session: https://claude.ai/code/session_019KMyYkdjgDzeEAjCkYMP1s

* style(design): F3+F7 — field labels sentence case, eyebrows for zones only, zero-count and absolute-date noise dropped

Field labels move from all-caps letterspaced micro-labels to sentence-case
text-sm; uppercase eyebrows remain only on top-level zone titles. Track rows
hide '0 licks', the takes pill hides at zero, session header shows relative
time, transport readouts go mono. Lick in/out inputs lose their box-in-box
wrappers (F4, low-risk subset).

Claude-Session: https://claude.ai/code/session_012aunqZTFgcc7YSwNdDFNgc

* style(design): F10 — staggered session-list entry, contained transport error

CSS rise-in keyframe with per-row --stagger delay, gated behind
prefers-reduced-motion: no-preference. Transport/YouTube playback errors get
the tinted destructive container instead of a bare red line. Em-dash removed
from the empty-state copy.

Claude-Session: https://claude.ai/code/session_012aunqZTFgcc7YSwNdDFNgc

* style(design): theme — TakeRecorder and StatsCard off hardcoded light slate onto tokens

Both components carried slate-50/200/950 light-theme values that broke in
dark mode. All surfaces, labels, error blocks, and the recording indicator
now use the semantic tokens; buttons rely on their variants.

Claude-Session: https://claude.ai/code/session_012aunqZTFgcc7YSwNdDFNgc

* docs: round-2 design audit results + RUN_STATE handoff

Claude-Session: https://claude.ai/code/session_012aunqZTFgcc7YSwNdDFNgc

* feat(landing): logged-out landing page at / with real product imagery

Record-sleeve dark studio page: asymmetric hero with layered app
screenshots, licks feature band, continuity split, divided tools rows,
manifesto close. framer-motion reveals behind useReducedMotion; committed
dark regardless of app theme. Logged-in users still redirect to /sessions;
app Header hides on /. Screenshots captured from the running app into
public/landing/.

Claude-Session: https://claude.ai/code/session_012aunqZTFgcc7YSwNdDFNgc

* style(design): display moments — metronome pulse-on-beat, editorial page headers

BPM numeral pulses with the click (harder on the downbeat), gated behind
useReducedMotion. Page h1s on sessions/account/standalone tools and the
empty-session heading move to landing-scale display type. .impeccable.md
records Dan's 2026-07-05 amendment: display moments may push past calm,
working controls stay quiet.

Claude-Session: https://claude.ai/code/session_012aunqZTFgcc7YSwNdDFNgc

* style(design): auth glow-up — editorial headlines, product imagery on login

Login marketing panel: display-black 'Pick up where you left off.' with the
layered tracks/metronome product shots replacing icon-circle feature
bullets. Register: headline to font-black, feature bullets unified to the
single teal accent (was three hues).

Claude-Session: https://claude.ai/code/session_012aunqZTFgcc7YSwNdDFNgc

* docs: RUN_STATE round-3 handoff

Claude-Session: https://claude.ai/code/session_012aunqZTFgcc7YSwNdDFNgc

---------
Dandiggas added a commit that referenced this pull request Jul 16, 2026
* docs: add cross-agent AGENTS.md (state protocol, smoke flow, standing rules)

Co-Authored-By: WOZCODE <contact@withwoz.com>
Claude-Session: https://claude.ai/code/session_019KMyYkdjgDzeEAjCkYMP1s

* style(design): F1a — warm-dark studio tokens, restrained teal primary

Brief (.impeccable.md) calls for warm-dark studio surfaces and restrained teal
accents. Dark surfaces were neutral gray (#191919) and the primary was
saturated cyan (#2dd4bf) used on ~9 controls per view. Surfaces now carry a
warm undertone; primary desaturated to studio teal (#3aa392); destructive
softened; purple/orange chart hues muted to sit in the same family.

Co-Authored-By: WOZCODE <contact@withwoz.com>
Claude-Session: https://claude.ai/code/session_019KMyYkdjgDzeEAjCkYMP1s

* style(design): F1b/F2 — one filled primary per zone, quiet toggles and destructives

New Button variants: 'selected' (quiet teal chip for active toggles) and
'destructiveOutline'. Metronome/Tuner toggle, time signatures, and take
capture modes no longer render as filled primaries; Delete/Stop no longer
filled red at rest. Each zone keeps exactly one filled primary CTA.

Co-Authored-By: WOZCODE <contact@withwoz.com>
Claude-Session: https://claude.ai/code/session_019KMyYkdjgDzeEAjCkYMP1s

* style(design): F5/F6/F8 — sessions list as divided rows, nav clarity, warm empty state

Sessions list: card stack with redundant OPEN pills replaced by a single
divided-list surface with relative timestamps and a chevron affordance.
Nav: 'The Shed' item renamed 'Sessions' (brand no longer duplicated), active
page gets a teal underline. Empty state warmed up and points at the create
panel.

Co-Authored-By: WOZCODE <contact@withwoz.com>
Claude-Session: https://claude.ai/code/session_019KMyYkdjgDzeEAjCkYMP1s

* style(design): F9 — login feature bullets use the single accent hue

Three different accent hues (teal/gold/green) on one screen contradicted the
one-restrained-accent rule; all three bullets now sit in the primary family.

Co-Authored-By: WOZCODE <contact@withwoz.com>
Claude-Session: https://claude.ai/code/session_019KMyYkdjgDzeEAjCkYMP1s

* test: real-stack smoke flow (issue #34) — login, create session, add track, cleanup

Runs against the real Django+Next stack (not the e2e mock): npm run smoke.
Prod-ready via BASE_URL/SMOKE_USER/SMOKE_PASS env. 3.3s locally, passing.

Co-Authored-By: WOZCODE <contact@withwoz.com>
Claude-Session: https://claude.ai/code/session_019KMyYkdjgDzeEAjCkYMP1s

* style(design): F3+F7 — field labels sentence case, eyebrows for zones only, zero-count and absolute-date noise dropped

Field labels move from all-caps letterspaced micro-labels to sentence-case
text-sm; uppercase eyebrows remain only on top-level zone titles. Track rows
hide '0 licks', the takes pill hides at zero, session header shows relative
time, transport readouts go mono. Lick in/out inputs lose their box-in-box
wrappers (F4, low-risk subset).

Co-Authored-By: WOZCODE <contact@withwoz.com>
Claude-Session: https://claude.ai/code/session_012aunqZTFgcc7YSwNdDFNgc

* style(design): F10 — staggered session-list entry, contained transport error

CSS rise-in keyframe with per-row --stagger delay, gated behind
prefers-reduced-motion: no-preference. Transport/YouTube playback errors get
the tinted destructive container instead of a bare red line. Em-dash removed
from the empty-state copy.

Co-Authored-By: WOZCODE <contact@withwoz.com>
Claude-Session: https://claude.ai/code/session_012aunqZTFgcc7YSwNdDFNgc

* style(design): theme — TakeRecorder and StatsCard off hardcoded light slate onto tokens

Both components carried slate-50/200/950 light-theme values that broke in
dark mode. All surfaces, labels, error blocks, and the recording indicator
now use the semantic tokens; buttons rely on their variants.

Co-Authored-By: WOZCODE <contact@withwoz.com>
Claude-Session: https://claude.ai/code/session_012aunqZTFgcc7YSwNdDFNgc

* docs: round-2 design audit results + RUN_STATE handoff

Co-Authored-By: WOZCODE <contact@withwoz.com>
Claude-Session: https://claude.ai/code/session_012aunqZTFgcc7YSwNdDFNgc

* feat(landing): logged-out landing page at / with real product imagery

Record-sleeve dark studio page: asymmetric hero with layered app
screenshots, licks feature band, continuity split, divided tools rows,
manifesto close. framer-motion reveals behind useReducedMotion; committed
dark regardless of app theme. Logged-in users still redirect to /sessions;
app Header hides on /. Screenshots captured from the running app into
public/landing/.

Co-Authored-By: WOZCODE <contact@withwoz.com>
Claude-Session: https://claude.ai/code/session_012aunqZTFgcc7YSwNdDFNgc

* style(design): display moments — metronome pulse-on-beat, editorial page headers

BPM numeral pulses with the click (harder on the downbeat), gated behind
useReducedMotion. Page h1s on sessions/account/standalone tools and the
empty-session heading move to landing-scale display type. .impeccable.md
records Dan's 2026-07-05 amendment: display moments may push past calm,
working controls stay quiet.

Co-Authored-By: WOZCODE <contact@withwoz.com>
Claude-Session: https://claude.ai/code/session_012aunqZTFgcc7YSwNdDFNgc

* style(design): auth glow-up — editorial headlines, product imagery on login

Login marketing panel: display-black 'Pick up where you left off.' with the
layered tracks/metronome product shots replacing icon-circle feature
bullets. Register: headline to font-black, feature bullets unified to the
single teal accent (was three hues).

Co-Authored-By: WOZCODE <contact@withwoz.com>
Claude-Session: https://claude.ai/code/session_012aunqZTFgcc7YSwNdDFNgc

* docs: RUN_STATE round-3 handoff

Co-Authored-By: WOZCODE <contact@withwoz.com>
Claude-Session: https://claude.ai/code/session_012aunqZTFgcc7YSwNdDFNgc

---------

Co-authored-by: WOZCODE <contact@withwoz.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant