Replies: 2 comments
|
+1 on this, and on the dropdown semantics as proposed: a pick should pin the current project, with the global default living in Settings → General. |
0 replies
|
+1 for this. T3 Code currently defaults to Cursor for me, but VS Code is my primary editor. I can manually choose VS Code, but having to do that project by project is unnecessary friction. There really should be a global Default Editor setting that applies to every project, with the option to override it for an individual project if needed. Something as simple as: Settings → General → Default Editor → VS Code / Cursor / Zed / etc. would solve this completely. Thanks for this awesome app! Overall, it's amazing! |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Area
apps/web (plus a small
packages/contractsclient-settings addition)Problem or use case
"Open in" remembers exactly one editor across every project. The choice lives in a single
t3code:last-editorlocalStorage key, and picking anything from the dropdown overwrites it globally.That breaks down the moment different projects want different apps. My iOS project wants Xcode, my web projects want Cursor, and a docs repo wants Finder. Today they fight over one slot: opening the iOS project rewrites the preference, and the next time I hit Open on a web project it launches Xcode. There is also no way to say "this is my normal editor" separately from "this is what I opened last", so a single one-off open silently becomes the new global default.
Proposed solution
Split the one sticky value into two levels, the same shape
sidebarProjectGroupingMode/sidebarProjectGroupingOverridesalready uses:defaultEditor— a global default, set in Settings → General ("Open in").nullmeans "first editor the environment reports", so a fresh install still opens something.projectEditorOverrides— optional per-project pin, keyed by physical project key (environmentId+ normalized workspace root), so it matches the key sidebar grouping overrides already use.Resolution: project override → global default → first available editor. An override or default the environment no longer reports falls through rather than leaving a dead Open button.
UX:
OpenInPickerdropdown opens it and pins it to the current project. The plain Open button no longer rewrites the preference — only an explicit pick does.Use default (VS Code)entry that opens in the default and clears the pin.Use global default (X).keybindings.jsonstay on the global default, since they are not project files.Both fields go in client settings, so there is no DB migration. The existing
t3code:last-editorvalue is read as the fallback default so nobody loses their current editor, and is dropped the first time a new default is set.Why this matters
Anyone driving more than one kind of repo from T3 Code hits this daily — mixed-language monorepos, mobile plus web, or a docs repo you want to open in Finder. The current behavior is not just missing a feature; it actively loses your choice every time you open a different project.
Smallest useful scope
The per-project override alone would solve the problem, with the existing sticky value continuing to act as the default. The Settings row is the part that makes the default explicit rather than implicit, and could land second.
Alternatives considered
Risks or tradeoffs
Examples or references
I have this implemented and running on a fork: contracts fields, a tested pure resolver, the picker, the Settings row, and the project dialog field. Web/contracts/desktop/mobile typecheck clean with focused tests on the resolution rules. Happy to open the PR against
mainif the shape above sounds right — or to adjust the dropdown semantics first.Contribution
Yes, I would like to implement this — the work is already done and can be sent as a PR.
All reactions