Skip to content

The action bar leaves the scroller: a flex footer, not a sticky trick - #27

Merged
AllTerrainDeveloper merged 1 commit into
mainfrom
fix/child-window-flex-footer
Aug 21, 2026
Merged

AllTerrainDeveloper merged 1 commit into
mainfrom
fix/child-window-flex-footer

Conversation

@AllTerrainDeveloper

Copy link
Copy Markdown
Owner

Follow-up to #26, from live inspection of the window chrome after Daniel reported the window "can be scrolled a bit, and it shouldn't."

Diagnosis (measured, not guessed)

The sticky bar was part of the scroll math — that single fact produced every symptom:

  • A window a few pixels shorter than its content scrolled by exactly those pixels, with nothing meaningful hidden. It felt broken because it was: you could see everything, yet it still nudged.
  • A window taller than the content left the bar floating at the end of the text rather than on the window's bottom edge.
  • And earlier, the negative sticky offset had parked half the bar past the scrollport where overflow: hidden clipped it.

Fix

The window host is now a flex column of exactly two things:

.atfb-valwin--window          → position: absolute; inset: 0; flex column; overflow hidden
├── .atfb-valwin__scroll      → flex: 1; min-block-size: 0; overflow-y: auto   (the editor)
└── .atfb-modal__actions      → flex: 0 0 auto; border-top                     (Save / Cancel)

The bar is chrome, not content: buildEditor() still emits it, and the window host lifts it out of the scroller into the footer slot. The overlay fallback is untouched.

Verified against the live chrome

Geometry scrollable px bar on window edge bar fully visible
Long content (Easy blocks, 700px window) 363 (real overflow) ✓ ✓
Short content (Expression tab) 0 ✓ ✓

🤖 Generated with Claude Code

https://claude.ai/code/session_0119U4sRRWGcTQdwYreTwpAp

Measured live, the sticky bar had two failure modes that were really
one: it was part of the scroll math. A window a few pixels shorter
than the content scrolled by exactly those pixels with nothing
meaningful hidden, and a window taller than the content left the bar
floating at the end of the text instead of on the window's edge.

The window's host is now a flex column of exactly two things — a
scroll region holding the editor, and the action bar as a static
footer. The bar sits on the window's bottom edge at every size; the
scroll region scrolls only when its own content overflows, and a
window tall enough to show everything scrolls by exactly nothing.

Verified against the live chrome: long content scrolls 363px with the
bar pinned and fully visible; short content (the Expression tab)
reports zero scrollable pixels with the bar still on the edge.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0119U4sRRWGcTQdwYreTwpAp
@AllTerrainDeveloper
AllTerrainDeveloper merged commit 25621a5 into main Aug 21, 2026
3 checks passed
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