diff --git a/apps/cli/README.md b/apps/cli/README.md index 6f161b32fe..e65a916fcd 100644 --- a/apps/cli/README.md +++ b/apps/cli/README.md @@ -10,6 +10,13 @@ npx kandev Downloads the latest release, starts the backend + web app, and opens your browser. Data (worktrees, SQLite DB) is stored in `~/.kandev` by default. +## Version and Updates + +- `npx kandev` (run mode) uses the latest GitHub release bundle by default. +- At startup, the launcher prints the resolved release tag (for example: `[kandev] release: v0.2.3 (github latest)`). +- Use `--version ` to pin a specific runtime bundle release. +- CLI package updates are checked from npm and shown as a prompt. They are not forced. + ## What You Get - **Multi-agent support** - Claude Code, Codex, GitHub Copilot, Gemini CLI, Amp, Auggie, OpenCode diff --git a/apps/cli/README_internal.md b/apps/cli/README_internal.md index 9a9dc9eae2..3a01a68418 100644 --- a/apps/cli/README_internal.md +++ b/apps/cli/README_internal.md @@ -57,6 +57,7 @@ Note: the runtime bundles are pulled from the latest GitHub Release by default, - **New runtime release without CLI publish**: users get new runtime automatically, but no update prompt. - **New CLI publish**: users get an update prompt and then re-run with the new CLI. +- On startup, `run` also prints the resolved runtime release tag. You can disable the prompt with: diff --git a/apps/cli/src/run.ts b/apps/cli/src/run.ts index 74d099f81a..dc460eeca4 100644 --- a/apps/cli/src/run.ts +++ b/apps/cli/src/run.ts @@ -31,6 +31,8 @@ type PreparedRelease = { backendUrl: string; backendEnv: NodeJS.ProcessEnv; webEnv: NodeJS.ProcessEnv; + releaseTag: string; + requestedVersion?: string; webPort: number; agentctlPort: number; }; @@ -78,7 +80,8 @@ async function prepareReleaseBundle({ // Note: Release mode doesn't configure MCP server ports as it uses // the bundled configuration. Only backend and agentctl ports are set. - // Log level is set to warn for clean production output. + // Log level defaults to warn for clean output and can be overridden + // via KANDEV_LOG_LEVEL. const backendEnv = { ...process.env, KANDEV_SERVER_PORT: String(actualBackendPort), @@ -101,6 +104,8 @@ async function prepareReleaseBundle({ backendUrl, backendEnv, webEnv, + releaseTag: tag, + requestedVersion: version, webPort: actualWebPort, agentctlPort, }; @@ -111,6 +116,10 @@ function launchReleaseApps(prepared: PreparedRelease): { backendProc: ReturnType; webServerPath: string; } { + const releaseSource = prepared.requestedVersion + ? `(requested: ${prepared.requestedVersion})` + : "(github latest)"; + console.log(`[kandev] release: ${prepared.releaseTag} ${releaseSource}`); console.log("[kandev] backend port:", prepared.backendEnv.KANDEV_SERVER_PORT); console.log("[kandev] web port:", prepared.webPort); console.log("[kandev] agentctl port:", prepared.agentctlPort);