feat(enaychi): bloom dock #6

Merged
nick merged 10 commits from nick/dotfiles:feat/enaychi-bloom-dock into main 2026-10-07 23:27:27 -05:00
Owner
No description provided.
nick added 10 commits 2026-10-07 23:27:04 -05:00
Point `elm-land server` at the dev guests through mars' host Caddy for both
targets, so the dev server talks to backendDev with no firewall change, and
turn the development debugger off on both: it went unused, and its corner
counter sat on top of the dock's Tools tab at phone width.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The top of a phone screen is now the day switcher and nothing else.

- AppChrome's topbar loses its bar: the page colour, solid under the status
  bar and the row and fading out below it, with the controls as surface
  bubbles of their own. Its colour reaches `interop.ts` as
  `data-chrome-colour`, since the element's own background now ends
  transparent (and elm/virtual-dom cannot set a CSS custom property).
- The scroller runs up under the topbar, its inset as padding inside, so
  content dissolves into the fade instead of being clipped at a hard line.
- A page's way back, and on the standalone site home and account, move to a
  floating row of bubbles at the bottom (`bubbleDock`), on the same fade.
- The standalone layout no longer draws its home/account strip at the top,
  and a page with the dock never closes with the footer: while the session
  loaded, the tracker read as the unsubscribed plan card and showed it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The phone's navigation is now a dock of unlabelled bubbles at the bottom of
the screen: Status, Nutrition, Exercise, Health, Tools. Tapping a tab blooms
it in one tap: its parent rises from the tab to the centre while the
section's destinations spiral out from behind it as satellites; tapping it
again, or the red collapse control left in its slot, folds it back as the
exact reverse. Switching tabs closes one bloom and opens the other at once,
the old parent heading home while the new one rises.

- `Shell.Dock` replaces `Shell.Tray`. Every section's group stays mounted
  and is moved between open and closed states written inline (transforms,
  opacity, transitions), so both directions and mid-flight reversals are the
  browser's transitions. The choreography lives in `Shell.Motion`.
- Glows fade with the motion: green on the parent and the view on screen,
  red on the collapse control, which grows from tab size as it opens and
  shrinks back on leaving.
- No bar, no backdrop: surface bubbles on a fade of the page colour that
  catches nothing, so the page scrolls under an open bloom.
- The topbar is the day switcher alone; its sub-view pills are satellites
  now. During a report its slot is an `Exit Report (range)` cancel pill
  (`Pill.cancel`), which replaces the dock's exit bubble.
- Diary quick controls ride above the fan on Diary, Overview and Targets.
- Tools: Settings, Links, Tutorials, Account. "Suggest a feature" moves to
  a link at the bottom of the settings page.
- The tracker body is keyed per page, so a switch mounts the new page
  instead of patching the old one's DOM into it (which left the Exercise
  filter dropdowns square and mis-sized for the tray delay), and each mount
  fades in on the dock's beat.

`tests/browser/report-mode.cjs` drives the phone through the dock by
accessible name.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Tabs left of centre (Status, Nutrition) keep the spiral sweeping in from
the right; tabs right of it (Health, Tools) mirror it. The middle tab
(Exercise) does not spiral at all: its satellites flare straight out from
behind the parent, all together, since a stagger only reads as the leftmost
leaving first when there is no sweep for it to shape. Each section's fan
now carries its own stagger, and the bloom's length, the parent's wait and
the fades all follow it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No dock section carries more than three satellites now.

- Nutrition and Exercise page their fan. The tracker page (Diary, Overview,
  Targets) is the default; the utilities page (Planner, Rankings,
  Suggestions) is the alternate. Their parent turns the page instead of
  collapsing the bloom, which the red control alone now does: the page out
  folds in behind the parent, held in place, while the other unfolds, both
  turning the same way like a wheel, and the parent's icon and chevron
  (right on the tracker page, left on utilities) cross-fade over the same
  beat. A bloom opens on the page holding the view on screen. During a
  report the utilities are hidden, so those tabs fall back to one page.
- Status is Analytics, Notes, Report: the Calendar tab is gone and its log
  calendar opens Analytics. Neither it nor the Nutrition section there
  answers to the Nutrition page's Calendar toggle any more, which used to
  take both off Status (the Nutrition chart is `analyticsChart`, ungated).
- Tools is Settings, Tutorials, Account: the Links page is gone. Its
  accounts go to the site footer's social row, which gains Forgejo, and on
  the Android app, which has no footer, to a Community row at the foot of
  the Account page (`Social.appAccounts`, without PeerTube, whose sign-in
  leads to the plans).
- Overview, Targets and the utilities parent use the new `overview`,
  `target` and `utility` icons.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On a phone or tablet, a page without the dock gets its navigation as the
top bar's row (`AppChrome.navigationRow`): the page's way back at the left,
and on the standalone site home and account at the right. It has its own
space, content scrolls up under its fade, and nothing floats over the page
or sits under the footer any more; the APK's way back moves there too.

The top bar's row, day switcher or navigation, sits as far in from the top
as from the sides (`rowInset`).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The date pill wears the full halo and the day chevrons half of it, held
rather than lit on hover, and repeated under focus so a tap does not put
them out.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The diary's quick controls leave the shelf over the fan for a tab on the
right edge, level with the fan's lowest satellites. Tapping it stretches
the tab upward into a column of the controls, sized to the screen, while
its chevron turns; it fades with the page on arriving at or leaving a
diary.

The bloom hugs its parent: satellites ring it and each other a gap apart,
the parent sits the same gap above the row, and the spokes are gone.
Resting satellites and tabs carry a faint rim, the selected tab keeps the
parent's green halo, and a landing parent hands over to its tab in one
step instead of fading through the collapse control.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
style(enaychi): page chevron in a bubble over the parent's edge
Some checks failed
CI / build (ceres) (pull_request) Has been cancelled
CI / build (deimos) (pull_request) Has been cancelled
CI / build (eris) (pull_request) Has been cancelled
CI / build (mars) (pull_request) Has been cancelled
CI / build (phobos) (pull_request) Has been cancelled
CI / check (pull_request) Has been cancelled
804d1f609b
Users found the chevron inside the paging parents hard to see. It now
rides a small glowing surface bubble that straddles the parent's edge,
tucking in on one side and growing out of the other as the page turns.
It sits inside the parent's button, so tapping it turns the page too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
nick merged commit 64a042653d into main 2026-10-07 23:27:27 -05:00
nick deleted branch feat/enaychi-bloom-dock 2026-10-07 23:27:30 -05:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
upRootNutrition/dotfiles!6
No description provided.