* fix(ui-primitives): keep tall menus inside the mobile viewport
* fix(client): anchor model picker with Floating UI
Use Floating UI for fixed model-menu placement and automatic viewport updates. Preserve top-end alignment and defer automatic focus until placement is ready. Guard asynchronous results across updates and menu teardown.
* fix(client): preserve menu blur under pinned group titles
Keep the current provider title outside the native scroll viewport so
model rows cannot bleed through during fast scrolling. Preserve the
enclosing menu fill and backdrop filter, and update both model pickers,
lifecycle tests and ARIA goldens.
Validation: doc-sync, full build, final type checks, focused lint and
all 12 model-picker browser checks pass. The full unit run has 42,597
passing tests and four failures in unchanged gateway, third-party-
notices and Inspector tests. The Inspector case passes in isolation.
* fix(client): stabilize floating panels during browser zoom
* fix(client): keep portal menus aligned during Safari zoom
* fix(client): commit floating menu positions before paint
* fix(client): unify floating panel positioning
* fix(client): validate grouped menu headings
* fix(client): hide inactive pinned menu headings
* test(client): await floating menu layout across consumers
* test(ui-chat): await folded reply menu positioning
* test(client): align current consumers with asynchronous panel layout
* fix(client): prevent mobile model search focus zoom
* refactor(client): inject mobile device state from layout
* fix(client): keep anchored panel layout synchronous
* fix(client): address panel review coverage and documentation
* fix(client): keep viewport changes focused on iOS zoom
* fix(client): cover anchored panel lifecycle and scrollbar colors
* fix(client): preserve zoomed model menu scrolling and alignment
* fix(client): hide empty model menus and stabilize viewport pan tests
* test(web): use native wheel input for zoomed viewport panning
* fix(client): keep automation pickers scrollable when zoomed
* fix(client): allow horizontal gestures across clock columns
* fix(client): ellipsize overflowing floating-panel labels
* test(web): make clock overflow fixture independent of system fonts
---------
Co-authored-by: Zrs000 <[email protected]>
* fix(web): prioritize model ids in narrow rows
Keep the model ID in the compact row and expose its display name when expanded. Preserve wide layouts and input focus while resizing.
Fixes#7511
* test(desktop): wait for supervised network recovery
* fix(web): keep folding rows visible through the viewport
* test(web): measure fold movement within the viewport
* test(snapshot): await cancelled job settlement before retry
* fix(web): stabilize model name focus across responsive layouts
* revert: remove unrelated CI fixes from model layout PR
Revert d1c8ef1de1a, 1050ece1980, 6f2f0906341 and 8f7efbca6b0. Preserve the responsive model layout and its review fixes.
* test(web): align DeepSeek Messages model row snapshot
Restore the larger of the current and remembered offsets, reading further
pages until the remembered offset is reachable. Scroll events that only pin
the body to the end of shorter content no longer overwrite the remembered
offset, and the body disables scroll anchoring so the offset stays a pixel
distance.
Renderers declare sourceLines; a line navigation in a renderer without it,
such as Markdown, is answered without moving instead of staying pending.
Refs #7241
Merge master and preserve pinned-row visibility. Remove redundant Chat and tool-tree menu forwarding, unify trigger names, and bind file targets at the consuming Slot. Address CI static and coverage gaps without changing upstream scroll assertions.
The done screen's details now name the complete Host log, so the golden
records that line; its random operation directory is normalized like the
other install-details goldens.
A silent package-manager run and a failed GitHub connection check now
each show what failed in the dialog's details instead of an empty panel.
The GitHub case configures no fallback registry so the plain failed
screen renders, and the silent case stands Node in for pnpm so the run
prints nothing. Both scenarios and the new golden are registered in the
client and host TypeScript aggregates.