Skip to content

fix: refine sidebar and home onboarding layout#340

Merged
hieptl merged 29 commits into
OpenHands:mainfrom
FraterCCCLXIII:left-nav-updates
May 14, 2026
Merged

fix: refine sidebar and home onboarding layout#340
hieptl merged 29 commits into
OpenHands:mainfrom
FraterCCCLXIII:left-nav-updates

Conversation

@FraterCCCLXIII
Copy link
Copy Markdown
Contributor

Summary

  • Refine the left navigation and conversation panel UX: improved spacing/alignment, better collapsed-sidebar behavior, updated conversation card presentation, and stronger dropdown/backends interactions (including connection indicator coverage).
  • Simplify and rebalance the home onboarding surface: center the primary entry experience, move the guide banner to the top, and remove the recent-conversations/task-suggestions section to reduce duplicate entry points.
  • Polish related UI consistency details across settings navigation and chat layout spacing, with accompanying test updates for sidebar, conversation panel, backend selector, settings navigation, and home status components.

Product note

  • The New Conversation button in the replicated home/recent-conversations area was hidden and is now treated as deprecated to reduce UI replication of that feature.
  • In a follow-up update, we can add a new and different interaction aligned with the product design roadmap.

Test plan

  • npx vitest run __tests__/components/features/settings/settings-navigation.test.tsx
  • npm test -- __tests__/components/backends/backend-selector.test.tsx __tests__/components/features/sidebar/sidebar.test.tsx
  • npm test -- __tests__/components/features/conversation-panel/conversation-panel.test.tsx

Made with Cursor

FraterCCCLXIII and others added 18 commits May 11, 2026 10:18
Remove the legacy settings submenu from the left sidebar, move key actions into sticky footer controls, and add a dedicated settings-page left rail so navigation matches the new layout and interaction flow.

Co-authored-by: Cursor <cursoragent@cursor.com>
Make the collapsed rail open reliably from empty-space clicks and hover by swapping the logo area to an explicit expand control. Also update the OpenHands logo asset to use white/transparent fills for the requested visual treatment.

Co-authored-by: Cursor <cursoragent@cursor.com>
This aligns the conversation list behavior with the new older-conversation filter/menu flow and adds a clear desktop divider for the left navigation rail to improve layout clarity.

Co-authored-by: Cursor <cursoragent@cursor.com>
This makes repo/branch metadata rows shrink and truncate correctly and enforces horizontal clipping in the conversation list scroller so long labels never introduce sideways scrolling.

Co-authored-by: Cursor <cursoragent@cursor.com>
This updates the left-nav conversation list styling/spacing and keeps the older-conversations controls fixed above the scroll region, while tightening dropdown/timestamp behavior to match the intended hover and layering UX.

Co-authored-by: Cursor <cursoragent@cursor.com>
This temporarily hides the standalone New Conversation button and reuses the first sidebar nav item as a compact "New" entry with a plus icon to streamline the left rail.

Co-authored-by: Cursor <cursoragent@cursor.com>
This tightens the conversation summary indent to align with the nav icon column and makes the + New sidebar link active only on the base conversations route.

Co-authored-by: Cursor <cursoragent@cursor.com>
Unify sidebar and conversation-list horizontal padding at 2px offsets so nav items and rows align consistently, and reduce extra empty row spacing by only rendering metadata footers when shown.

Co-authored-by: Cursor <cursoragent@cursor.com>
Reuse the existing dropdown menu implementation for the collapsed sidebar backend switcher so it matches the primary backend selector behavior and opens upward with the expected menu layout.

Co-authored-by: Cursor <cursoragent@cursor.com>
Surface the active backend health indicator on the collapsed server button so connectivity status remains visible even when the full backend selector is hidden.

Co-authored-by: Cursor <cursoragent@cursor.com>
Stop rendering the compact conversation row list when the sidebar is collapsed so the left rail only shows the intended navigation controls.

Co-authored-by: Cursor <cursoragent@cursor.com>
Apply the shared dropdown menu treatment to the older-conversations filter and add a checkmark indicator for repo/branch metadata visibility.

Co-authored-by: Cursor <cursoragent@cursor.com>
Align the older-conversations and backend selector menus with the shared context-menu visual tokens so dropdown surfaces and separators match the conversation view styling.

Co-authored-by: Cursor <cursoragent@cursor.com>
Remove default border and fill from the backend selector footer controls so they match sidebar button behavior with hover-only emphasis.

Co-authored-by: Cursor <cursoragent@cursor.com>
Restore an explicit active style for the backend settings button and remove the default underline from the conversation list load-more action.

Co-authored-by: Cursor <cursoragent@cursor.com>
Stop using the indented sidebar link variant in desktop settings navigation so tab items align with the rest of the sidebar.

Co-authored-by: Cursor <cursoragent@cursor.com>
Apply the same responsive left inset as the right side in the chat interface wrapper so content alignment is balanced on desktop.

Co-authored-by: Cursor <cursoragent@cursor.com>
Move the guide banner to the top, center the main onboarding content, and remove the recent conversations/tasks section from the home screen to simplify first-run focus.

Co-authored-by: Cursor <cursoragent@cursor.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented May 11, 2026

@FraterCCCLXIII is attempting to deploy a commit to the openhands Team on Vercel.

A member of the Team first needs to authorize it.

@vercel
Copy link
Copy Markdown

vercel Bot commented May 11, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
agent-canvas Ready Ready Preview, Comment May 11, 2026 8:43pm

Request Review

@malhotra5
Copy link
Copy Markdown
Member

Screen.Recording.2026-05-11.at.4.55.05.PM.mov

Clicking on the icons for managing BE servers doesn't seem to do anything unless the side pane is already open

@malhotra5 malhotra5 requested a review from hieptl May 11, 2026 20:57
@rbren
Copy link
Copy Markdown
Member

rbren commented May 11, 2026

LGTM!

Wire the collapsed settings control to navigation context and add coverage to prevent regressions when the sidebar is collapsed.

Co-authored-by: Cursor <cursoragent@cursor.com>
@FraterCCCLXIII
Copy link
Copy Markdown
Contributor Author

@malhotra5 fixed the issue with the settings not working unless open.

FraterCCCLXIII and others added 4 commits May 12, 2026 12:35
…xpanded states

Co-authored-by: Cursor <cursoragent@cursor.com>
…dismisses

Co-authored-by: Cursor <cursoragent@cursor.com>
…s don't get swallowed

Co-authored-by: Cursor <cursoragent@cursor.com>
…from collapsed popover

Co-authored-by: Cursor <cursoragent@cursor.com>
FraterCCCLXIII and others added 3 commits May 12, 2026 17:51
Co-authored-by: Cursor <cursoragent@cursor.com>
Two distinct bugs prevented users from interacting with the backend popover
when the sidebar was collapsed:

1. Selecting a backend option silently expanded the sidebar instead of
   switching backends. The aside's rail-collapse handler only bails on
   `a, button, input, [role='button'], [role='link']`, but dropdown options
   are `<li role='option'>`. The click bubbled up and `setCollapsed(false)`
   ran before the backend switch completed, unmounting the popover mid-flight.
   Fix: stop click propagation at the popover wrapper so the rail handler
   never sees clicks from inside it.

2. Clicking Add Backend / Manage Backends opened the modal but it
   immediately disappeared. The modal state lived inside `BackendSelector`,
   which was mounted inside the popover. Once the cursor moved toward the
   centred modal, the popover's onMouseLeave timer fired -> the popover
   closed -> `BackendSelector` unmounted -> the modal state was destroyed.
   Fix: lift the modal state into `Sidebar` and render the modals there.
   `BackendSelector` accepts new optional `onOpenAddBackend` and
   `onOpenManageBackends` callbacks; when provided it skips its internal
   modal rendering.

Also restores the expanded sidebar's hover-close behavior on the shared
Dropdown (had been left as `onMouseLeave={undefined}`).

Adds focused regression tests covering all three behaviors.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@FraterCCCLXIII
Copy link
Copy Markdown
Contributor Author

Update pushed in b4634a0:

  • Fixed the downshift warning path for the collapsed left-nav backend selector by keeping a visually hidden combobox input and toggle mounted when the visible dropdown trigger is hidden.
  • This preserves the collapsed-sidebar popover behavior while satisfying useCombobox's required prop getter wiring.
  • The repeated /api/cloud-proxy 401s observed during local testing appear to be auth/configuration noise from cloud-backed queries rather than part of this collapsed-nav dropdown fix.

@hieptl
Copy link
Copy Markdown
Contributor

hieptl commented May 13, 2026

Hello @FraterCCCLXIII,

Thank you for submitting this pull request!

If you need any assistance with resolving merge conflicts, please don't hesitate to reach out. I'm happy to help.

Thank you very much! 🙏

@hieptl hieptl merged commit 4a9376a into OpenHands:main May 14, 2026
4 of 6 checks passed
malhotra5 added a commit that referenced this pull request May 14, 2026
* fix: restore data-testid="chat-interface" removed by #340

PR #340 added left padding to the ChatInterface wrapper div but
accidentally dropped the data-testid attribute in the same edit.
This broke both the collapsible-thinking snapshot tests and the live
e2e test, which both use getByTestId('chat-interface') as the load
signal and screenshot target.

Co-authored-by: openhands <openhands@all-hands.dev>

* chore: update baseline snapshots [skip ci]

* ci: trigger re-run after snapshot baseline update

---------

Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
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.

4 participants