You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
fix(desktop): lock the sidebar-long-sessions footer-visibility geometry invariant #1311
Part of #1303 (surfaced by Codex review of #1308).
Context
The sidebar-long-sessions fixture (60 sessions) exists so the sidebar scroll container can be verified end-to-end: the list scrolls independently and the footer (Settings + Version info) stays visible at the bottom regardless of session count. This was the P0 WAWQAQ flagged in msg 761141c5.
Before #1308, the only regression lock for this geometry was the screenshot baseline of sidebar-long-sessions — which never ran in CI. #1308 retired the screenshot harness, so the invariant is now explicitly unlocked:
apps/desktop/src/main/__tests__/sidebar-scroll-contract.test.ts is a static-analysis gate over the sidebar scroll CSS; it does not assert the rendered footer-visibility geometry.
apps/desktop/e2e/scroll-geometry.spec.ts boots the long-transcript fixture (not sidebar-long-sessions) and checks .maka-chatViewport content-visibility, not the sidebar.
Acceptance
A Playwright E2E (or rendered computed-style) contract boots the sidebar-long-sessions fixture and asserts: the sidebar list scrolls independently of the chat, and the Settings/Version footer stays inside the sidebar panel viewport (not pushed off-screen) with 60 sessions loaded.
Green in CI. Reference the sidebar-long-sessions fixture by name.
Notes
The fixture seed and its on-disk 60-session contract are already pinned by visual-smoke-fixture.test.ts; this issue is only about the rendered geometry lock.
The lock boots the sidebar-long-sessions fixture in the live shell and asserts that the list is a genuinely constrained scroller (it overflows and its own scrollTop moves) and that the footer rect stays inside both the sidebar panel and the window viewport, before and after scrolling to the bottom.
One thing the red-proof work turned up, now recorded in the spec header: at this fixture's window size the historically cited grid constraints (min-height: 0 / minmax(0, 1fr)) are mutually redundant. The declaration the spec actually bites on is .maka-session-panel { height: 100% }, which the source-grep contract never pinned. The two layers now lock different declarations on purpose.
Activity
test(desktop): lock sidebar-long-sessions footer-visibility geometry …
test(desktop): lock sidebar-long-sessions footer-visibility geometry …
Astro-Han commentedon Jul 22, 2026
Landed via #1317 (squash commit
7b2f80a30).The lock boots the
sidebar-long-sessionsfixture in the live shell and asserts that the list is a genuinely constrained scroller (it overflows and its own scrollTop moves) and that the footer rect stays inside both the sidebar panel and the window viewport, before and after scrolling to the bottom.One thing the red-proof work turned up, now recorded in the spec header: at this fixture's window size the historically cited grid constraints (
min-height: 0/minmax(0, 1fr)) are mutually redundant. The declaration the spec actually bites on is.maka-session-panel { height: 100% }, which the source-grep contract never pinned. The two layers now lock different declarations on purpose.