You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
lint,fmt: Deprecate the wrapper bin for stable IDE support #1557
The priority of the method VSCode extension uses to search the bin/ was lower than that of require.resolve(), causing it to fail to locate the custom binary when other workspaces were open
Editors that support LSP should use vp lint|fmt --lsp instead
Instead of node node_modules/.bin/oxlint, should we target node node_modules/.bin/vp?
Running vp natively could be tricky on VS Code extension. Currently, there are problems detecting node with some non-standard setups, like mise and nvm. Running VS Code via CLI or via GUI can change the context too (oxc-project/oxc-vscode#255).
Instead of node node_modules/.bin/oxlint, should we target node node_modules/.bin/vp?
That is my understanding. So, we need to resolve node and oxlint|fmt|vp separately, right?
EDIT: One more question, what was the motivation to resolve node itself instead of leaving it to shebang in bin?
@fengmk2 Please let me know if you have any thoughts on this. Also, it looks like we need to define a standardized way to determine "whether a project is a Vite+ project or not".
No major concerns from me.
IntelliJ doesn’t have the same user base as VS Code, so it doesn’t support as many variations as Sysix has to try and figure out.
The Zed extension API is very limited which is always a concern if anything new needs to be introduced, but I don’t think this change should be a problem there.
For your question about whether a project is a Vite+ project or not, what context are you trying to answer that in? The existence of the package in the package.json file tells us that a project is Vite+ (some nuance here with different package managers and transitive dependencies, but nothing special). This isn’t typically an issue to solve at the plugin level, but maybe you’re trying to get that information in a different context so that’s not always helpful.
I see. I do think those can be problems, but I assume (big assumption) they’re solved already within the plugins. The same issues exist for Oxfmt/Oxlint that now exists for Vite+. Each plugin could be solving this completely differently though, which could provide a slightly different experience.
It looks like we need to define a standardized way to determine "whether a project is a Vite+ project or not"
@leaysgur Let me think about this question. I will provide a standard solution. I understand that not only the oxc extension needs this logic handling, but Vite+ itself also needs this in it's migrate command.
That is my understanding. So, we need to resolve node and oxlint|fmt|vp separately, right?
Yes. The oxlint/fmt/vp part is easy. The node or vp will be difficult. I learned this week that VS Code (electron app) are loading different envs. Maybe something like oxc-project/oxc-vscode#261 will help 🤞
EDIT: One more question, what was the motivation to resolve node itself instead of leaving it to shebang in bin?
Can't remember the right reason, but every platform does handle things differently + the shell problems below:
Little summary from ChatGPT 🤖:
A few historical accidents stacked together:
terminals existed before GUIs
remote logins existed before desktop sessions
shells were originally for humans, not app environments
every shell added its own startup semantics
distros and OS vendors patched behavior differently
developer tools started abusing shell init files as plugin systems
So now:
GUI apps inherit one environment
terminals synthesize another
shells mutate state dynamically
toolchains inject themselves into startup scripts
Electron apps sit awkwardly between desktop app and terminal app
@fengmk2@Sysix@nrayburn-tech
I hesitated to write essentially the same thing across four separate IDE PRs, and since everyone involved is gathered here, I'll leave my comment here instead.
(Resolving this issue is also necessary for the upcoming VP 1.0 release, so I'd really appreciate your help... meaning it would be a huge help if you could review PRs. 🙏🏻 (though of course, after your vacation!))
First of all, in the current PR, nested config support is forcibly disabled on each IDE side, but I'm thinking we should do it collectively for both CLI and LSP on the Oxapps side.
As for the unified behavior in VP mode, it will only use root find-up, which applies to both CLI and LSP usage.
Oxapps do not have the concept of a project root, so some edge cases may still exist
If no config found even in project root?
There is still the risk (known issue) that if a config file containing .lint|fmt is placed somewhere other than the project root
and it is detected as the root depending on the CLI's CWD or the LSP workspace, that config file will be used
Moving away from specifying -c in the CLI to align the behaviors of the CLI and LSP is a separate topic
PRs for IntelliJ and VSCode partially include changes (with different approaches) to prevent the VP mode LSP and the standard LSP from conflicting.
My understanding is that this only partially resolves the issue previously reported for VSCode as oxc-project/oxc-vscode#145.
(Zed and CoC are structurally unaffected by this issue in the first place.)
While we need to decide whether to introduce the complete implementation at this stage, I think we at least need to reach a consensus on the direction?
In VS Code, features like SaveAll and the Problems panel could still end up running with the wrong LSP, and the intended config files won't even be recognized in the first place.
UPDATE:
The previous PRs are a bit large, and there is less time than expected until the v1-rc release date
v1-rc, with the bin wrapper removed, has already been released, which is affecting early adopters who updated quickly
Activity
leaysgur commentedon May 12, 2026
@fengmk2 Are we getting this right?
@Sysix @nrayburn-tech Any thoughts on this?
fengmk2 commentedon May 12, 2026
@leaysgur LGTM 💯
You can directly assign me any tasks that need help.
Sysix commentedon May 12, 2026
Instead of
node node_modules/.bin/oxlint, should we targetnode node_modules/.bin/vp?Running
vpnatively could be tricky on VS Code extension. Currently, there are problems detecting node with some non-standard setups, likemiseandnvm. Running VS Code via CLI or via GUI can change the context too (oxc-project/oxc-vscode#255).leaysgur commentedon May 13, 2026
That is my understanding. So, we need to resolve
nodeandoxlint|fmt|vpseparately, right?EDIT: One more question, what was the motivation to resolve
nodeitself instead of leaving it to shebang in bin?@fengmk2 Please let me know if you have any thoughts on this. Also, it looks like we need to define a standardized way to determine "whether a project is a Vite+ project or not".
nrayburn-tech commentedon May 13, 2026
No major concerns from me.
IntelliJ doesn’t have the same user base as VS Code, so it doesn’t support as many variations as Sysix has to try and figure out.
The Zed extension API is very limited which is always a concern if anything new needs to be introduced, but I don’t think this change should be a problem there.
For your question about whether a project is a Vite+ project or not, what context are you trying to answer that in? The existence of the package in the package.json file tells us that a project is Vite+ (some nuance here with different package managers and transitive dependencies, but nothing special). This isn’t typically an issue to solve at the plugin level, but maybe you’re trying to get that information in a different context so that’s not always helpful.
leaysgur commentedon May 13, 2026
Thank you!
The reason I brought up the Vite+ project detection was due to these questions:
package.jsonin that directory, we don't know if it's the rootpackage.jsonor notpackage.json, what would be considered the "root marker"?require.resolve('vite-plus')or something?If these aren't actually issues, then my concerns were unfounded. 🙈
nrayburn-tech commentedon May 13, 2026
I see. I do think those can be problems, but I assume (big assumption) they’re solved already within the plugins. The same issues exist for Oxfmt/Oxlint that now exists for Vite+. Each plugin could be solving this completely differently though, which could provide a slightly different experience.
fengmk2 commentedon May 13, 2026
@leaysgur Let me think about this question. I will provide a standard solution. I understand that not only the oxc extension needs this logic handling, but Vite+ itself also needs this in it's
migratecommand.leaysgur commentedon May 13, 2026
Thank you, please!
Also, may I ask you to handle
VITE+ ...message fixes? 🙏🏻fengmk2 commentedon May 13, 2026
Sure, I will handle it too.
Sysix commentedon May 13, 2026
Yes. The
oxlint/fmt/vppart is easy. Thenodeorvpwill be difficult. I learned this week that VS Code (electron app) are loading different envs. Maybe something like oxc-project/oxc-vscode#261 will help 🤞Can't remember the right reason, but every platform does handle things differently + the shell problems below:
Little summary from ChatGPT 🤖:
leaysgur commentedon May 13, 2026
Got it, thanks. 🥹
Anyway, I'll let both of you know here once the preliminary tasks (by MK) are complete.
22 remaining items
docs(rfc): expose installed vite-plus version for LSP gating
fengmk2 commentedon May 18, 2026
@Sysix @nrayburn-tech https://github.com/voidzero-dev/vite-plus/pull/1614/changes a standardized way to determine "whether a project is a Vite+ project or not" RFC, please help review and provide any feedback or suggestions. 💌
fix(cli): suppress VITE+ header for lint/fmt LSP and stdin flows (#1619)
docs(rfc): add "Vite+ Project Detection for Editor Extensions"
docs(rfc): correct marker non-targets — .vite-hooks is real, .vp-root…
docs(rfc): expose installed vite-plus version for LSP gating
Stanzilla commentedon May 20, 2026
I'd rather see the project move this direction oxc-project/oxc#22539 to avoid all this extra headache
bins conflict withoxfmtandoxlintbins #1482leaysgur commentedon Sep 17, 2026
@fengmk2 @Sysix @nrayburn-tech
I hesitated to write essentially the same thing across four separate IDE PRs, and since everyone involved is gathered here, I'll leave my comment here instead.
(Resolving this issue is also necessary for the upcoming VP 1.0 release, so I'd really appreciate your help... meaning it would be a huge help if you could review PRs. 🙏🏻 (though of course, after your vacation!))
First of all, in the current PR, nested config support is forcibly disabled on each IDE side, but I'm thinking we should do it collectively for both CLI and LSP on the Oxapps side.
As for the unified behavior in VP mode, it will only use root find-up, which applies to both CLI and LSP usage.
This will also help #2698
NOTE:
.lint|fmtis placed somewhere other than the project root-cin the CLI to align the behaviors of the CLI and LSP is a separate topicPRs for IntelliJ and VSCode partially include changes (with different approaches) to prevent the VP mode LSP and the standard LSP from conflicting.
My understanding is that this only partially resolves the issue previously reported for VSCode as oxc-project/oxc-vscode#145.
(Zed and CoC are structurally unaffected by this issue in the first place.)
While we need to decide whether to introduce the complete implementation at this stage, I think we at least need to reach a consensus on the direction?
In VS Code, features like SaveAll and the Problems panel could still end up running with the wrong LSP, and the intended config files won't even be recognized in the first place.
UPDATE:
node_modules/.bin/oxfmt, which Vite+ 1.0 no longer installs oxc-project/oxc-vscode#401Failed to run oxlint. Click to show error.in Zed Editor oxc-project/oxc-zed#266For these reasons, I am planning to recreate a PR with a minimal scope and merge relatively soon.
fix(cli): remove oxlint and oxfmt bin wrappers (#2672)
feat(oxlint,oxfmt): do not discover nested config in Vite+ mode (#26763)