Redesign the popover footer: compact bar with gear menu and countdown - #21
Merged
Conversation
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
What this changes
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.PanelHeightCoordinatortakes 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).dashboard.md,refreshing.md,settings.md).Tests
https://claude.ai/code/session_01SWYFDiqdQ8gRGJTunKjcPP