Skip to content

Redesign the popover footer: compact bar with gear menu and countdown - #21

Merged
mstallone merged 4 commits into
mainfrom
revamp-footer-design
Jul 30, 2026
Merged

Redesign the popover footer: compact bar with gear menu and countdown#21
mstallone merged 4 commits into
mainfrom
revamp-footer-design

Conversation

@mstallone

Copy link
Copy Markdown
Owner

TL;DR

The popover footer is now a single compact 40pt line — app version, a short next-update countdown, and a gear menu — and it stays pinned to the panel's bottom edge through every height morph.

What was happening

  • The footer took two lines plus a wide "Options ⌄" capsule — more space than its content deserved.
  • During some panel growth animations the footer could visibly trail the moving bottom edge and catch up afterwards.
  • The countdown re-rendered every second with rolling digits and shifting width, so the footer text was in constant motion.

What this changes

  • The "Options ⌄" capsule becomes a gear icon in a glass circle; the menu items are unchanged.
  • "Next update in Nm" becomes a compact countdown (5m / 45s) with a refresh glyph — still click / ⌘R to refresh, mini spinner while updating. The text swaps in place with no transition, in a slot sized for the widest value, so nothing moves between ticks.
  • The footer is fixed-height chrome like the top bar: PanelHeightCoordinator takes the height as an init constant instead of measuring the bar, and the bar's safe-area position is re-derived from the per-frame layout of the animating panel frame, keeping it welded to the bottom edge (verified frame-by-frame from 60/120fps screen recordings across caret, screen-switch, and provider add/remove morphs).
  • Docs updated (dashboard.md, refreshing.md, settings.md).

Tests

  • Full suite passes (1442 tests).
  • Frame-by-frame analysis of driven screen recordings confirms the footer tracks the panel edge with constant offset through all morph paths.

https://claude.ai/code/session_01SWYFDiqdQ8gRGJTunKjcPP

The footer collapses to one compact 40pt line: app version on the left, a
short next-update countdown (like "5m", click or Cmd-R to refresh, mini
spinner while updating) and a gear menu button on the right replacing the
"Options" capsule. The bar is now fixed-height chrome rendered as a
bottom-aligned overlay on the animated panel frame, so it stays glued to
the panel's bottom edge through every height morph by construction; a
clear spacer in the scroll view's safe area keeps the content inset and
the native bottom scroll-edge blur. PanelHeightCoordinator takes the
footer height as an init constant (like the top bar) instead of
measuring it.

Claude-Session: https://claude.ai/code/session_01SWYFDiqdQ8gRGJTunKjcPP
The per-second tick rolled its digits (numericText) and narrowed the
label as digits dropped, nudging the refresh glyph sideways — the one
thing left moving in the pinned footer. The text now swaps in place with
no transition, in a slot reserved for the widest value ("59s").

Claude-Session: https://claude.ai/code/session_01SWYFDiqdQ8gRGJTunKjcPP
Rendering the footer as a bottom-aligned overlay on the animated height
frame made its position animate as its own attribute: when a content
change landed in one transaction and the height retargeted in a second
(a provider appearing, a caret estimate correction), the overlay's
spring ran phase-shifted from the frame growth and the footer visibly
trailed the moving edge, sliding over content to catch up. The footer
now lives back in the safe-area bar, whose position is re-derived from
the per-frame layout of the animated frame — verified frame-by-frame to
hug the bottom edge through both co-animated and measurement-driven
morphs. The compact fixed-height design is unchanged.

Claude-Session: https://claude.ai/code/session_01SWYFDiqdQ8gRGJTunKjcPP
@mstallone
mstallone merged commit cb375f0 into main Jul 30, 2026
1 check passed
@mstallone
mstallone deleted the revamp-footer-design branch July 30, 2026 16:47
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