From 1cef54eed16c4fbf54107a8e5f32d4ae1c1ec10d Mon Sep 17 00:00:00 2001 From: dipto0321 Date: Sun, 1 Nov 2026 19:42:06 +0600 Subject: [PATCH] chore(release): prepare v1.2.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps the Go release to v1.2.0 and the npm wrapper (nodeupx) to 1.2.0 with a matching binaryVersion pin, so the wrapper downloads the v1.2.0 release artifact. CHANGELOG.md gets a v1.2.0 section covering the Vite+ support landed in #124 — the new `vp env` surface, the data-directory resolution chain, and the system_first mode subtlety where Current() errors so cleanup fails closed. Docs refresh: README's project-status table, docs/managers.md's detection-matrix header and status note, CLAUDE.md's phase table, and SPEC.md's §T task table (new T22 row for the Vite+ work) and refresh date. Verified with `make ci`, `npm pack --dry-run` (5 files, no bin/), and a GoReleaser snapshot release against v2.19.0 — all 5 platform binaries, checksums.txt, the Homebrew formula, and the Scoop manifest build clean, with archive names matching the nodeup wrapper's expected nodeup___ shape. Co-Authored-By: puku-ai-2.8 --- CHANGELOG.md | 56 ++++++++++++++++++++++++++++++++++++++++- CLAUDE.md | 2 +- README.md | 8 +++--- SPEC.md | 8 +++--- docs/managers.md | 4 +-- nodeup-npm/package.json | 4 +-- 6 files changed, 69 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a38e01..a796725 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,58 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.2.0] - 2026-11-01 + +The headline of this release is **Vite+ support** — `nodeup` now +recognizes [Vite+](https://viteplus.dev), VoidZero's unified +toolchain, as a Node.js version manager. Vite+ users previously got +"no Node.js version manager detected" from `nodeup upgrade`; PR #124 +adds a `VitePlus` manager that drives `vp env` directly, bringing the +supported-manager count from 8 to 9. + +Vite+'s `vp env` subcommand exposes exactly the operations nodeup +needs from a version manager, so the integration is complete rather +than detection-only: `vp env list node --json` for the installed +set, `vp env current node --json` for the active version, and +`vp env {install,uninstall,use,default} node@` for the mutations. +The global npm prefix resolves to +`/js_runtime/node//lib/node_modules`. + +The data-directory resolution mirrors upstream's own chain +(`VP_HOME` → `/.vite-plus` → `VP_DATA_DIR` → the XDG/platform +default). All candidates are returned rather than just the first hit, +so nodeup can still find Node installs when the shell it runs in +doesn't carry the same Vite+ environment variables that `vp` itself +would resolve. + +One subtlety is worth calling out for reviewers: Vite+ can run in +`system_first` mode, where the shims prefer the system Node over a +managed runtime. In that mode `vp env current` reports the *system* +version, so `Current()` returns an error instead of that version. +nodeup treats a failed `Current()` as "active version unknown" and +fails closed on cleanup (issue #58) rather than attributing a system +install to the Vite+-managed set. + +Also included: the system-node classifier now treats +`/js_runtime/node` as manager-managed, so a Vite+-managed `node` +on PATH no longer trips the "nodeup does not recognize this layout" +warning. + +### Added +- Vite+ (`vp`) support as a ninth version manager + (`internal/detector/viteplus.go`): detection (`vp` on PATH or + `/bin/vp` on disk, no subprocess), version parsing, installed- + version listing, active-version query, install / uninstall / use / + set-default, and global npm prefix resolution. Registered in the + detector registry for both unix and Windows, with the per-manager + detection order unchanged (fnm still wins). Closes #123. + +### Fixed +- The Vite+ data-dir detection branch now checks for `vp.exe` as well + as `vp`, so a Vite+ install whose binary isn't on PATH is detected + on Windows. `exec.LookPath` applies `PATHEXT` for PATH lookups, + but a direct filesystem stat has to apply the suffix itself. + ## [1.1.0] - 2026-07-05 The headline of this release is the **`internal/ui` rollout** — the @@ -820,5 +872,7 @@ without weakening the body-length guard for hand-authored commits. ### Added - Project blueprint — internal design doc covering language choice, scope, detection engine, version resolution, package migration, architecture, CLI design, edge cases, git workflow, conventional commits, versioning, CI/CD, and distribution. (Superseded by `README.md`; the standalone doc was removed in the Unreleased section.) -[Unreleased]: https://github.com/dipto0321/nodeup/compare/v0.0.0...HEAD +[Unreleased]: https://github.com/dipto0321/nodeup/compare/v1.2.0...HEAD +[1.2.0]: https://github.com/dipto0321/nodeup/compare/v1.1.0...v1.2.0 +[1.1.0]: https://github.com/dipto0321/nodeup/compare/v1.0.1...v1.1.0 [0.0.0]: https://github.com/dipto0321/nodeup/releases/tag/v0.0.0 \ No newline at end of file diff --git a/CLAUDE.md b/CLAUDE.md index aded1e2..7dbbb00 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -133,7 +133,7 @@ orchestrator. | 5 — Config subsystem | Done | merged | | 6 — Cross-platform polish | Done | merged (interrupted-upgrade sentinel, `QuotePath`, system-node classifier) | | 7 — Distribution packaging | Done | GoReleaser, brew/scoop/npm wrappers all shipped (#17, #18); manual v1.0.0 npm publish (#35) bootstrapped the OIDC trust | -| 8 — v1.0.0 → v1.1.0 releases | Done | `nodeupx@1.0.1` (and now `@1.1.0` matching the Go binary) live on npm; trusted-publisher OIDC flow active for every tag (`#109`) | +| 8 — v1.0.0 → v1.2.0 releases | Done | `nodeupx@1.2.0` live on npm, matching the Go binary; trusted-publisher OIDC flow active for every tag (`#109`) | ## On-disk data layout diff --git a/README.md b/README.md index 1992792..6b85d99 100644 --- a/README.md +++ b/README.md @@ -244,9 +244,9 @@ See [`docs/configuration.md`](./docs/configuration.md) for the full schema. ## Project status -Current release: **v1.1.0** (`nodeupx@1.0.1` on npm — the npm wrapper -trails the Go binary by one publish). See `CHANGELOG.md` for the -v1.0.0 → v1.1.0 history. +Current release: **v1.2.0** (`nodeupx@1.2.0` on npm — the wrapper +publishes automatically alongside the tag). See `CHANGELOG.md` for the +v1.1.0 → v1.2.0 history. | Phase | Status | What shipped | |---|---|---| @@ -257,7 +257,7 @@ v1.0.0 → v1.1.0 history. | 5 — Config subsystem | ✅ | YAML config at `~/.nodeup/config.yaml` + `config {show,get,set,init}` + env vars | | 6 — Cross-platform polish | ✅ | `QuotePath`, interrupted-upgrade replay, system-node classifier, lock file | | 7 — Distribution packaging | ✅ | GoReleaser + brew tap + Scoop bucket + npm wrapper (`nodeupx` via OIDC Trusted Publishing) | -| 8 — First tagged release | ✅ | `v1.0.0` shipped (PR #35); `v1.1.0` shipped with the `internal/ui` rollout (`#117`/`#118`/`#119`) | +| 8 — Tagged releases | ✅ | `v1.0.0` shipped (PR #35); `v1.1.0` shipped with the `internal/ui` rollout (`#117`/`#118`/`#119`); `v1.2.0` adds Vite+ support (`#124`) | **Release train:** every `v*.*.*` tag triggers GoReleaser → brew formula push → Scoop manifest push → `nodeupx` publish via OIDC. To ship a diff --git a/SPEC.md b/SPEC.md index 926173c..489f8c5 100644 --- a/SPEC.md +++ b/SPEC.md @@ -1,9 +1,10 @@ # SPEC — nodeup Distilled from code (README, CLAUDE.md, CONTRIBUTING.md, docs/*, and -`internal/*` source). Last refresh: 2026-07-05 (post v1.1.0 release; -§C/§I/§V/§T updated to match current state — `internal/ui` rollout -complete via #117/#118/#119, #120/#121 are commitlint relaxations). +`internal/*` source). Last refresh: 2026-11-01 (post v1.2.0 release; +§C/§I/§V/§T updated to match current state — Vite+ support complete +via #124, `internal/ui` rollout complete via #117/#118/#119, #120/#121 +are commitlint relaxations). Caveman encoding per FORMAT.md convention (not present at repo root — using shapes from the caveman skill). @@ -122,6 +123,7 @@ T18|x|design + implement internal/ui output layer|V2,#74,#105,#117,#118,#119 T19|x|fix double-prompt + sticky-no-override at cleanup decision point|#76,#95 T20|x|rest of cleanup/chore/ci/release batch|#62-#69,#89-#94,#99,#100,#107-#109 T21|x|doc drift: CLAUDE.md ui/lipgloss/phase-table stale; SPEC §T stale|#106 +T22|x|add Vite+ (`vp`) as a supported version manager (full `vp env` surface + classifier + registry + docs)|I.managers,V14,#123,#124 ## §B Bugs diff --git a/docs/managers.md b/docs/managers.md index 9681c1f..b3c5683 100644 --- a/docs/managers.md +++ b/docs/managers.md @@ -1,6 +1,6 @@ # Supported Version Managers -All 9 managers listed below are fully detected by `nodeup` as of v1.1.0 +All 9 managers listed below are fully detected by `nodeup` as of v1.2.0 (macOS, Linux, and Windows where applicable). The matrix is the source of truth — keep it in sync with `internal/detector/registry_*.go` and the per-manager files (`fnm.go`, `nvm.go`, `volta.go`, `asdf.go`, `mise.go`, @@ -78,7 +78,7 @@ bin dir (e.g., `fnm env --use-on-cd | source`, or add points at a binary inside the manager's data dir, nodeup's next run will classify it as `manager` and proceed without warning. -> _Status: Phase 7 complete. Post-upgrade cleanup prompt, per-manager native mutation commands, and full distribution packaging (GoReleaser, brew/scoop taps, npm wrapper at `nodeupx@1.0.1` via OIDC Trusted Publishing) have all shipped — see `CHANGELOG.md` for the v1.0.0 → v1.1.0 history._ +> _Status: Phase 7 complete. Post-upgrade cleanup prompt, per-manager native mutation commands, and full distribution packaging (GoReleaser, brew/scoop taps, npm wrapper at `nodeupx@1.2.0` via OIDC Trusted Publishing) have all shipped — see `CHANGELOG.md` for the v1.1.0 → v1.2.0 history._ ## Post-upgrade cleanup diff --git a/nodeup-npm/package.json b/nodeup-npm/package.json index 96abe9a..1aa4584 100644 --- a/nodeup-npm/package.json +++ b/nodeup-npm/package.json @@ -1,6 +1,6 @@ { "name": "nodeupx", - "version": "1.1.0", + "version": "1.2.0", "description": "Automated Node.js version upgrade + global package migration CLI. Static Go binary wrapped for npm distribution.", "license": "MIT", "author": "Dipto Karmakar ", @@ -42,5 +42,5 @@ "README.md", "LICENSE" ], - "binaryVersion": "1.1.0" + "binaryVersion": "1.2.0" } \ No newline at end of file