Skip to content

Polish web context menu fallback and sidebar icon actions - #3025

Merged
juliusmarminge merged 4 commits into
mainfrom
ui/web-context-menu
Jun 10, 2026
Merged

juliusmarminge merged 4 commits into
mainfrom
ui/web-context-menu

Conversation

@juliusmarminge

@juliusmarminge juliusmarminge commented Jun 9, 2026 •

Copy link
Copy Markdown
Member

Ports the context-menu/sidebar part of #2451 by @sandersonstabo, rebased onto current main.

  • The browser (non-Electron) context menu fallback now opens reliably: dismissal uses capture-phase document listeners instead of a fullscreen overlay (fixing the "opens then immediately disappears" failure), and gets restyled to match app menu density with full-bleed hover, muted inline icons, and destructive rows red at rest
  • ContextMenuItem gains optional header/icon fields (also added to the IPC schema so they survive validation); desktop strips header items since native menus have no equivalent
  • Project right-click menu actions renamed to Rename / Group into... / Copy Path / Remove, with icons in the web fallback
  • Sidebar icon actions (archive, new thread, sort, add project) share a consistent 24px ghost footprint; "new thread in project" rows in the command palette show the chat.new shortcut

Not ported (per Theo's feedback on #2451): the Shortcut keycap-splitting component — existing Kbd rendering is kept everywhere.

Part of splitting #2451 into reviewable frontend-only pieces.

🤖 Generated with Claude Code


Note

Low Risk
UI-only changes to context menu rendering, sidebar styling, and optional IPC fields; desktop strips unsupported fields and existing native menus are unchanged aside from header filtering.

Overview
Polishes browser context menus and sidebar chrome without changing Electron’s native menu behavior beyond stripping web-only metadata.

ContextMenuItem gains optional header and icon on the IPC contract/schema. Desktop normalizeContextMenuItems skips header rows; icon is for the web fallback only.

The web context menu fallback is reworked: fullscreen overlay dismissal is replaced with capture-phase pointerdown / contextmenu listeners (with a one-frame delay so the menu doesn’t close immediately), plus scrollable popover styling, section headers, inline Lucide-style SVG icons, and destructive row styling. Sidebar project/thread menus use shorter labels, trash on delete/remove, and a shared SIDEBAR_ICON_ACTION_BUTTON_CLASS for archive, new thread, sort, and add-project controls (with minor positioning and timestamp tabular-nums tweaks).

Command palette “new thread in project” rows can show the chat.new shortcut via an optional shortcutCommand on buildProjectActionItems.

Reviewed by Cursor Bugbot for commit e695574. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Polish web fallback context menu with icons, headers, and improved dismissal

  • Reworks showContextMenuFallback to support section header items, per-item icons (pencil, copy, folder-tree, trash), scrollable content, and refined hover/destructive/disabled styling.
  • Replaces the full-screen overlay dismissal with capture-phase pointerdown/contextmenu listeners using a menuStack-aware hit test to avoid false dismissals.
  • Extends the ContextMenuItem IPC type in ipc.ts with optional header and icon fields; header items are filtered out of Electron's native menu normalization.
  • Updates sidebar labels and icons in CommandPalette.tsx (e.g. shorter context menu labels, trash icon on delete, shared SIDEBAR_ICON_ACTION_BUTTON_CLASS constant, tabular numeral timestamps).

Macroscope summarized e695574.

@coderabbitai

coderabbitai Bot commented Jun 9, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: aa73bcee-9061-4a67-ab01-699af0086bf6

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ui/web-context-menu

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions Bot added vouch:trusted Author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Jun 9, 2026
@github-actions

github-actions Bot commented Jun 9, 2026 •

Copy link
Copy Markdown
Contributor

🚀 Expo continuous deployment is ready!

  • Project → t3-code
  • Platforms → android, ios
  • Scheme → t3code-preview
  🤖 Android 🍎 iOS
Fingerprint ae17d94b35f91f9c608a63dadbc3ddd9f4ba056e 313e506a7f15a9c3f15b01d787d68a12382432bf
Build Details Build Permalink
DetailsDistribution: INTERNAL
Build profile: preview:dev
Runtime version: ae17d94b35f91f9c608a63dadbc3ddd9f4ba056e
App version: 0.1.0
Git commit: 7a5f7cfdc00b93a02fdb98365704ac0dde5b3dca
Build Permalink
DetailsDistribution: INTERNAL
Build profile: preview:dev
Runtime version: 313e506a7f15a9c3f15b01d787d68a12382432bf
App version: 0.1.0
Git commit: 7a5f7cfdc00b93a02fdb98365704ac0dde5b3dca
Update Details Update Permalink
DetailsBranch: pr-3025
Runtime version: ae17d94b35f91f9c608a63dadbc3ddd9f4ba056e
Git commit: 7a5f7cfdc00b93a02fdb98365704ac0dde5b3dca
Update Permalink
DetailsBranch: pr-3025
Runtime version: 313e506a7f15a9c3f15b01d787d68a12382432bf
Git commit: 7a5f7cfdc00b93a02fdb98365704ac0dde5b3dca
Update QR

macroscopeapp[bot]
macroscopeapp Bot previously approved these changes Jun 9, 2026
@macroscopeapp

macroscopeapp Bot commented Jun 9, 2026 •

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

UI polish changes to context menus and sidebar styling - CSS adjustments, icon support, improved menu dismiss behavior, and shortened labels. All changes are visual/cosmetic with no impact on core business logic or security-sensitive areas.

You can customize Macroscope's approvability policy. Learn more.

- Show trash icon for delete actions in the sidebar menu
- Match fallback icon sizing for destructive items
@macroscopeapp
macroscopeapp Bot dismissed their stale review June 10, 2026 07:21

Dismissing prior approval to re-evaluate b65f255

macroscopeapp[bot]
macroscopeapp Bot previously approved these changes Jun 10, 2026
- Change the archive confirm control from fully rounded to rounded-md
- Keep the existing destructive hover and focus styling
@macroscopeapp
macroscopeapp Bot dismissed their stale review June 10, 2026 07:27

Dismissing prior approval to re-evaluate e695574

@juliusmarminge
juliusmarminge enabled auto-merge (squash) June 10, 2026 07:27
@juliusmarminge
juliusmarminge merged commit 3efabdc into main Jun 10, 2026
16 checks passed
@juliusmarminge
juliusmarminge deleted the ui/web-context-menu branch June 10, 2026 07:29
aaditagrawal added a commit to aaditagrawal/t3code that referenced this pull request Jun 10, 2026
…MIT ONLY, DO NOT SQUASH (#100)

* fix: maintain reasoning selections for multiple providers (pingdotgg#2760)

* [codex] Bump Effect to beta.73 and migrate compatibility APIs (pingdotgg#2840)

Co-authored-by: codex <[email protected]>

* Add Claude Opus 4.8 support (pingdotgg#2849)

* Migrate TypeScript checks to Effect TSGo (pingdotgg#2851)

* Extract collection performance refactors from mobile stack (pingdotgg#2854)

Co-authored-by: codex <[email protected]>

* Extract independent web cleanup from mobile stack (pingdotgg#2855)

Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: codex <[email protected]>

* Ensure Electron runtime is installed in release workflow (pingdotgg#2861)

* T3 Code Mobile [WIP] (pingdotgg#2013)

Co-authored-by: codex <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: Yash Singh <[email protected]>

* chore: add vendored reference repo subtree sync tooling (pingdotgg#2902)

Co-authored-by: codex <[email protected]>

* Use HttpApi for Environment APIs & standardize authn/authz (pingdotgg#2858)

Co-authored-by: codex <[email protected]>

* chore: add Alchemy reference repo subtree (pingdotgg#2918)

Co-authored-by: codex <[email protected]>

* fix(desktop): Include standard Linux AppImage icons for Niri/Noctalia (pingdotgg#2915)

* Probe Cursor models via list_available_models (pingdotgg#2428)

Co-authored-by: codex <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>

* Migrate workspace to Vite+ and pnpm (pingdotgg#2899)

Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: Cursor Agent <[email protected]>

* test(web): CI stability - prebundle react-dom client for browser tests (pingdotgg#2928)

* fix(ssh): Surface redacted stdout for failed commands (pingdotgg#2920)

* fix(desktop): Preserve SSH HTTP auth status (pingdotgg#2923)

Co-authored-by: Julius Marminge <[email protected]>

* fix: build web before desktop release packaging (pingdotgg#2934)

Co-authored-by: Julius Marminge <[email protected]>

* ci: let setup-vp install dependencies (pingdotgg#2936)

Co-authored-by: Julius Marminge <[email protected]>

* fix(release): surface desktop packaging subprocess output (pingdotgg#2937)

Co-authored-by: Julius Marminge <[email protected]>

* chore: setup eas ci (pingdotgg#2911)

Co-authored-by: Julius Marminge <[email protected]>

* fix(release): use workspace electron-builder for desktop packaging (pingdotgg#2938)

Co-authored-by: Julius Marminge <[email protected]>

* [codex] remove duplicated pnpm root config (pingdotgg#2939)

Co-authored-by: Julius Marminge <[email protected]>

* fix(release): install dependency closures in partial jobs (pingdotgg#2941)

Co-authored-by: Julius Marminge <[email protected]>

* [codex] split ci workflow jobs (pingdotgg#2940)

Co-authored-by: Julius Marminge <[email protected]>

* [codex] fix mobile native static analysis source discovery (pingdotgg#2942)

Co-authored-by: Julius Marminge <[email protected]>

* fix(release): preserve desktop artifact arch (pingdotgg#2943)

Co-authored-by: Julius Marminge <[email protected]>

* [codex] Fix desktop packaging patched dependencies (pingdotgg#2944)

Co-authored-by: codex <[email protected]>

* [codex] Filter staged desktop patched dependencies (pingdotgg#2945)

Co-authored-by: codex <[email protected]>

* fix(release): install hosted web workspace closure (pingdotgg#2949)

* fix(cli): bundle patched diff parser dependency (pingdotgg#2957)

Co-authored-by: Julius Marminge <[email protected]>

* Prevent settings layout shifts with scrollbar gutters (pingdotgg#2960)

* [codex] fix release finalize install (pingdotgg#2961)

Co-authored-by: Julius Marminge <[email protected]>

* fix(source-control): handle self-hosted GitLab, multi-account GitHub auth & azure devops web url (pingdotgg#2480)

Co-authored-by: Julius Marminge <[email protected]>

* [codex] Avoid shell for Node executable spawns (pingdotgg#2952)

Co-authored-by: Julius Marminge <[email protected]>

* [codex] Avoid shell for Windows environment probe (pingdotgg#2951)

Co-authored-by: Julius Marminge <[email protected]>

* fix(composer): support spaces in file mentions (pingdotgg#2625)

* [codex] Avoid shell for system executables (pingdotgg#2950)

Co-authored-by: Julius Marminge <[email protected]>

* feat(relay): Add managed relay tunnels and APN service (pingdotgg#2837)

Co-authored-by: codex <[email protected]>

* Restructure documentation into topical folders (pingdotgg#2963)

* move

* dont fail if env-file is unspecified

* fallback to None when RELAY_DOMAIN is unset

* implicit install from vp

* forward args directly

* bump alchemy to fix absolute drizzle schema out

* bump alchemy to fix drizzle schema out attempt 2

* Migrate tests to vite-plus test APIs (pingdotgg#2964)

* remove `vp staged`

* publish deploy status on relay deploy workflow

* Use pnpm for server publish workflow (pingdotgg#2966)

* Rename function for publishing arguments to vp pm (pingdotgg#2967)

* Remove duplicate 'publish' argument in CLI script

* Refactor recoverable Effect fallbacks to orElseSucceed (pingdotgg#2968)

* document vp instead of mise

* link

* cleanup

* tip

* we support cursor, duhhh

* include @latest

* fix(cloud): use Electron fetch for proxying Clerk IPC requests (pingdotgg#2973)

* fix: handle Claude Agent SDK 0.3.x system messages to stop runtime-warning flood (pingdotgg#2872)

Co-authored-by: Julius Marminge <[email protected]>

* "claude system message" instead of "runtime warning" when using 4.8 from claude code (pingdotgg#2972)

* fix(desktop): stop looping macOS TCC permission prompts (pingdotgg#2745)

Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>

* Annotate relay error spans with schema fields (pingdotgg#2976)

* [codex] Enrich relay authorization diagnostics (pingdotgg#2977)

Co-authored-by: codex <[email protected]>

* [codex] Extract infrastructure, telemetry, and test tooling (pingdotgg#2994)

Co-authored-by: codex <[email protected]>

* feat(grok): add Grok CLI provider via ACP (pingdotgg#2809)

Co-authored-by: Julius Marminge <[email protected]>

* [codex] Fix main CI Effect test runtimes (pingdotgg#3008)

Co-authored-by: codex <[email protected]>

* Add Claude Fable 5 model (pingdotgg#3009)

Co-authored-by: codex <[email protected]>

* chore(release): prepare v0.0.26

* [codex] Rebrand T3 Cloud as T3 Connect (pingdotgg#3011)

Co-authored-by: codex <[email protected]>

* Fix Clerk browser test mock (pingdotgg#3013)

Co-authored-by: codex <[email protected]>

* chore(release): prepare v0.0.27

* Bundle DM Sans and JetBrains Mono fonts instead of Google Fonts (pingdotgg#3014)

Co-authored-by: ss <[email protected]>
Co-authored-by: Claude Opus 4.8 <[email protected]>

* Mute icons in labeled controls and suppress popup focus rings (pingdotgg#3015)

Co-authored-by: ss <[email protected]>
Co-authored-by: Claude Opus 4.8 <[email protected]>

* Polish dialog/alert surfaces and unauthenticated provider banner (pingdotgg#3016)

Co-authored-by: ss <[email protected]>
Co-authored-by: Claude Opus 4.8 <[email protected]>

* fix(marketing) : marketing showing wrong icons on linux (pingdotgg#2696)

Co-authored-by: Julius Marminge <[email protected]>

* Misc markdown styling improvements (pingdotgg#3017)

Co-authored-by: ss <[email protected]>
Co-authored-by: Claude Opus 4.8 <[email protected]>
Co-authored-by: codex <[email protected]>
Co-authored-by: Cursor Agent <[email protected]>
Co-authored-by: cursor[bot] <206951365+cursor[bot]@users.noreply.github.com>

* Model picker UI Improvements, Virtualize Model List (pingdotgg#3021)

Co-authored-by: ss <[email protected]>
Co-authored-by: Claude Opus 4.8 <[email protected]>

* Provider env vars table and reworked accent color picker (pingdotgg#3026)

Co-authored-by: ss <[email protected]>
Co-authored-by: Claude Opus 4.8 <[email protected]>

* Polish branch picker trigger, scroll fade, and list layout (pingdotgg#3024)

Co-authored-by: ss <[email protected]>
Co-authored-by: Claude Opus 4.8 <[email protected]>
Co-authored-by: Cursor Agent <[email protected]>

* Polish web context menu fallback and sidebar icon actions (pingdotgg#3025)

Co-authored-by: ss <[email protected]>
Co-authored-by: Claude Opus 4.8 <[email protected]>

* Composer polish: focus ring, send/stop buttons, command menu, context meter, answer panel (pingdotgg#3018)

Co-authored-by: ss <[email protected]>
Co-authored-by: Claude Opus 4.8 <[email protected]>
Co-authored-by: codex <[email protected]>

* Extract changed files card with compact aligned diff stats (pingdotgg#3023)

Co-authored-by: ss <[email protected]>
Co-authored-by: Claude Opus 4.8 <[email protected]>
Co-authored-by: codex <[email protected]>

* ci: fix vp test invocation (-r and --filter are mutually exclusive)

---------

Co-authored-by: Adam Buchweitz <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: codex <[email protected]>
Co-authored-by: Ibrahim Elkamali <[email protected]>
Co-authored-by: Theo Browne <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: Yash Singh <[email protected]>
Co-authored-by: Mike Olson <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: Cursor Agent <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: Guilherme Vieira <[email protected]>
Co-authored-by: Abdul Azeez <[email protected]>
Co-authored-by: Peter Hozák <[email protected]>
Co-authored-by: Ishan <[email protected]>
Co-authored-by: Milosz Jankiewicz <[email protected]>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: ss <[email protected]>
Co-authored-by: Claude Opus 4.8 <[email protected]>
Co-authored-by: Ruzbyte <[email protected]>
Co-authored-by: cursor[bot] <206951365+cursor[bot]@users.noreply.github.com>
Co-authored-by: aaditagrawal <[email protected]>
xxashxx-svg added a commit to xxashxx-svg/t3code that referenced this pull request Jul 10, 2026
On Linux, Chromium fires contextmenu on right-button PRESS (Windows fires
it on release), so the native menu pops up while the button is still
physically held. The menu takes the pointer grab, and the tail end of the
opening right-click — the button release — lands on whatever item sits
under the cursor and activates it. The menu flashes and a random item
runs, which also explains the known workaround (hold the right button and
drag away before releasing).

The earlier fix (pingdotgg#3025) hardened contextMenuFallback.ts, but the desktop
app never uses that path — window.desktopBridge routes context menus to
the native Electron menu, so the regression survived.

Gate the desktopBridge.showContextMenu IPC on pointer release (Linux
only): track button state in the preload and defer opening the menu until
the press that triggered it is released, matching Windows semantics.
Menus opened with no button held (keyboard, click-triggered) are
unaffected, as are Windows and macOS.

Fixes pingdotgg#3698

Co-Authored-By: Claude Fable 5 <[email protected]>
Morphexe pushed a commit to Morphexe/t3code that referenced this pull request Jul 30, 2026
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
darjss pushed a commit to darjss/t3code that referenced this pull request Aug 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 changed lines (additions + deletions). vouch:trusted Author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant