Skip to content

Unify dropdown menus on the branch selector's picker style - #41

Merged
imrj05 merged 3 commits into
mainfrom
ui/dropdown-consistency
Sep 28, 2026
Merged

imrj05 merged 3 commits into
mainfrom
ui/dropdown-consistency

Conversation

@imrj05

@imrj05 imrj05 commented Sep 28, 2026

Copy link
Copy Markdown
Owner

Summary

Dropdown menus across the app had drifted apart: the branch selector, label picker, settings, usage filters, and sidebar each carried their own ad-hoc menu styling, and behavior was inconsistent — some menus did not close when their trigger was clicked a second time.

This branch aligns every dropdown on the branch selector's picker style and fixes the toggle behavior:

  • Refactor dropdown menus to share the branch selector's picker style (git_panel, sidebar, settings, usage/filters, usage/view, view.rs, sidepane.rs).
  • Toggle the label dropdown closed on a second trigger click (fix(git): toggle the label dropdown closed on a second trigger click).
  • Respawn pi when New Task runs while the process is dead (fix(session): respawn pi when New Task runs with a dead process), with reconnect tests added in new_task_reconnect_tests.rs.

Related issue

Closes #40

Type of change

  • Bug fix
  • New feature
  • Refactor / performance
  • Documentation
  • Chore / tooling

Checklist

  • cargo build --workspace is clean (zero warnings)
  • cargo test --workspace passes (pi-dependent tests may skip)
  • cargo clippy --workspace --all-targets has no new warnings
  • No web UI reintroduced (GPUI only — no React, Tauri, webview, DOM, Node tooling)
  • pi remains the only agent runtime (JSONL RPC over stdio)
  • No new dependency without a stated reason
  • No unsafe without a comment
  • INTENT.md → Implementation status updated (and a D# decision added or revised if the architecture changed)
  • README.md features/roadmap and CHANGELOG.md [Unreleased] updated
  • Other docs updated if behavior or a convention changed

Screenshots / recordings

UI-only change to dropdown styling and toggle behavior; before/after recordings still need to be attached.

Every button-triggered dropdown now shares the branch selector's popover
language from the theme tokens: `picker_surface` with `picker_entry` rows,
overlay hover, and the active fill + accent check on the current choice.
Covers the Git page's Sync / branch "…" / changed-file / merge-rebase
menus, the Review source menu, the Usage filter and row menus, the
composer's add/access/workflow popups and autocomplete, the sidebar session
menu, and aligns the row treatment of the existing search pickers (branch,
labels, templates, Settings selects). Right-click context menus (Explorer
tree, transcript selection) keep their compact `context_menu_*` metrics.
Both label triggers (the Issues filter chip and the issue detail's Edit
labels button) only toggled `label_menu_open`, while the popup dismissed
itself on mouse-down-out. Clicking an open trigger therefore closed the
popup on mouse-down and the same click's mouse-up toggled it straight back
open, so the dropdown could never be closed from its trigger.

Arm `menu_dismissed_at` on dismissal and check the 200 ms gesture guard in
both triggers — the pattern the branch menu, template picker, and the other
dropdowns already use.
@imrj05
imrj05 marked this pull request as ready for review September 28, 2026 18:42
@imrj05
imrj05 requested a review from rj05xdev September 28, 2026 18:42
@imrj05
imrj05 merged commit 9f66de8 into main Sep 28, 2026
4 checks passed
@rj05xdev
rj05xdev deleted the ui/dropdown-consistency branch September 29, 2026 06:17
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.

2 participants