Skip to content

Agent: a Search row instead of an always-visible search field - #1282

Merged
AnthonyRonning merged 1 commit into
ux/sidebar-rail-releasefrom
ux/search-toggle
Oct 26, 2026
Merged

AnthonyRonning merged 1 commit into
ux/sidebar-rail-releasefrom
ux/search-toggle

Conversation

@doowta

@doowta doowta commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

Stack 1 sync — 2026-10-26: #1236 → #1282 → #1248 is rebased onto master at d35ea98d. The previous combined head 1bdec838 was manually tested and approved. The refreshed 0.0.8 Dev debug build passed through the pinned Agent Nix workflow; focused manual recheck is pending. GitHub now reports all three layers as mergeable. No local automated tests or test-running hooks were run. Earlier check results below refer to prior revisions.

Why

  • The always-visible search field takes space from the sidebar even when no search is active.
  • The expanded pane should keep its header clear of duplicate sidebar controls.

What this PR adds

  • The sidebar list starts with New Task, then a Search row with a magnifying glass and matching inset and row styling. Clicking Search replaces that row with the focused search field.
  • ⌘F activates the same field and reveals it if the list was scrolled. A collapsed sidebar expands first.
  • Escape in an empty field, or clearing and leaving focus, restores the Search row. A nonempty filter stays visible. The field stays open while its own edit menu holds focus, so Paste works from an empty search.
  • The expanded header has only the fixed sidebar toggle. The collapsed header shows Toggle sidebar, New task and Search; its Search button expands and activates the field.
Light Search active (light) Dark Search active (dark) Motion (light)
Before (master) Always-visible search field on master, light — Always-visible search field on master, dark — —
After New Task, then a Search row, light Search row turned into a focused field filtering the list, light New Task, then a Search row, dark Focused search filtering the list, dark Click Search, type, clear and Escape back to the row

Scroll sideways to compare. Click an image for full size.

Related: stacked on #1236 (collapsed rail and unified header); this PR's diff is the one commit on top of it and should land after #1236. Independent of #1278, #1280 and #1281; all touch the sidebar, so whichever lands later gets a small rebase.

Remote: the Search row also leads the paired-computer list, and filtering covers computer, project and task names across computers.

Details for reviewers (design, scope, checks)

Files (under apps/maple-agent/app)

  • src/keymap.rs, src/ui/chat/{commands,composer,navigation,sidebar,sidebar_computers,tests}.rs

Design

  • Reuses the registered Lucide search icon and existing FocusSearch command. Its catalog default changes from ⌘K to ⌘F (Ctrl-F on other platforms); no transcript Find binding conflicts. Saved user bindings still control the tooltip and command.
  • The Search row is part of the virtualized list in both single-computer and paired-computer layouts. The existing field renders in that row; it is no longer part of the sidebar chrome.
  • Search visibility and its focus-out subscription belong to the cached sidebar. Activation reveals and remeasures the row. The screen handles collapse expansion and command routing. Focus-out and outside-press dismissal preserve the field while its edit menu is open.
  • The row is a tab stop and an Application Vim target. The collapsed button uses widgets::icon_button_for_action. Both use the existing Space guard so activation does not type into the composer.
  • Active/Settled/Archived grouping, task activity and search matching/paging are unchanged.

Size: one commit on #1236's head 6f9604c1; 7 files, +385 / −90 (production +202 / −84, tests +183 / −6, 4 added tests).

Checks (component Nix shell, Xcode 26.5)

  • cargo fmt --all -- --check: passed.
  • cargo clippy -p maple-agent-app --all-targets --locked -- -D warnings: passed.
  • cargo test -p maple-agent-app --locked: 913 passed, 2 ignored.
  • Full workspace CI was not run locally; GitHub CI covers it. The local commit hook was skipped (MAPLE_HOOK_SKIP=1) because of the existing updater test installer::tests::reads_native_release_tar_format_and_preserves_bundle_modes, which fails only on this machine.
  • Checked by hand in light and dark (recordings above); Windows and Linux not exercised.
Full-size images Always-visible search field on master, light Always-visible search field on master, dark New Task, then a Search row, light Search row turned into a focused field filtering the list, light New Task, then a Search row, dark Focused search filtering the list, dark Click Search, type, clear and Escape back to the row

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

@doowta doowta changed the title Proposal: a Search row instead of an always-visible search field Agent: a Search row instead of an always-visible search field Oct 25, 2026
@doowta
doowta marked this pull request as ready for review October 25, 2026 18:40
@marksftw
marksftw added this pull request to stack #1293 October 26, 2026 02:35
Keep the expanded header clear and place Search below New Task. Replace the row with the focused field in the same box, reveal it for the shortcut, and return to the row when an empty search ends. Clicking away drops the input focus while retaining a nonempty filter.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@marksftw

marksftw commented Oct 26, 2026 •

Copy link
Copy Markdown
Collaborator

Stack 1 UI testing completed on October 26, 2026.

Manual UI testing: passed (human tester approval of the refreshed Dev build).

Automated computer-use UI testing: passed for the scoped Stack 1 flows, using Codex-driven native pointer/keyboard interactions, screenshots and accessibility observations.

Tested the combined macOS Dev build at eeb75093b7979a553c6637000d5d4c61967d1423 in stack order #1236 → #1282 → #1248. It includes this PR's current head 902e891cea1c16fa1304e6cb00a06c16afc7b9fe. Individual layers were not launched separately.

Search coverage passed:

  • Open from the expanded sidebar row, collapsed header button and Cmd-F; typing reaches Search.
  • Positive and negative filtering, clear button, and selecting a matching task from a new-task view.
  • First Escape clears a nonempty query; second Escape dismisses empty Search and restores composer focus.
  • Clicking outside dismisses empty Search but preserves a nonempty query.
  • Right-click context menu opens without losing Search; Escape closes it and typing resumes in Search.
  • Unsent text and a synthetic attachment survive Search and sidebar layout changes.

The shared testing report on #1248 records the full environment, cross-stack coverage and limits. It also retains two out-of-scope observations—narrow-window composer clipping and cached sidebar accessibility omissions—for possible future issues. They are treated as likely pre-existing; baseline regression status is unconfirmed, and no issues have been opened.

No unit/integration test suites or test-running hooks ran.

@AnthonyRonning AnthonyRonning 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.

Reviewed at 902e891cea1c16fa1304e6cb00a06c16afc7b9fe. Search retains the existing filtering and command paths; its added visibility/focus state is transient. The Cmd/Ctrl-F default shortcut change is understood.

No substantive blockers found. Hosted Agent CI passed, and the combined stack passed the local human smoke test, including Vim mode.

@AnthonyRonning
AnthonyRonning merged commit 7e66445 into master Oct 26, 2026
43 of 82 checks passed
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.

3 participants