jeo-code 0.5.14 → 0.5.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -6,6 +6,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  The README mirrors the latest 5 entries — regenerate with `bun run changelog:sync`.
8
8
 
9
+ ## [0.5.15] - 2026-06-16
10
+ _`jeo update` now actually upgrades — bare command installs the latest release instead of just printing a manual command._
11
+
12
+ ### Changed
13
+ - `jeo update` (bare) now performs the upgrade itself: when a newer release exists it runs the install (`bun install -g jeo-code@<latest>`, pinned to the resolved latest version so a stale global cache can't win) instead of printing "Run 'bun install -g jeo-code' to upgrade" and leaving the user to do it. `--check` is the new check-only mode; `--json` stays check-only for programmatic status (add `--install` to install in JSON mode); `--install` still forces an install. The check-only hint now points at `jeo update` itself.
14
+
9
15
  ## [0.5.14] - 2026-06-16
10
16
  _`jeo --tmux` live-verification harness — repeatable stability + behavior checks._
11
17
 
package/README.ja.md CHANGED
@@ -150,11 +150,11 @@ CI は `.github/workflows/npm-publish.yml` で公開します — GitHub リリ
150
150
  ## 変更履歴 (Changelog)
151
151
 
152
152
  <!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
153
+ - **[0.5.15]** (2026-06-16) — `jeo update` now actually upgrades — bare command installs the latest release instead of just printing a manual command.
153
154
  - **[0.5.14]** (2026-06-16) — `jeo --tmux` live-verification harness — repeatable stability + behavior checks.
154
155
  - **[0.5.13]** (2026-06-15) — Workflow `/` commands actually run — `/deep-interview`, `/team`, `/ultragoal`, `/ralplan` dispatch by name.
155
156
  - **[0.5.12]** (2026-06-15) — Yellow status animation while a process runs, and elapsed `(Nms)` on every completed tool card.
156
157
  - **[0.5.11]** (2026-06-15) — Backspace on an empty prompt line no longer quits jeo.
157
- - **[0.5.10]** (2026-06-15) — `/resume` transcript no longer dumps raw JSON for batched tool calls.
158
158
 
159
159
  See [CHANGELOG.md](CHANGELOG.md) for the full history.
160
160
  <!-- CHANGELOG:END -->
package/README.ko.md CHANGED
@@ -150,11 +150,11 @@ CI는 `.github/workflows/npm-publish.yml`로 배포합니다 — GitHub 릴리
150
150
  ## 변경 이력 (Changelog)
151
151
 
152
152
  <!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
153
+ - **[0.5.15]** (2026-06-16) — `jeo update` now actually upgrades — bare command installs the latest release instead of just printing a manual command.
153
154
  - **[0.5.14]** (2026-06-16) — `jeo --tmux` live-verification harness — repeatable stability + behavior checks.
154
155
  - **[0.5.13]** (2026-06-15) — Workflow `/` commands actually run — `/deep-interview`, `/team`, `/ultragoal`, `/ralplan` dispatch by name.
155
156
  - **[0.5.12]** (2026-06-15) — Yellow status animation while a process runs, and elapsed `(Nms)` on every completed tool card.
156
157
  - **[0.5.11]** (2026-06-15) — Backspace on an empty prompt line no longer quits jeo.
157
- - **[0.5.10]** (2026-06-15) — `/resume` transcript no longer dumps raw JSON for batched tool calls.
158
158
 
159
159
  See [CHANGELOG.md](CHANGELOG.md) for the full history.
160
160
  <!-- CHANGELOG:END -->
package/README.md CHANGED
@@ -150,11 +150,11 @@ Required npm token permissions (repository secret `NPM_TOKEN`):
150
150
  ## Changelog
151
151
 
152
152
  <!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
153
+ - **[0.5.15]** (2026-06-16) — `jeo update` now actually upgrades — bare command installs the latest release instead of just printing a manual command.
153
154
  - **[0.5.14]** (2026-06-16) — `jeo --tmux` live-verification harness — repeatable stability + behavior checks.
154
155
  - **[0.5.13]** (2026-06-15) — Workflow `/` commands actually run — `/deep-interview`, `/team`, `/ultragoal`, `/ralplan` dispatch by name.
155
156
  - **[0.5.12]** (2026-06-15) — Yellow status animation while a process runs, and elapsed `(Nms)` on every completed tool card.
156
157
  - **[0.5.11]** (2026-06-15) — Backspace on an empty prompt line no longer quits jeo.
157
- - **[0.5.10]** (2026-06-15) — `/resume` transcript no longer dumps raw JSON for batched tool calls.
158
158
 
159
159
  See [CHANGELOG.md](CHANGELOG.md) for the full history.
160
160
  <!-- CHANGELOG:END -->
package/README.zh.md CHANGED
@@ -150,11 +150,11 @@ CI 通过 `.github/workflows/npm-publish.yml` 发布 — GitHub 发布 release
150
150
  ## 更新日志 (Changelog)
151
151
 
152
152
  <!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
153
+ - **[0.5.15]** (2026-06-16) — `jeo update` now actually upgrades — bare command installs the latest release instead of just printing a manual command.
153
154
  - **[0.5.14]** (2026-06-16) — `jeo --tmux` live-verification harness — repeatable stability + behavior checks.
154
155
  - **[0.5.13]** (2026-06-15) — Workflow `/` commands actually run — `/deep-interview`, `/team`, `/ultragoal`, `/ralplan` dispatch by name.
155
156
  - **[0.5.12]** (2026-06-15) — Yellow status animation while a process runs, and elapsed `(Nms)` on every completed tool card.
156
157
  - **[0.5.11]** (2026-06-15) — Backspace on an empty prompt line no longer quits jeo.
157
- - **[0.5.10]** (2026-06-15) — `/resume` transcript no longer dumps raw JSON for batched tool calls.
158
158
 
159
159
  See [CHANGELOG.md](CHANGELOG.md) for the full history.
160
160
  <!-- CHANGELOG:END -->
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jeo-code",
3
- "version": "0.5.14",
3
+ "version": "0.5.15",
4
4
  "description": "Clean, highly optimized AI coding agent using spec-first loop",
5
5
  "type": "module",
6
6
  "main": "src/cli.ts",
package/src/cli/runner.ts CHANGED
@@ -165,7 +165,7 @@ export const COMMANDS: readonly CommandSpec[] = [
165
165
  },
166
166
  {
167
167
  name: "update",
168
- summary: "Check for (and install) a newer jeo-code release from the npm registry.",
168
+ summary: "Update jeo-code to the latest npm release (bare = install; --check only checks).",
169
169
  usage: "update [--check|--install] [--json] [--strict]",
170
170
  loader: async () => {
171
171
  const m = await import("../commands/update");
@@ -35,7 +35,7 @@ export function compareVersions(a: string, b: string): -1 | 0 | 1 {
35
35
  export interface UpdateDeps {
36
36
  fetchJson: (url: string, options?: { signal?: AbortSignal }) => Promise<any>;
37
37
  localVersion: () => string;
38
- install: () => Promise<{ success: boolean; stdout?: string; stderr?: string }>;
38
+ install: (version?: string) => Promise<{ success: boolean; stdout?: string; stderr?: string }>;
39
39
  /** Display release notes after a successful self-update (best-effort, no-op in tests). */
40
40
  showWhatsNew?: () => void;
41
41
  }
@@ -58,8 +58,12 @@ export const defaultDeps: UpdateDeps = {
58
58
  localVersion: () => {
59
59
  return pkg.version;
60
60
  },
61
- install: async () => {
62
- const proc = Bun.spawnSync(["bun", "install", "-g", "jeo-code"], {
61
+ install: async (version?: string) => {
62
+ // Self-update the global install. jeo runs on Bun (see the `#!/usr/bin/env bun`
63
+ // shebang), so Bun is always present; `@<version>` (default `latest`) forces the
64
+ // newest publish even if a stale global is cached.
65
+ const target = `jeo-code@${version ?? "latest"}`;
66
+ const proc = Bun.spawnSync(["bun", "install", "-g", target], {
63
67
  stdout: "inherit",
64
68
  stderr: "inherit",
65
69
  });
@@ -83,6 +87,7 @@ export async function runUpdateCommand(args: string[] = []): Promise<void> {
83
87
  export async function runUpdateCommandWith(args: string[], deps: UpdateDeps): Promise<void> {
84
88
  const isHelp = args.includes("--help") || args.includes("-h");
85
89
  const hasInstall = args.includes("--install");
90
+ const hasCheck = args.includes("--check");
86
91
  const hasJson = args.includes("--json");
87
92
  const hasStrict = args.includes("--strict");
88
93
 
@@ -154,8 +159,13 @@ export async function runUpdateCommandWith(args: string[], deps: UpdateDeps): Pr
154
159
  }
155
160
  }
156
161
 
162
+ // Default action is INSTALL (bare `jeo update` upgrades). `--check` forces a
163
+ // check-only run; `--json` stays check-only too (programmatic status polling must
164
+ // not trigger an install) unless `--install` is given explicitly.
165
+ const shouldInstall = hasInstall || (!hasCheck && !hasJson);
166
+
157
167
  // We got the version successfully
158
- if (hasInstall) {
168
+ if (shouldInstall) {
159
169
  if (upToDate) {
160
170
  if (hasJson) {
161
171
  console.log(JSON.stringify({
@@ -165,14 +175,14 @@ export async function runUpdateCommandWith(args: string[], deps: UpdateDeps): Pr
165
175
  installed: false
166
176
  }));
167
177
  } else {
168
- console.log(`jeo-code is up-to-date (${current}). Skipping installation.`);
178
+ console.log(`jeo-code is already up-to-date (${current}).`);
169
179
  }
170
180
  } else {
171
181
  if (!hasJson) {
172
182
  console.log(`Installing update: ${current} -> ${latest}...`);
173
183
  }
174
184
  try {
175
- const result = await deps.install();
185
+ const result = await deps.install(latest ?? undefined);
176
186
  if (result.success) {
177
187
  if (hasJson) {
178
188
  console.log(JSON.stringify({
@@ -236,7 +246,7 @@ export async function runUpdateCommandWith(args: string[], deps: UpdateDeps): Pr
236
246
  }));
237
247
  } else {
238
248
  console.log(`Newer version available: ${latest} (current: ${current}).`);
239
- console.log("Run 'bun install -g jeo-code' to upgrade.");
249
+ console.log("Run 'jeo update' to install it.");
240
250
  }
241
251
  }
242
252
  }
@@ -248,8 +258,9 @@ function printUsage() {
248
258
  console.log("Check for and install updates for jeo-code.");
249
259
  console.log("");
250
260
  console.log("Options:");
251
- console.log(" --check Check for updates (default)");
252
- console.log(" --install Check and install if newer");
261
+ console.log(" (default) Check and install if a newer version is available");
262
+ console.log(" --check Only check; do not install");
263
+ console.log(" --install Force install if newer (also used with --json)");
253
264
  console.log(" --json Output result in JSON format");
254
265
  console.log(" --strict Exit with code 1 on network/registry errors");
255
266
  console.log(" -h, --help Show this help message");