Follow-ups of #736: plugin updates, the path.mode default and vfox config
I maintainer di solito rispondono entro 1 giorno
@linghengqian ci sta già lavorando.
Dal 22/10/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
#736 is merged (feb6092). It added vfox link, vfox doctor, vfox alias, installation receipts, the optional Fingerprint and Detect hooks, PLUGIN.shadowHints and the path.mode setting. It is not released yet: main is one commit ahead of v1.0.13.
This issue collects what is left, so that each item can be picked up, discussed or dropped on its own. #736 closed #706 and #669. These stay open: #337 and #732 (solved for whoever sets path.mode baseline, for everybody only once the default changes, see 3) and #670 and #359 (aliases are in, see 1).
1. Release
- Release vfox with #736. The plugin work below needs it.
- Release notes: the new commands (
link,doctor,alias), thepath.modesetting with the advice to runvfox config path.mode baseline, and the planned change of the default (3). - After the release, point #337 and #732 to
path.mode baseline, and decide what is left of #670 and #359. Aliases are resolved on the command line only and are never written to.vfox.toml, so the second scenario in #670, an alias shared through the version file, is not covered. That was on purpose: a teammate without the alias would get an "is not installed" that vfox cannot explain.
2. Plugins
The new hooks are optional. Older vfox versions (checked: 0.6.0, 1.0.0 and 1.0.13) never load a hook file they do not know and skip metadata fields they do not know, so a plugin can add them without raising minRuntimeVersion. For plugin authors: Fingerprint, Detect and shadowHints.
- vfox-flutter: replace the plugin's own drift detection with a
Fingerprinthook. Todaylib/manifest.luawrites.vfox-manifest(the git HEAD of the SDK) fromhooks/pre_install.lua, andhooks/pre_use.luaprints a warning when the HEAD has moved. The core now records the facts in the receipt, reportssdk.driftaftervfox useand invfox doctor, andvfox install --reinstallrestores the version. Updatedocs/flutter-upgrade.md(and the zh-CN copy) to match. - vfox-nodejs: replace
util.shadowing_node()and theNote:thathooks/pre_use.luaprints withPLUGIN.shadowHints(the pnpm explanation and the link todocs/pnpm.md). This one is more urgent than the others: with the new vfox and the current plugin,vfox useprints the core's warning and the plugin's note for the same problem. - vfox-java: add a
Detecthook, so thatvfox link --detect javafinds the JDKs that are already on the machine (#706, #669). Places to look are, for example,/usr/lib/jvmandupdate-alternatives,/Library/Java/JavaVirtualMachines, SDKMAN, IntelliJ's~/.jdks, Homebrew and the Windows install locations. The version names need a decision: the plugin names its own versions<java version>-<vendor>(21.0.8+9-tem), and thereleasefile of a JDK hasJAVA_VERSIONandIMPLEMENTOR. - vfox-plugin-template:
hooks/has the seven older hooks only. Add optionalfingerprint.luaanddetect.luaexamples and a commentedPLUGIN.shadowHintsinmetadata.lua. - Where a plugin stops doing something itself (flutter's check, nodejs's PATH scan), decide between raising
PLUGIN.minRuntimeVersionand keeping the old code for older vfox, which the plugin can tell fromRUNTIME.version. Where it only adds a hook, no bump is needed.
Per-plugin issues can be opened in the plugin repositories and linked here. Other plugins can follow when somebody needs them, for example Detect for golang or python.
3. Change the default of path.mode to baseline
Today the default is legacy, which is the behavior of 1.0.x. Quick Start and the READMEs ask new installations to run vfox config path.mode baseline, and the configuration guide announces that it becomes the default in a future release. When to do it is a maintainer decision (in the review of #736: "That's a pretty big change! I'll take a look."). What it takes:
- Decide the release, and whether an earlier release should warn first, for instance with a notice from
vfox doctorwhilepath.modeis not set explicitly. - Code:
EmptyPathininternal/config/path.go, the two fallbacks inEffectiveMode(they returnlegacyfor an empty or an unknown value; decide whether a typo should land on the new default) and the starting mode inpathPolicy()ininternal/env/pathpolicy.go. A throw-away flip of these fails 11 tests incmd/commands,internal/config,internal/envandinternal/sdk, which assert the old default. - Docs, English and zh-hans: drop the announcements and the "set baseline" step in
docs/guides/quick-start.mdand both READMEs, updatedocs/guides/configuration.mdanddocs/guides/faq.md, and say how to keep the old behavior (vfox config path.mode legacy). Also the bullet inAGENTS.mdthat sayslegacystays the default. - The hints of the
path.shadowedfinding ininternal/sdk/check.gosuggestvfox config path.mode baseline. Reword them. - Release notes: say it first, with the one-line way back.
To keep in mind: a shell that was started before the upgrade has no recorded baseline and keeps behaving like legacy until it is restarted. A directory that has to stay in front of vfox's can be listed in path.preserve. vfox doctor says what shadows a command and why.
4. vfox config should write only the key it sets
vfox config <key> <value> loads the merged shared and user configuration and saves all of it into the user's config.yaml. The user's file then holds a copy of every section, the shared aliases included, and a section that the user's file declares replaces the shared one: a later change of the shared configuration no longer applies. --unset writes the default value instead of removing the key. vfox alias already edits only its own key (config.AliasFile).
- Edit the user's file as a YAML document and touch only the key that is set or unset, keeping the other keys and the comments.
config.AliasFilecan be generalized for this. -
--unsetremoves the key, so that the shared value or the default applies again. - Tests: with a shared config present, setting one key copies nothing else.
5. Smaller items
- CI has no Nushell, so the generated
vfox.nuis only checked as text. Add a job that installs Nushell, sources the script and checks thatvfox envsees__VFOX_ORIG_PATH. It was checked by hand with Nushell 0.116.1 for #736. - The CLI-level tests in
cmd/commands(cliFixtureincli_test.go) skip on Windows, where only the unit tests and the E2E workflow run. Make the fixture work there, so that the junction,.cmdand PATH separator cases are covered end to end as well.
6. Open questions from the description of #736
The review did not touch these, and they get expensive to change once a release is out:
- The names
Fingerprint,Detect,shadowHintsand.vfox-receipt.json. - Whether the warning after
vfox usemay be on by default (diagnostics.onUse). - Whether
Detectbelongs in the core or in the plugins.
- Lingua principale
- Go
- Stelle
- 4k
- Fork
- 167
- Merge medio
- 2g 10h
- PR unite (30g)
- 8
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di version-fox/vfox
-
bug help wanted
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
version-fox/vfox#746 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
[BUG]: `vfox env` serves the cached output after a `cd`: a .nvmrc / .node-version is ignored on the way in and kept on the way outForse già presa @thelastbackspace l’ha presa oggi. Apertabug
Difficoltà 3/5 Mezza giornata Idoneità per principianti 45/100
version-fox/vfox#745 · 1 commento · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement help wanted
Difficoltà 3/5 1-2 giorni Idoneità per principianti 70/100
version-fox/vfox#743 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
[Feature]: Improve the E2E experience for certain plugin repositories on Windows containersForse già presa @linghengqian l’ha presa 16 giorni fa. Apertaenhancement
version-fox/vfox#733 · 2 commenti · 2 reazioni · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
[BUG]: On Windows, `vfox use java@X` doesn't change `java` when a JDK is in the system PATH and a global SDK is setForse già presa @linghengqian l’ha presa 15 giorni fa. Apertabug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 47/100
version-fox/vfox#732 · 2 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di version-fox/vfox
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
txn2/mcp-data-platform#2493 ·
I maintainer di solito rispondono entro 1 giorno
-
area/docs framework/hugo help wanted language/markdown
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
clawsweeper:fix-shape-clear clawsweeper:queueable-fix clawsweeper:source-repro impact:other issue-rating: 🦞 diamond lobster no-stale P2
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
openclaw/crabbox#3060 · 1 commento · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
radius-project/radius#13698 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno