Skip to content

feat(ui): stable session order, palette-only search, and macOS titlebar brand for the sidebar#100648

Merged
steipete merged 14 commits into
mainfrom
claude/competent-joliot-b16995
Jul 6, 2026
Merged

feat(ui): stable session order, palette-only search, and macOS titlebar brand for the sidebar#100648
steipete merged 14 commits into
mainfrom
claude/competent-joliot-b16995

Conversation

@steipete

@steipete steipete commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Related: #100386

What Problem This Solves

After #100386 the Control UI sidebar is grouped, but three sources of clutter and confusion remain:

  • Clicking a session reshuffles the Recent list: the open session is hoisted to the top and the rest reflow, so the list changes under the pointer on every click.
  • There are two competing searches — the topbar ⌘K palette and a separate magnifier-triggered session-picker popover inside the sidebar — with different behavior and duplicate UI.
  • The agent filter is a full-width form control wedged between the group header and the rows, and the OpenClaw claw mark appears three times on one screen (it remains twice in the chat welcome even after the brand header removal), while the macOS app's native titlebar strip next to the traffic lights stays empty.

Why This Change Was Made

One search, one stable list, and chrome only where there is dead space. Session search moves into the ⌘K command palette (server-side, across agents), which replaces the sidebar session-picker popover entirely; the topbar search pill shrinks to an icon button. Session ordering becomes presentation-stable: rows keep their recency slot, the open session highlights in place, and only an off-list session (deep link or beyond the recency cap) is surfaced at the top. The agent filter becomes a compact scope chip in the Chats group header, the "Ready to chat" badge drops its duplicate logo, and the macOS app shows a small brand mark in the native titlebar strip (CSS-gated on the openclaw-native-macos class the app already injects; web builds keep the wordmark in the breadcrumb only).

Non-goals: session rename and bulk management stay on the All Sessions page (which keeps full search with filters and limits); the Swift-side injected CSS is untouched so older gateway-served UIs keep working with current app binaries.

User Impact

  • Clicking a sidebar session no longer reorders the list — the selection highlight moves, the rows stay put.
  • ⌘K (or the topbar search button) now finds chats: typing lists matching sessions across agents next to navigation commands, and selecting one opens it.
  • The sidebar loses two rows of chrome (magnifier + full-width agent dropdown); multi-agent setups get a small "agent" chip in the Chats header instead.
  • In the macOS app, the claw mark sits next to the traffic lights instead of costing a sidebar row; the chat welcome shows the logo once, not twice.

Evidence

Mocked-Gateway browser harness, light mode, 1440×900, same session fixture throughout.

main (before) This PR (web)
before after
This PR (macOS app mode: brand mark in the native titlebar strip, next to the traffic lights)
after native

Validation (Blacksmith Testbox through Crabbox unless noted):

  • pnpm test ui/src/lib/sessions/navigation.test.ts ui/src/app/settings.node.test.ts ui/src/app-navigation-groups.test.ts ui/src/lib/agents/display.test.ts — 50 tests green (tbx_01kwtw4wn650pkfkz2665gg015); includes new regressions: stable order on click, off-list session surfacing, pinned-cap exemption with activeRowKey.
  • pnpm test:ui:e2e -- ui/src/e2e/session-management.e2e.test.ts ui/src/e2e/sidebar-customization.e2e.test.ts — 4 tests green (tbx_01kwty4r30x8n36m6tap5aq6bs); session management rewritten for the palette flow (asserts the gateway receives sessions.list with the typed query, that a running row keeps archive disabled, and that clicking a visible row does not reshuffle the list) and keeps the pinned-duplicate regression from feat(ui): make the sidebar session-first and minimal #100386.
  • pnpm tsgo:test:ui, pnpm ui:i18n:check (20 locales clean, zero fallbacks).

Net diff is −1,103 lines across 60 files: deleting session-picker.ts (553 LOC) plus its pagination e2e outweighs the palette search addition.

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

@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: 93660f8d63

ℹ️ 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/components/command-palette.ts Outdated
@steipete
steipete force-pushed the claude/competent-joliot-b16995 branch from 93660f8 to 4e83af4 Compare July 6, 2026 06:07
steipete added 6 commits July 5, 2026 23:09
…g, palette session search, titlebar brand in macOS app

- Sessions split into Pinned and Chats groups; pins are exempt from the
  nine-row recency cap and the open session highlights in place instead of
  hoisting to the top, so clicking a row no longer reshuffles the list.
- The command palette (Cmd+K) is the single search: it queries sessions
  across agents server-side and lists matching chats next to nav commands;
  the sidebar session-picker popover and its magnifier are removed, and the
  topbar search pill shrinks to an icon button.
- The sidebar brand row is gone: web keeps the breadcrumb wordmark, and the
  macOS app shows a compact brand mark in the native titlebar strip next to
  the traffic lights (CSS-gated on the injected openclaw-native-macos class).
- The agent filter dropdown becomes a compact scope chip in the Chats group
  header; the welcome badge drops its duplicate claw logo.
- Footer collapses to one icon row (status dot, settings, docs, pairing,
  mobile theme switch); default pinned nav routes are now Overview-only and
  the Recent-collapse preference is retired.
… refresh locale metadata

Clicking the row leaves :focus-within on it, which keeps the management
actions visible; the hidden-actions assertion must run first.
Invalidate the in-flight search and clear results on every query change so a
late-resolving previous-query request cannot leave stale rows selectable, and
run results through getVisibleSessionRows so archived/global/unknown/cron/
subagent rows stay hidden like the sidebar list. Codex review findings.
…ve visible matches

Exclude global/unknown rows server-side and fetch a full 50-row page before
applying the sidebar's hidden-row filter, keeping the 10-row display cap.
Codex review finding.
@steipete
steipete force-pushed the claude/competent-joliot-b16995 branch from 4e83af4 to eda0a48 Compare July 6, 2026 06:14
@clawsweeper

clawsweeper Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs changes before merge. Reviewed July 6, 2026, 2:29 AM ET / 06:29 UTC.

Summary
The branch removes the sidebar session picker, moves chat search into the command palette, stabilizes recent-session ordering, compacts sidebar/topbar chrome, updates docs/i18n, and adds session navigation/E2E coverage.

PR surface: Source -765, Tests -293, Docs +2. Total -1056 across 60 files.

Reproducibility: yes. source-level: the PR head renders sidebar chat rows through hover/focus-only .session-action buttons while current main's removed picker had an explicit @media (hover: none) visibility rule. I did not run a touch browser, but the code path is direct.

Review metrics: 1 noteworthy metric.

  • Touch-safe management surface: 1 removed. The diff deletes the picker-specific @media (hover: none) action visibility path while leaving sidebar row actions hover/focus-gated.

Stored data model
Persistent data-model change detected: serialized state: ui/src/components/session-picker.ts, serialized state: ui/src/e2e/session-management.e2e.test.ts, serialized state: ui/src/lib/sessions/navigation.test.ts, serialized state: ui/src/lib/sessions/navigation.ts, unknown-data-model-change: ui/src/components/session-picker.ts, unknown-data-model-change: ui/src/e2e/session-management.e2e.test.ts, and 2 more. Confirm migration or upgrade compatibility proof before merge.

Merge readiness
Overall: 🦐 gold shrimp
Proof: 🐚 platinum hermit ✨ media proof bonus
Patch quality: 🦐 gold shrimp
Result: needs maintainer review before merge.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • Make sidebar session pin/archive actions reachable on touch/coarse-pointer layouts after removing the picker.
  • [P2] Add focused touch/coarse-pointer proof or Playwright coverage for the sidebar action state.

Risk before merge

  • [P1] Touch/coarse-pointer users can lose direct sidebar pin/archive access because the replacement row actions remain hidden unless hover or focus is available; desktop screenshots and CI do not settle that interaction.

Maintainer options:

  1. Make sidebar actions touch-visible (recommended)
    Add a coarse-pointer or touch-safe way to pin/archive sidebar session rows before merging the picker removal.
  2. Accept All Sessions as the touch path
    Maintainers may intentionally accept sidebar pin/archive as desktop-first and rely on the All Sessions page for touch management, but that should be an explicit UX decision.
Copy recommended automerge instruction
@clawsweeper automerge

Special instructions:
Preserve the palette-only search direction, but add a coarse-pointer/touch-safe way to pin/archive sidebar session rows after deleting the picker, and add focused coverage or proof for the touch-visible action state.

Next step before merge

  • [P2] A narrow automated repair can preserve the PR direction by making sidebar session actions touch-visible and adding focused proof.

Security
Cleared: No security or supply-chain concern found; the diff stays within UI/docs/tests/i18n and does not touch workflows, dependencies, secrets, or package resolution.

Review findings

  • [P2] Keep sidebar actions tappable on touch — ui/src/components/app-sidebar.ts:689
Review details

Best possible solution:

Keep the palette-only search and stable-order direction, but add a touch/coarse-pointer-visible sidebar pin/archive path or equivalent before removing the picker.

Do we have a high-confidence way to reproduce the issue?

Yes, source-level: the PR head renders sidebar chat rows through hover/focus-only .session-action buttons while current main's removed picker had an explicit @media (hover: none) visibility rule. I did not run a touch browser, but the code path is direct.

Is this the best way to solve the issue?

No, not yet: moving search to the command palette and stabilizing ordering is a reasonable owner-boundary direction, but the picker removal needs a touch-safe replacement for sidebar pin/archive actions.

Full review comments:

  • [P2] Keep sidebar actions tappable on touch — ui/src/components/app-sidebar.ts:689
    This branch removes the touch-safe session picker, then renders the Chats list only through renderRecentSession. Those row buttons still rely on .session-row-host:hover/:focus-within while .session-action defaults to opacity: 0 and pointer-events: none, so coarse-pointer users no longer get a direct sidebar pin/archive affordance. Add a hover: none rule or another touch-visible management affordance before dropping the picker.
    Confidence: 0.88

Overall correctness: patch is incorrect
Overall confidence: 0.86

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against d6dad9d9d595.

Label changes

Label changes:

  • add P2: This is a normal-priority Control UI improvement with a concrete touch-layout regression before merge, not a core runtime emergency.
  • add merge-risk: 🚨 other: Merging as-is can regress touch/coarse-pointer sidebar session management in a way green desktop CI does not prove.
  • add proof: sufficient: Contributor real behavior proof is sufficient. The PR body includes reviewed before/after screenshots for the desktop web and macOS titlebar states plus Testbox validation IDs; that proof does not cover the touch-action blocker above.
  • add proof: 📸 screenshot: Contributor real behavior proof includes screenshot evidence. The PR body includes reviewed before/after screenshots for the desktop web and macOS titlebar states plus Testbox validation IDs; that proof does not cover the touch-action blocker above.
  • add rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🐚 platinum hermit and patch quality is 🦐 gold shrimp.
  • add status: ⏳ waiting on author: ClawSweeper has contributor-facing work open and is waiting for author action. Sufficient (screenshot): The PR body includes reviewed before/after screenshots for the desktop web and macOS titlebar states plus Testbox validation IDs; that proof does not cover the touch-action blocker above.

Label justifications:

  • P2: This is a normal-priority Control UI improvement with a concrete touch-layout regression before merge, not a core runtime emergency.
  • merge-risk: 🚨 other: Merging as-is can regress touch/coarse-pointer sidebar session management in a way green desktop CI does not prove.
  • rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🐚 platinum hermit and patch quality is 🦐 gold shrimp.
  • status: ⏳ waiting on author: ClawSweeper has contributor-facing work open and is waiting for author action. Sufficient (screenshot): The PR body includes reviewed before/after screenshots for the desktop web and macOS titlebar states plus Testbox validation IDs; that proof does not cover the touch-action blocker above.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body includes reviewed before/after screenshots for the desktop web and macOS titlebar states plus Testbox validation IDs; that proof does not cover the touch-action blocker above.
  • proof: 📸 screenshot: Contributor real behavior proof includes screenshot evidence. The PR body includes reviewed before/after screenshots for the desktop web and macOS titlebar states plus Testbox validation IDs; that proof does not cover the touch-action blocker above.
Evidence reviewed

PR surface:

Source -765, Tests -293, Docs +2. Total -1056 across 60 files.

View PR surface stats
Area Files Added Removed Net
Source 53 370 1135 -765
Tests 6 127 420 -293
Docs 1 4 2 +2
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 60 501 1557 -1056

Acceptance criteria:

  • [P1] pnpm test ui/src/lib/sessions/navigation.test.ts ui/src/app/settings.node.test.ts ui/src/app-navigation-groups.test.ts ui/src/lib/agents/display.test.ts.
  • [P1] pnpm test:ui:e2e -- ui/src/e2e/session-management.e2e.test.ts ui/src/e2e/sidebar-customization.e2e.test.ts.
  • [P1] pnpm tsgo:test:ui.
  • [P1] pnpm ui:i18n:check.

What I checked:

  • PR head routes Chats rows through sidebar row actions: At the reviewed head, the Chats group renders chatRows through renderRecentSession after replacing the session picker entry point. (ui/src/components/app-sidebar.ts:689, eda0a4823d0e)
  • Sidebar row actions remain hover/focus gated: The shared .session-action buttons still start at opacity: 0 and pointer-events: none, only becoming actionable under .session-row-host:hover or :focus-within. (ui/src/styles/components.css:6967, eda0a4823d0e)
  • Current main had a touch-visible picker rule: Current main's session picker deliberately made .session-action visible under @media (hover: none), so deleting the picker also deletes the touch-safe management path it provided. (ui/src/styles/chat/layout.css:2201, d6dad9d9d595)
  • Current main still rendered the session picker: Current main includes <openclaw-session-picker> in the sidebar header, which the PR removes while moving search to the command palette. (ui/src/components/app-sidebar.ts:701, d6dad9d9d595)
  • Docs describe sidebar row management: The PR-updated docs say each sidebar session row can pin or archive a session, so the row action reachability is part of the changed user-visible behavior. Public docs: docs/web/control-ui.md. (docs/web/control-ui.md:242, eda0a4823d0e)
  • Real behavior proof inspected: The PR body links before/after web and macOS screenshots that show the sidebar decluttering and titlebar brand; it also lists Testbox validation IDs for the session navigation and E2E paths. (eda0a4823d0e)

Likely related people:

  • steipete: Authored the merged sidebar session-first redesign in feat(ui): make the sidebar session-first and minimal #100386 and authored this follow-up, so the current UX direction and intended sidebar behavior route strongly through him. (role: recent feature owner; confidence: high; commits: 60cf7eaa005b, 5ca13b3f9c9b, 447fb4041ee9; files: ui/src/components/app-sidebar.ts, ui/src/lib/sessions/navigation.ts, docs/web/control-ui.md)
  • goutamadwant: Current-main blame for the sidebar, session navigation, command palette, and session-row CSS points to commit ae6da5b from fix(ui): show coalesced update restarts #93082, making him a recent adjacent Control UI contributor. (role: recent area contributor; confidence: medium; commits: ae6da5bc77a9; files: ui/src/components/app-sidebar.ts, ui/src/components/command-palette.ts, ui/src/lib/sessions/navigation.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@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: eda0a4823d

ℹ️ 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/components/app-sidebar.ts Outdated
@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. labels Jul 6, 2026
@steipete steipete self-assigned this Jul 6, 2026
@steipete

steipete commented Jul 6, 2026

Copy link
Copy Markdown
Contributor Author

Land-ready after maintainer integration against current main.

What changed:

  • preserved current-main grouping, unread markers, worktree creation, full session menus, and Created/Last updated sorting;
  • removed the duplicate sidebar picker and made the command palette the bounded cross-agent search surface;
  • fixed hidden-first-page pagination, capped automatic search at four pages, and kept pin/menu actions reachable on touch pointers;
  • retained the compact agent scope and native macOS titlebar brand.

Proof on head 9d7e77448fe4dba99f06a706c1bf3b575b6b9874:

  • Blacksmith Testbox tbx_01kwvy7wd51hwvvsdabzsg923j: pnpm test ui/src/lib/sessions/navigation.test.ts — 6 passed.
  • Same Testbox: pnpm test:ui:e2e -- ui/src/e2e/session-management.e2e.test.ts ui/src/e2e/chat-flow.e2e.test.ts — 33 passed, including stable row selection, both sort modes, page-two visible search, the four-page cap, full menus, and touch controls.
  • Same Testbox: pnpm tsgo:test:ui — passed.
  • Same Testbox: pnpm ui:i18n:check — 20 locales clean, zero fallbacks.
  • Fresh branch autoreview — clean, no accepted/actionable findings.
  • Exact-head hosted CI/Testbox: https://github.com/openclaw/openclaw/actions/runs/28802653916 — success.
  • Repo-native OPENCLAW_TESTBOX=1 scripts/pr prepare-run 100648 — passed.

Known proof gap: the macOS-native titlebar placement retains the PR's existing visual evidence; this repair pass did not launch a new signed macOS app build.

@steipete
steipete merged commit add5c51 into main Jul 6, 2026
73 checks passed
@steipete
steipete deleted the claude/competent-joliot-b16995 branch July 6, 2026 15:38
@steipete

