New Tab: one scroller, soft edges

Merged
TE
25d ago
+142-3

Summary

Leo, on New Tab in his build: two scrollbars (the page's own at the window edge and the Chats list's inside it), and the list sliced half a row right above the template dots.

  • One scroller. With the All chats list, the list takes the room left under the field and is the only scroller. In a short window it gives up rows instead of pushing the page past the window (before, its 240 px minimum did, and the page scrolled too). Only when there's no room for two rows of list does the page scroll, so nothing is ever out of reach.
  • Soft edges. The list fades out under its top and bottom edges instead of cutting a row, as Settings does (#19763). The fades sit over end padding, so the first and last rows are in full ink. The page itself never fades: the composer's model menu opens inside it.

The scrollbar's own look (thin, shown only while scrolling, app-wide) is a separate PR, because it changes the SCROLLBARS-FOLLOW-MACOS rule and its guard.

Testing

  • webviews/test/new-tab-scroll.test.ts (new, browser lane): the real gallery stages in Chromium.
    • many-chats at 900×360: one scroller (nt-all-list), the document never scrolls, the list fades, the page doesn't. Red at 84c2525b4da7 (two scrollers, no fade).
    • many-chats at 260 px: at least two rows of list, and the page can scroll to the rest. calm-default: at most one scroller, no page fade. Both added after review: red at f2af282f61e2 against the first fix (the list collapsed to nothing; the page fade dimmed the model menu).
    • Green at 5d9a03eda3b1.
  • bun run check passes. The New Tab tests (calm default, field focus, dictation, places) pass.
  • A review subagent measured the stages in Chromium; its three findings are fixed above.

Changelog

Fixed: New Tab scrolls in one place, and its lists fade out at their edges instead of cutting a row

Proof

The boundary test above (red, then green). The gallery's agent-pane.new-tab many-chats stage shows it in a short window.

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.


Summary by cubic

Fixes New Tab's double scrollbar: with an All chats list, the list is the page's only scroller and the document never scrolls; without the list (the calm default), the page itself scrolls. Either scroller fades out under its top and bottom edges instead of slicing a row, matching Settings behavior.

  • The list now keeps two full rows in a short window; below that the page itself scrolls, so nothing is out of reach.
  • Only the list fades; the page never fades, because a page fade would dim the composer's model menu (it opens inside the page). The fades sit in the list's end padding, so the first and last rows stay in full ink.
  • Adds a Chromium browser test (new-tab-scroll.test.ts) that stages the real gallery at 900×360 and asserts one scroller, no document scroll, and the edge fade for both many-chats and calm-default.