openclaw/docs/web
Peter Steinberger e4b36f2e97
feat(ui): open sessions in real browser tabs and keep sidebar visibility per-tab (#128474)
* feat(ui): make sidebar visibility per-tab and free Cmd-click for new tabs

Sidebar visibility was persisted in localStorage, which is shared origin-wide,
so collapsing it in one tab leaked into every other tab and window on reload.
Visibility is view state, not a preference: stop persisting it and keep it in
the tab-local navigation snapshot. Width stays persisted.

A tab whose first load targets one specific conversation now starts collapsed,
seeded once at bootstrap from the canonical session-URL contract so bare /chat
and dashboards are unaffected and SPA navigation never re-collapses. Cmd-B,
the toggle, hover-peek, and the remote UiCommand path all still work.

Cmd/Ctrl-click on a sidebar session row now falls through to the browser so
sessions open in a real new tab or window; multi-select moves to Alt/Option-
click, which previously fell through to the browser's link-download behavior.
Shift-click range selection is unchanged.

* test(ui): prove per-tab sidebar visibility at the browser boundary

Covers the two states that matter: a bare /chat first load keeps the sidebar,
and a tab opened directly on one conversation renders that conversation
full-width with the sidebar collapsed and Cmd-B restoring it. Waits on the
composer, not just the missing sidebar, so the capture cannot pass against a
blank pane.

* fix(ui): narrow new-tab sidebar collapse intent

* fix(ui): collapse sidebar for catalog sessions opened in new tabs

* test(ui): split bootstrap navigation visibility coverage
2026-08-24 00:49:39 -07:00
..
control-ui.md feat(ui): open sessions in real browser tabs and keep sidebar visibility per-tab (#128474) 2026-08-24 00:49:39 -07:00
dashboard-architecture.md fix(dashboard): open widget links through the host instead of sandbox popups (#128125) 2026-08-23 08:47:04 -07:00
dashboard.md docs: correct dashboard auth precedence (#119785) 2026-08-06 02:21:54 +01:00
dashboards.md fix(dashboard): preserve widget content ownership (#128489) 2026-08-23 21:53:39 -07:00
index.md fix: remove retired insecure auth guidance (#120295) 2026-08-07 09:45:48 -07:00
lobster.md fix(ui): offer permanent lobster dismissal (#123789) 2026-08-14 20:00:50 -03:00
notifications.md feat(webui): auto-request notification permission on first chat send (#122446) 2026-08-11 23:52:05 -07:00
tui.md fix(tui): route usage cost correctly (#126668) 2026-08-20 05:55:11 -07:00
urls.md feat(ui): unify focused presentation routes (#126143) 2026-08-19 03:41:29 -07:00
webchat.md fix(gateway): preserve mixed media failure receipts (#128423) 2026-08-23 17:29:57 -07:00