steipete commented Jul 6, 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 7, 2026
…ar brand for the sidebar (openclaw#100648)

* feat(ui): declutter the sidebar — pinned/chats groups, stable ordering, palette session search, titlebar brand in macOS app

- Sessions split into Pinned and Chats groups; pins are exempt from the
  nine-row recency cap and the open session highlights in place instead of
  hoisting to the top, so clicking a row no longer reshuffles the list.
- The command palette (Cmd+K) is the single search: it queries sessions
  across agents server-side and lists matching chats next to nav commands;
  the sidebar session-picker popover and its magnifier are removed, and the
  topbar search pill shrinks to an icon button.
- The sidebar brand row is gone: web keeps the breadcrumb wordmark, and the
  macOS app shows a compact brand mark in the native titlebar strip next to
  the traffic lights (CSS-gated on the injected openclaw-native-macos class).
- The agent filter dropdown becomes a compact scope chip in the Chats group
  header; the welcome badge drops its duplicate claw logo.
- Footer collapses to one icon row (status dot, settings, docs, pairing,
  mobile theme switch); default pinned nav routes are now Overview-only and
  the Recent-collapse preference is retired.

* test(ui): keep sidebar hover-reveal proof before the stability click; refresh locale metadata

Clicking the row leaves :focus-within on it, which keeps the management
actions visible; the hidden-actions assertion must run first.

* test(ui): archive an idle session in the sidebar e2e; assert running rows stay archive-disabled

* fix(ui): drop stale and hidden rows from palette session search

Invalidate the in-flight search and clear results on every query change so a
late-resolving previous-query request cannot leave stale rows selectable, and
run results through getVisibleSessionRows so archived/global/unknown/cron/
subagent rows stay hidden like the sidebar list. Codex review findings.

* fix(ui): over-fetch palette session search so hidden rows cannot starve visible matches

Exclude global/unknown rows server-side and fetch a full 50-row page before
applying the sidebar's hidden-row filter, keeping the 10-row display cap.
Codex review finding.

* chore(i18n): refresh sidebar locale metadata after rebase

* fix(ui): bound command palette session search

* docs: defer release notes to release generation
giodl73-repo pushed a commit to giodl73-repo/openclaw that referenced this pull request Jul 8, 2026
…ar brand for the sidebar (openclaw#100648)

* feat(ui): declutter the sidebar — pinned/chats groups, stable ordering, palette session search, titlebar brand in macOS app

- Sessions split into Pinned and Chats groups; pins are exempt from the
  nine-row recency cap and the open session highlights in place instead of
  hoisting to the top, so clicking a row no longer reshuffles the list.
- The command palette (Cmd+K) is the single search: it queries sessions
  across agents server-side and lists matching chats next to nav commands;
  the sidebar session-picker popover and its magnifier are removed, and the
  topbar search pill shrinks to an icon button.
- The sidebar brand row is gone: web keeps the breadcrumb wordmark, and the
  macOS app shows a compact brand mark in the native titlebar strip next to
  the traffic lights (CSS-gated on the injected openclaw-native-macos class).
- The agent filter dropdown becomes a compact scope chip in the Chats group
  header; the welcome badge drops its duplicate claw logo.
- Footer collapses to one icon row (status dot, settings, docs, pairing,
  mobile theme switch); default pinned nav routes are now Overview-only and
  the Recent-collapse preference is retired.

* test(ui): keep sidebar hover-reveal proof before the stability click; refresh locale metadata

Clicking the row leaves :focus-within on it, which keeps the management
actions visible; the hidden-actions assertion must run first.

* test(ui): archive an idle session in the sidebar e2e; assert running rows stay archive-disabled

* fix(ui): drop stale and hidden rows from palette session search

Invalidate the in-flight search and clear results on every query change so a
late-resolving previous-query request cannot leave stale rows selectable, and
run results through getVisibleSessionRows so archived/global/unknown/cron/
subagent rows stay hidden like the sidebar list. Codex review findings.

* fix(ui): over-fetch palette session search so hidden rows cannot starve visible matches

Exclude global/unknown rows server-side and fetch a full 50-row page before
applying the sidebar's hidden-row filter, keeping the 10-row display cap.
Codex review finding.

* chore(i18n): refresh sidebar locale metadata after rebase

* fix(ui): bound command palette session search

* docs: defer release notes to release generation
steipete added a commit that referenced this pull request Jul 9, 2026
…ebar (#102497)

The sidebar brand row (logo + wordmark) returned in 8295a12 but the
macOS-only titlebar mark from #100648 stayed, so the Mac app showed the
claw icon twice. Delete the sidebar-native-brand element and its
CSS gate; the sidebar brand row is the single brand surface and the
native titlebar strip holds only the traffic lights.
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jul 9, 2026
…ebar (openclaw#102497)

The sidebar brand row (logo + wordmark) returned in d04137f but the
macOS-only titlebar mark from openclaw#100648 stayed, so the Mac app showed the
claw icon twice. Delete the sidebar-native-brand element and its
CSS gate; the sidebar brand row is the single brand surface and the
native titlebar strip holds only the traffic lights.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app: web-ui App: web-ui docs Improvements or additions to documentation maintainer Maintainer-authored PR merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. P2 Normal backlog priority with limited blast radius. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. size: XL status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant