feat(cli): ensure safe execution without @latest and omit @latest from marketing - #1725
Conversation
|
1d9bd58 to
0de4d1a
Compare
@arkenv/agent-plugin
arkenv
@arkenv/build
@arkenv/bun-plugin
@arkenv/core
@arkenv/fumadocs-ui
@arkenv/nextjs
@arkenv/nuxt
@arkenv/standard
@arkenv/vite-plugin
commit: |
There was a problem hiding this comment.
ℹ️ Minor suggestions only — the dist-tag plumbing is correctly realized and the check tests genuinely pin the new behavior. Two small suggestions inline plus an assumption worth naming in the body.
Reviewed changes
- Dist-tag-aware freshness —
VersionCheckerClient.checkFreshnessnow derives the queried tag from the running version: the first prerelease identifier when it's a string (alphafor1.0.0-alpha.x,betafor-beta.x), elselatest, and reports the tag in the result.resolveDlxCommand/spawnLatestgain atagoption (defaultlatest), andinit.tsforwardsfreshness.distTaginto the spawned upgrade so an alpha user re-runs asarkenv@alpha, notarkenv@latest. - Dist-tag test coverage — version-checker tests now pin the result
distTagand the queried URL for the prerelease, stable, and pre-release-numeric cases. - Local-installation docs —
getting-started/installation.mdxadds a "Local installation (recommended workflow)" section (install command with the runtime engine, rationale,package.jsonscript wiring), thearkenvREADME quickstart splits "Scaffolding (Day 1)" from "Local installation (Daily driver & CI)", anddocs/LAUNCH_RUNBOOK.mdgains a matching launch checkbox.
ℹ️ Prerelease tag assumption is implicit
defaultTag = typeof parsed?.prerelease[0] === "string" ? parsed.prerelease[0] : "latest" assumes the first prerelease identifier is a published npm dist-tag. That holds for alpha/beta today, but any real version whose first identifier is not an actual tag (e.g. 1.0.0-rc.1 published under next, or a numeric 1.0.0-0) makes the registry query 404 and silently fail open — the user never sees an upgrade prompt. Harmless today, but the assumption should be named in the code (or a fallback to latest considered later), since the check burning out silently inverts the whole feature.
ℹ️ Nitpicks
- The new "Recommended" framing still opens with
npx arkenv initas the Day-1 scaffold, which resolves the mutablelatesttag — slightly at odds with the "deterministic versioning" rationale the section just made for local installs. Fine as-is (scaffolding is inherently one-off), but the tension is worth a sentence noting Day-1 can also benpm i -D arkenv+./node_modules/.bin/arkenv init.
DeepSeek Flash (free via Pullfrog for OSS) | 𝕏
…es and pin dist-tag test assertions
There was a problem hiding this comment.
✅ No new issues found. The new commit cleanly resolves both prior review threads and names the prerelease-tag assumption in code — all 43 tests across the three affected suites pass locally.
Reviewed changes
- Runtime/CLI dependency split —
getting-started/installation.mdxand thearkenvREADME now install the runtime engine (@arkenv/core/@arkenv/standard) as a regular dependency andarkenvas adevDependency, so non-bundled Node/Nub production installs with--omit=devboot safely. - End-to-end dist-tag pinning —
init.test.tsmocksdistTag: "alpha"and asserts the spawner is called withtag: "alpha";spawner.test.tspinsarkenv@alphafor bothresolveDlxCommand(pnpm + npx) andspawnLatest, closing the previously untestedtag: freshness.distTagwiring. - Dist-tag assumption named —
version-checker.client.tsdocuments the prerelease-identifier→dist-tag inference and itslatestfallback.
The prior nitpick about the Day-1 npx arkenv init scaffold standing slightly at odds with the deterministic-versioning rationale remains open, but it is cosmetic and unchanged — leaving it as is.
DeepSeek Flash (free via Pullfrog for OSS) | 𝕏
|
@pullfrog I added a few more changes. Do you approve? |
There was a problem hiding this comment.
✅ No new issues found. Both commits since the prior approval are docs-only, accurate, and consistent with the local-installation workflow the PR establishes.
Reviewed changes
- Clarified local binary execution —
installation.mdxnow notes that once installed locally,npx arkenv,pnpm arkenv, orbun arkenvrun the lockednode_modules/.binbinary. - Aligned SKILL.md preset commands with the local-runner workflow — the Day-2
preset apply/preset removeexamples now usepnpm arkenv preset ..., while Day-1initkeepspnpm dlx arkenv init.
DeepSeek Flash (free via Pullfrog for OSS) | 𝕏

Fixes #1720
Summary of Changes
alphafor alpha pre-releases,latestfor stable releases).initexecutions to run latest release via package-manager-aware runner (pnpm dlx,bunx,yarn dlx, ornpx) with fullstdio: 'inherit'and signal forwarding.SIGINT-> 130,SIGTERM-> 143, other signals -> 1).@latestacross website install pills, documentation MDX guides, package READMEs, and missing-schema error hints.v1branch.