Skip to content

ui: reveal the collapsed sidebar from its logo and toggle it there - #31307

Merged
ggerganov merged 3 commits into
masterfrom
allozaur/feat/sidebar-logo-toggle
Oct 29, 2026
Merged

ggerganov merged 3 commits into
masterfrom
allozaur/feat/sidebar-logo-toggle

Conversation

@allozaur

@allozaur allozaur commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Overview

On desktop the collapsed sidebar now shows only its logo. Hovering the logo (or tabbing into the sidebar) fades in the fully open sidebar, floating over the page at its full width without resizing anything, and it fades back to the logo once the pointer leaves.

The expanded sidebar drops the collapse button from its top-right corner; instead the logo swaps to the collapse icon on hover and toggles the sidebar on click.

Opening or closing with the toggle (logo click or Cmd/Ctrl+B) still resizes the sidebar and slides the page. After a toggle close the sidebar stays hidden under the pointer until it leaves the logo, and pinning it open from a hover peek only slides the page, since the sidebar is already at full width. With "always show sidebar on desktop" enabled the logo keeps linking to the start page, and mobile is unchanged. The icon-only strip, no longer reachable, is removed from the sidebar actions.

Demo

Demo

Recorded at 8138777; click the preview for the full video.

Additional information

Demo script
test('demo', async ({ demo, page }) => {
	const input = page.getByRole('textbox', { name: 'Type a message...' });
	const expand = page.getByLabel('Expand navigation');

	await demo.caption('The collapsed sidebar shows only its logo', 1400);
	await demo.hover(expand, 300);
	await demo.caption('Hovering the logo reveals the sidebar over the page', 1800);
	await demo.hover(page.getByRole('button', { name: /^Search/ }), 600);
	await demo.hover(input, 1200);

	await demo.hover(expand, 300);
	await demo.click(expand, 300);
	await demo.caption('Clicking the logo pins it open', 1600);

	await demo.hover(page.getByLabel('Collapse navigation'), 300);
	await demo.caption('Once open, the logo turns into the collapse toggle', 1600);
	await demo.click(page.getByLabel('Collapse navigation'), 300);
	await demo.hover(input, 1000);

	await demo.press('ControlOrMeta+b', 300);
	await demo.caption('Cmd/Ctrl+B still slides it in and out', 1600);
	await demo.press('ControlOrMeta+b', 1500);
});

Requirements

The collapsed sidebar now shows only the logo; hovering it reveals the
icon strip until the pointer leaves. The expanded sidebar drops its
top-right collapse button and the logo collapses it on hover instead.

Assisted-by: Claude (Opus 5.5 Medium)
Hovering the logo of the collapsed sidebar now fades in the fully open
sidebar, floating over the page at its full width, instead of resizing
it. Opening or closing with the toggle still resizes and slides: the
sidebar docks to strip width while it slides, then floats out of sight,
and it stays hidden under the pointer after a toggle close. The unused
icon-only strip is removed from the sidebar actions.

Assisted-by: Claude (Opus 5.5 Medium)
The peeked sidebar floats over the page, but the chat tab bar shared its
z-index and came later in the page, so the tabs were drawn on top of it.

Assisted-by: Claude (Opus 5.5 Medium)
@allozaur
allozaur marked this pull request as ready for review October 28, 2026 12:00
Copilot AI balanced review requested due to automatic review settings October 28, 2026 12:00
@allozaur
allozaur requested a review from a team as a code owner October 28, 2026 12:00

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

@allozaur allozaur added the merge ready A maintainer can use this label to indicate that they consider the changes final and ready to merge. label Oct 28, 2026
@ggerganov
ggerganov merged commit 3ed915e into master Oct 29, 2026
7 checks passed
@allozaur allozaur added the video demo PR features a video demo recorded with the UI demo pipeline label Oct 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merge ready A maintainer can use this label to indicate that they consider the changes final and ready to merge. server/ui video demo PR features a video demo recorded with the UI demo pipeline

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants