Skip to content

Uplink popover absorbs the bus-link row; sidebar top-group + pinned settings - #9

Merged
renewvan merged 5 commits into
mainfrom
uplink-popover-bus-row
Oct 4, 2026
Merged

renewvan merged 5 commits into
mainfrom
uplink-popover-bus-row

Conversation

@renewvan

@renewvan renewvan commented Oct 4, 2026

Copy link
Copy Markdown
Owner

Summary

Header shrinks to one status control: the bus-link icon is gone, its state lives on as a dot row inside the uplink popover.

 <header>
   <UplinkStatusButton>          # popover: RSRP, monthly data,
+    Hub dot row                 #   + Hub (bus link) + Tailscale rows
-  <RouterStatusIcon>            # deleted, glyphs deleted
   <AlertsButton>
 </header>

 <UplinkStatusButton popover>
-  portal → document.body        # light tokens in dark theme
+  portal → themed root          # dark glass, identical to Sheet drawer

 <SettingsTab>
+  focusView='network'           # popover's "Network settings" deep-links here

 <Sidebar>
+  <div gap-2>Home…Heater</div>  # one group at the top
+  <Settings tab/>               # pinned alone at the bottom

Evidence

  • Before: popover portaled to document.body (outside the .dark root) — bg-card/40 resolved against light :root tokens, so the popup rendered white in dark theme.
    After: computed styles in-browser, dark theme — popover oklab(0.216167 -0.00757139 -0.034705 / 0.4) + blur(12px) + white/10 border, byte-identical to the Sheet drawer's popup; light theme resolves white/40 symmetrically.
  • Sidebar geometry (measured): top-group gaps 8,8,8,8 px; settings 236 px below the group, 9 px from the pill's bottom edge; accent indicator aligns exactly (44×44) on the settings tab after the restructure.
  • pnpm typecheck clean; vitest 151/151 (incl. reworked UplinkStatusButton popover suites).

Merge Danger

Door: two-way

Blast Radius: header + settings surfaces. The popover's theme fix rides App's shared portalContainer (same node the Sheet uses); UplinkStatusButton's new required portalContainer prop is threaded App → component. No wire-contract changes — MQTT topics untouched.

- A hardcoded 20°C presented a fabricated reading as real data when
  temperature was unknown; the placeholder now reads as missing data.
…ass portal fix

- UplinkStatusButton popover gains the Hub (bus-link) dot row next to
  Tailscale; RouterStatusIcon + its glyphs delete (CONTEXT.md updated).
- Popover portals into App's themed root (portalContainer) so bg-card/
  backdrop-blur resolve per theme — same fix the Sheet drawer uses;
  popover rendered light in dark theme when portaled to document.body.
- Network settings footer deep-links to the Settings network group
  (settingsFocus), useNow tick, formatBytes + PLMN headline libs.
…ale doc ref

- BUS_TONE (bus-link dot colour) duplicated in UplinkStatusButton and
  SettingsTab; extracted to lib/connection.ts alongside busStatusText.
- UplinkStatusButton popover's 'Network settings' CTA now uses
  focusView/onFocusConsumed so a repeat tap (same value after App clears
  the target) still re-triggers the jump to the Network subpage.
- DisplaySleepButton doc comment still referenced the deleted
  RouterStatusIcon; updated to 'decorative glyph'.
- Added regression test for focus-consumption callback flow.
@renewvan
renewvan merged commit 4b36c6d into main Oct 4, 2026
1 check passed
@renewvan
renewvan deleted the uplink-popover-bus-row branch October 4, 2026 18:53
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