Skip to content

The page performs its own name: scrolling goes deep, clicking seeks - #7

Merged
lroolle merged 1 commit into
mainfrom
feat/site-deep-seek
Aug 8, 2026
Merged

The page performs its own name: scrolling goes deep, clicking seeks#7
lroolle merged 1 commit into
mainfrom
feat/site-deep-seek

Conversation

@lroolle

@lroolle lroolle commented Aug 8, 2026

Copy link
Copy Markdown
Member

The site's two verbs were in the name and nowhere else. Now scrolling
descends a water column — the surface climbs out of frame, the light
falls off, marine snow streams up past you, and a gauge in the margin
reads out the metres — and clicking sends a sonar pulse the whale
answers with an echo.

Also here, because the redesign exposed them

  • Responsive repair at 390/430/768/834/1100/1440/1920, dark and
    light, plus reduced motion. Zero horizontal overflow at every width.
    flex-wrap: nowrap on the mobile masthead column is load-bearing and
    now says so; the theme toggle moved out of <nav> because the phone
    breakpoint masks that subtree and takes absolutely positioned children
    with it.
  • DESIGN.md — the material contract that was missing: tokens, the
    two gestures, the breakpoints.
  • TASTE.md gains two scars: three.js for the sea, and a depth effect
    with no readout.
  • site/bans.sh, wired into make site-check, so the bans are
    enforced rather than remembered.
  • 24 tests in site/waves.dom.test.js under going deep and seek.

Reconciled with the whale redraw

This work was written against ec0f5ce and predates 35aaa39, so
rebasing it onto main was a real merge rather than a formality. Both
feature sets survive intact — site/waves.test.js still pins the
redrawn body, mouth, fluke mark and favicon, and the deep/seek suite
passes beside it. The decisions worth knowing:

  • surfaceAt takes main's retuned chop factor (0.7) and the
    depth-aware layerBase. Same for the scroll handler (0.45 / 600) and
    the chop attack (dt·3, decay 2.2) — the motion retune is kept, the
    descent is added on top of it.
  • shallow() now copies by construction instead of listing fields.
    It was written when the state had no profile on it; main added
    layers/narrowBoost/minSpan, and the whale reads the water
    through shallow() — so the old field list would have silently reset
    the band whale's geometry the moment a band page had any depth.
  • Draw order puts glitter with the water and ahead of the abyss, so
    the dark can swallow it as you descend. Then snow, then the ping,
    which is the instrument and reads on top of everything.
  • The gauge rides sea_fixed and only that. A band page has no
    column to descend, and a gauge there is an instrument wired to
    nothing.

Verified

make check green (Go + all five site test files + build.py --check +
bans). Rendered in a real browser at 390/768/1440, dark and light: the
animation loop is live (frames climbing), scrollWidth === clientWidth
at every width, the gauge reads −905 m at the bottom of the home page
and is correctly display: none below 1100px, and the masthead mark
still sits on the header rule.

The page now performs the two verbs in the tool's name. Scrolling
descends a water column — the sea darkens, a depth gauge reads out the
metres, and the light falls off the way it does underwater. Clicking
sends a sonar pulse the whale answers with an echo.

Also here, because the redesign exposed them:

- Responsive repair at 390/430/768/834/1100/1440/1920, dark and light,
  plus reduced motion. Zero horizontal overflow at every width.
  `flex-wrap: nowrap` on the mobile masthead column is load-bearing and
  says so; the theme toggle moved out of `<nav>` because the phone
  breakpoint masks that subtree and takes absolutely positioned
  children with it.
- DESIGN.md — the material contract: tokens, gestures, breakpoints.
- TASTE.md gains two scars: three.js for the sea, and a depth effect
  with no readout.
- site/bans.sh, wired into `make site-check`, so the bans are enforced
  rather than remembered.
- 24 tests in site/waves.dom.test.js under `going deep` and `seek`.

Based on ec0f5ce, so it does not yet carry the whale redraw from
35aaa39. Reconciling with main is the next commit, not this one.
@lroolle
lroolle merged commit 9cfe1d0 into main Aug 8, 2026
8 checks passed
@lroolle
lroolle deleted the feat/site-deep-seek branch August 8, 2026 05:25
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