Add environment-aware new thread picker#4426
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
ApprovabilityVerdict: Needs human review This PR introduces a new user-facing feature (environment-aware thread picker) with new UI workflow, new keybinding command, and migration logic. New features warrant human review to ensure the intended behavior and UX are correct. You can customize Macroscope's approvability policy. Learn more. |
f1dd61f to
cf4f7c9
Compare
fb31222 to
139d17e
Compare
1b619d5 to
a93d1ea
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit a93d1ea. Configure here.
| return; | ||
| } | ||
| openNewThreadOnFlow(); | ||
| }, [environmentShellsLoaded, newThreadEnvironmentItems.length, openIntent, setOpen]); |
There was a problem hiding this comment.
Deferred intent resets palette navigation
Medium Severity
The new-thread-on command palette flow can discard user selections. The palette displays "New thread on..." items before all environment shells are bootstrapped. If a user navigates into a submenu during this time, the openNewThreadOnFlow later clears the view stack, resetting their in-progress selection once bootstrapping completes.
Reviewed by Cursor Bugbot for commit a93d1ea. Configure here.
Original local work that existed only in the pingdotgg#4426 stack-compat patch; no topic branch defines it. CommandPalette.tsx imports these three symbols.


What Changed
chat.newEnvironmentcommand on Mod+Shift+N.Run onlist; the primary environment is labeled with its runtime hostname instead ofLocal.chat.newLocaldefault while preserving customchat.newLocalbindings.Why
Thread creation previously collapsed projects across environments and silently selected one machine. This makes execution location explicit without treating local as a separate mode.
UI Changes
Environment selection:
Environment-scoped project selection:
Checklist
vp checkcompletes with only existing warnings outside this change.vp run typecheckis blocked by the existing interactive Astro dependency prompt and existing unrelated web type errors; changed packages/files introduce no reported type errors.Note
Medium Risk
User-visible shortcut behavior changes for anyone on the old default binding, and thread creation now depends on environment shell bootstrap timing in the command palette.
Overview
Adds an environment-first way to start threads: Mod+Shift+N now binds to
chat.newEnvironmentand opens a “New thread on…” command palette flow (environment → projects on that machine).chat.newLocalis no longer the default on that shortcut; customchat.newLocalbindings (e.g. other keys) are unchanged.The palette gains a
new-thread-onopen intent,resolveNewThreadOnIntentto defer until environment shells load and close when no environments have projects, andbuildSidebarProjectPickerEntriesoptionaltargetEnvironmentIdso project lists don’t fall back to another environment’s copy of a repo.Server startup migrates persisted configs that still have the exact legacy
mod+shift+n→chat.newLocalrule tochat.newEnvironment, while leaving otherchat.newLocalentries alone.Reviewed by Cursor Bugbot for commit a93d1ea. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Add environment-aware new thread picker triggered by
chat.newEnvironmentshortcutresolveNewThreadOnIntentto gate palette opening based on load state; the palette defers display until environment data is ready and closes if no targets exist.buildSidebarProjectPickerEntriesto accept an optionaltargetEnvironmentId, filtering project picker entries to a specific environment.mod+shift+n → chat.newLocaldefault keybinding tochat.newEnvironmenton startup, leaving any user-definedchat.newLocalbindings intact.Macroscope summarized a93d1ea.