Skip to content

fix(ui): keep the Models page fixed and give its tabs and filters room - #12899

Merged
mudler merged 1 commit into
masterfrom
fix/models-page-scroll-tabs
Oct 25, 2026
Merged

mudler merged 1 commit into
masterfrom
fix/models-page-scroll-tabs

Conversation

@mudler-agent

Copy link
Copy Markdown
Collaborator

What

Two fixes on the Models page.

The page scrolled as a whole again. The gallery is meant to be a fixed-height page where only the table scrolls. The screen-reader spans in the table rows are position: absolute, and no ancestor was positioned, so they resolved against the viewport, escaped the table scroller and stretched the document to about twice the window height (1859px in a 900px window). .page--app and .ledger-wrap are now the containing block, so the spans are clipped with the rows.

Measured at 1440x900, document scrollHeight / clientHeight:

View Document Table
Explore 900 / 900 1830 / 463
Installed 900 / 900 767 / 596

The document also stays at 900/900 in the loading, error, empty-search and no-results states. Below 900px wide the page still scrolls as a whole, as before.

The tabs and filters were too condensed. After a critique of the rendered page:

  • View tabs are 40px high with an accent underline on the current one, and sit further from the title.
  • Facet chips are 36px with wider gaps, and an accent ring when pressed.
  • Toggles, density buttons and state segments have a 36 to 40px hit area.
  • Rows of controls have 16px between them.
  • On phones, tabs are full width at 44px, and the other controls are 40 to 44px.

Only existing --dk-* tokens are used. No new strings, no new dependencies, data-testids unchanged.

Tests

  • New e2e check in discover-height.spec.js: document height equals the window height while the table still overflows.
  • Playwright discover-height, models-ledger, models-installed-ledger, models-gallery, models-lifecycle, models-cleanup, models-explore-pane-actions, discover-search-focus, models-cluster-fit and installed-model-action-menu-position pass against a rebuilt UI.
  • npm run lint reports 2 react-hooks/rules-of-hooks errors in e2e/coverage-fixtures.js; master has the same two.
  • Not run: the rest of the e2e suite and the coverage gate.

The document scrolled again on the gallery. The screen-reader spans in
the table rows are position: absolute, and nothing above them was
positioned, so they resolved against the viewport, escaped the table
scroller and the pinned shell, and stretched the document to about twice
the window height. Make the table scroller and the full-height page the
containing block, so the spans are clipped with the rows.

The tabs and filters were also packed tight. Raise the view tabs to 40px
with an accent underline on the current one, space the facet chips and
toggles apart, give toggles, chips, density and state segments a hit area
of at least 36px (40 to 44px on phones), and leave more air between the
filter rows. Existing --dk-* tokens only.

Add a spec that checks the document height equals the window height
while the table still overflows.

Assisted-by: Claude:claude-sonnet-5-5 [Claude Code]
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
@mudler
mudler merged commit f7011f1 into master Oct 25, 2026
21 of 23 checks passed
@mudler
mudler deleted the fix/models-page-scroll-tabs branch October 25, 2026 18:13
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.

2 participants