Skip to content

improve(ui): drop the redundant desktop top bar and add back/forward navigation to the macOS app#102808

Merged
steipete merged 3 commits into
mainfrom
claude/website-navigation-review-f166d7
Jul 9, 2026
Merged

improve(ui): drop the redundant desktop top bar and add back/forward navigation to the macOS app#102808
steipete merged 3 commits into
mainfrom
claude/website-navigation-review-f166d7

Conversation

@steipete

@steipete steipete commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Closes #102806

What Problem This Solves

The Control UI's desktop top bar renders only the OpenClaw › agent › page breadcrumb — every destination it offers is already covered by the sidebar, and every page renders its own title header, so the bar spends a 44px row duplicating navigation chrome. The macOS app additionally hosts the Control UI in a WKWebView with no browser chrome: although routing uses pushState, there were no back/forward buttons and no swipe gestures, so in-app history was unreachable; the breadcrumb's single link also sat mostly under the native window-drag region there.

Why This Change Was Made

Desktop now renders no topbar row; the sidebar owns navigation. The row returns in exactly one case: desktop chat split view, where the fixed split toolbar needs its reserved row and backdrop. Narrow viewports keep the header (drawer toggle, brand, command-palette search) and now show the brand across the whole drawer range instead of the breadcrumb. The dashboard-header component, its agent-label plumbing in the shell, and stale topbar CSS are deleted (net −260 lines). The macOS dashboard window gains native back/forward titlebar buttons next to the traffic lights (enabled state tracks canGoBack/canGoForward via KVO), back/forward swipe gestures, and a guard that silently cancels history traversals to entries from a replaced gateway endpoint instead of opening a dead URL in the system browser.

User Impact

Desktop web and Mac app users get a full-height sidebar and more vertical space for content, with one navigation model instead of two. Mac app users can navigate back/forward through Control UI history with titlebar buttons or trackpad swipes; browser users keep using regular browser back/forward.

Evidence

  • pnpm check:changed green on Blacksmith Testbox: https://github.com/openclaw/openclaw/actions/runs/29016607007
  • All 93 tests in the three touched UI test files pass (sidebar-customization.e2e, chat-flow.e2e, chat-responsive.browser), including new assertions: desktop renders no topbar, the row returns as the chat split toolbar backdrop, and the narrow header centers the brand.
  • swift build plus all 10 DashboardWindowSmokeTests pass, including a new test that the titlebar hosts Back/Forward controls (disabled on a fresh webview) and that swipe gestures are enabled.
  • Codex autoreview clean ("patch is correct, no actionable defects").
  • Mock-gateway harness screenshots after the change:
Desktop 1440 (no top bar) Tablet 900 (drawer header) Mobile 393
desktop tablet mobile

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4755df1729

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread ui/src/app/app-host.ts
private resetShellEpochState() {
this.navDrawerOpen = false;
this.navDrawerTrigger = null;
this.lastWorkspaceLocation = null;

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.

P2 Badge Update stale agentLabel lifecycle test

With the agentLabel state removed from the shell reset path, ui/src/app/app-host.test.ts still sets shell.agentLabel = "Old agent", calls disconnectedCallback(), and expects it to be reset to "". Because this method no longer clears that own property, that unit test fails whenever the app-host tests run for this changed file; update the test alongside the state removal.

Useful? React with 👍 / 👎.

@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation app: macos App: macos app: web-ui App: web-ui size: M maintainer Maintainer-authored PR labels Jul 9, 2026
@clawsweeper

clawsweeper Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Codex review: stale review; fresh review needed.

Summary
The latest durable ClawSweeper review was for head 4fba889a0eb1f408bde26006d32baf07dc035212, but the PR head is now 49c7cb38020cce0290b3eac9cbdaa0518cd0ac9d. Its old verdict and PR readiness labels are no longer current.

Next step
Run or wait for a fresh ClawSweeper review on the current PR head.

Review history (2 earlier review cycles)
  • reviewed 2026-07-09T13:08:32.079Z sha eaf1850 :: needs real behavior proof before merge. :: none
  • reviewed 2026-07-09T13:30:29.868Z sha bca0035 :: needs maintainer review before merge. :: none

@clawsweeper clawsweeper Bot added rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. P3 Low-priority cleanup, docs, polish, ergonomics, or speculative work. labels Jul 9, 2026
@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. labels Jul 9, 2026
@steipete
steipete force-pushed the claude/website-navigation-review-f166d7 branch from bca0035 to 4fba889 Compare July 9, 2026 14:00
steipete added 3 commits July 9, 2026 07:32
The Control UI top bar only rendered the OpenClaw › agent › page breadcrumb
on desktop, duplicating the sidebar. Desktop now renders no topbar row; the
row returns solely as the chat split toolbar's backdrop. Narrow viewports
keep the header (drawer toggle, brand, command-palette search) and now show
the brand across the whole drawer range. Routing already uses pushState, so
browser back/forward traverses navigation.
Native titlebar buttons next to the traffic lights drive WKWebView history,
which carries the Control UI's pushState navigation; enabled state tracks
canGoBack/canGoForward via KVO and trackpad swipe gestures are enabled too.
Back/forward traversals to entries from a replaced gateway endpoint cancel
silently instead of opening a dead URL in the system browser.
With the desktop topbar row removed, the 28px mid-window drag region sat on
top of the content column (chat thread has no top padding) and swallowed
clicks as window drags. Shrink it to a 12px edge strip; the sidebar region
over the reserved native-chrome padding stays the primary drag surface.
@steipete
steipete force-pushed the claude/website-navigation-review-f166d7 branch from 4fba889 to 49c7cb3 Compare July 9, 2026 14:34
@clawsweeper clawsweeper Bot removed proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. labels Jul 9, 2026
@steipete
steipete merged commit b80062b into main Jul 9, 2026
79 of 81 checks passed
@steipete
steipete deleted the claude/website-navigation-review-f166d7 branch July 9, 2026 14:47
@steipete

steipete commented Jul 9, 2026

Copy link
Copy Markdown
Contributor Author

Merged via squash.

github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jul 10, 2026
…navigation to the macOS app (openclaw#102808)

* feat(ui): drop the desktop top bar in favor of sidebar navigation

The Control UI top bar only rendered the OpenClaw › agent › page breadcrumb
on desktop, duplicating the sidebar. Desktop now renders no topbar row; the
row returns solely as the chat split toolbar's backdrop. Narrow viewports
keep the header (drawer toggle, brand, command-palette search) and now show
the brand across the whole drawer range. Routing already uses pushState, so
browser back/forward traverses navigation.

* feat(macos): add back/forward controls to the dashboard window

Native titlebar buttons next to the traffic lights drive WKWebView history,
which carries the Control UI's pushState navigation; enabled state tracks
canGoBack/canGoForward via KVO and trackpad swipe gestures are enabled too.
Back/forward traversals to entries from a replaced gateway endpoint cancel
silently instead of opening a dead URL in the system browser.

* fix(macos): keep the dashboard drag strip off the web content column

With the desktop topbar row removed, the 28px mid-window drag region sat on
top of the content column (chat thread has no top padding) and swallowed
clicks as window drags. Shrink it to a 12px edge strip; the sidebar region
over the reserved native-chrome padding stays the primary drag surface.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app: macos App: macos app: web-ui App: web-ui docs Improvements or additions to documentation maintainer Maintainer-authored PR P3 Low-priority cleanup, docs, polish, ergonomics, or speculative work. size: M

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: Remove redundant Control UI desktop top bar; add back/forward navigation to the macOS app

1 participant