jeo-code 0.9.8 → 0.9.9

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
@@ -8,6 +8,17 @@ The README mirrors the latest 5 entries — regenerate with `bun run changelog:s
8
8
 
9
9
  ## [Unreleased]
10
10
 
11
+ ## [0.9.9] - 2026-07-27
12
+ _Root-causes the frozen `jeo --tmux` TUI: the window was pinned to its launch size, so resizing the terminal only cut the view._
13
+
14
+ ### Fixed
15
+ - **`jeo --tmux` no longer freezes the window at its launch geometry** (`src/commands/launch.ts`, `src/commands/launch/tmux.ts`) — the pre-attach `tmux resize-window` flipped the window's `window-size` option to `manual` as a documented side effect, permanently detaching it from the attached client. Resizing the terminal then left the tmux window frozen: the pane was shown cut/letterboxed and jeo never received SIGWINCH, so no amount of in-app reflow could help. The redundant `resize-window` is gone (`new-session -x/-y` already sizes the detached window), and every jeo-owned session now explicitly asserts `window-size latest`, which also protects users whose `tmux.conf` sets `manual` globally.
16
+
17
+ ### Verified
18
+ - Live tmux 3.6a: attached client 100x30 → window 100x29, 140x40 → 140x39, 72x20 → 72x19, with the TUI reflowing at each step.
19
+ - Control run reproducing the old behaviour: with `window-size manual` the window stayed 80x24 under a 120x36 client (the reported truncation); restoring `latest` recovered instantly.
20
+ - tmux suite: 18 pass / 0 fail, including new assertions that the launch flow never issues `resize-window` and always sets `window-size latest`.
21
+
11
22
  ## [0.9.8] - 2026-07-27
12
23
  _The provider model list now persists and rehydrates, so an account's live models survive across launches (gjc parity)._
13
24
 
package/README.ja.md CHANGED
@@ -285,10 +285,10 @@ CI は `.github/workflows/npm-publish.yml` で公開します — GitHub リリ
285
285
 
286
286
  <!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
287
287
  - **[Unreleased]**
288
+ - **[0.9.9]** (2026-07-27) — Root-causes the frozen `jeo --tmux` TUI: the window was pinned to its launch size, so resizing the terminal only cut the view.
288
289
  - **[0.9.8]** (2026-07-27) — The provider model list now persists and rehydrates, so an account's live models survive across launches (gjc parity).
289
290
  - **[0.9.7]** (2026-07-27) — Fixes the broken 0.9.3-0.9.6 npm releases: `jeo` and `jeo --tmux` crashed at startup right after `jeo update`.
290
291
  - **[0.9.6]** (2026-07-27) — Resize-safe ledger flush and terminal clear handling after viewport shrink.
291
- - **[0.9.5]** (2026-07-27) — Resize-safe live TUI rendering for terminal viewport shrink/grow transitions.
292
292
 
293
293
  See [CHANGELOG.md](CHANGELOG.md) for the full history.
294
294
  <!-- CHANGELOG:END -->
package/README.ko.md CHANGED
@@ -286,10 +286,10 @@ CI는 `.github/workflows/npm-publish.yml`로 배포합니다 — GitHub 릴리
286
286
 
287
287
  <!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
288
288
  - **[Unreleased]**
289
+ - **[0.9.9]** (2026-07-27) — Root-causes the frozen `jeo --tmux` TUI: the window was pinned to its launch size, so resizing the terminal only cut the view.
289
290
  - **[0.9.8]** (2026-07-27) — The provider model list now persists and rehydrates, so an account's live models survive across launches (gjc parity).
290
291
  - **[0.9.7]** (2026-07-27) — Fixes the broken 0.9.3-0.9.6 npm releases: `jeo` and `jeo --tmux` crashed at startup right after `jeo update`.
291
292
  - **[0.9.6]** (2026-07-27) — Resize-safe ledger flush and terminal clear handling after viewport shrink.
292
- - **[0.9.5]** (2026-07-27) — Resize-safe live TUI rendering for terminal viewport shrink/grow transitions.
293
293
 
294
294
  See [CHANGELOG.md](CHANGELOG.md) for the full history.
295
295
  <!-- CHANGELOG:END -->
package/README.md CHANGED
@@ -293,10 +293,10 @@ Huge thanks to [gajae-code](https://github.com/Yeachan-Heo/gajae-code) for the i
293
293
 
294
294
  <!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
295
295
  - **[Unreleased]**
296
+ - **[0.9.9]** (2026-07-27) — Root-causes the frozen `jeo --tmux` TUI: the window was pinned to its launch size, so resizing the terminal only cut the view.
296
297
  - **[0.9.8]** (2026-07-27) — The provider model list now persists and rehydrates, so an account's live models survive across launches (gjc parity).
297
298
  - **[0.9.7]** (2026-07-27) — Fixes the broken 0.9.3-0.9.6 npm releases: `jeo` and `jeo --tmux` crashed at startup right after `jeo update`.
298
299
  - **[0.9.6]** (2026-07-27) — Resize-safe ledger flush and terminal clear handling after viewport shrink.
299
- - **[0.9.5]** (2026-07-27) — Resize-safe live TUI rendering for terminal viewport shrink/grow transitions.
300
300
 
301
301
  See [CHANGELOG.md](CHANGELOG.md) for the full history.
302
302
  <!-- CHANGELOG:END -->
package/README.zh.md CHANGED
@@ -285,10 +285,10 @@ CI 通过 `.github/workflows/npm-publish.yml` 发布 — GitHub 发布 release
285
285
 
286
286
  <!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
287
287
  - **[Unreleased]**
288
+ - **[0.9.9]** (2026-07-27) — Root-causes the frozen `jeo --tmux` TUI: the window was pinned to its launch size, so resizing the terminal only cut the view.
288
289
  - **[0.9.8]** (2026-07-27) — The provider model list now persists and rehydrates, so an account's live models survive across launches (gjc parity).
289
290
  - **[0.9.7]** (2026-07-27) — Fixes the broken 0.9.3-0.9.6 npm releases: `jeo` and `jeo --tmux` crashed at startup right after `jeo update`.
290
291
  - **[0.9.6]** (2026-07-27) — Resize-safe ledger flush and terminal clear handling after viewport shrink.
291
- - **[0.9.5]** (2026-07-27) — Resize-safe live TUI rendering for terminal viewport shrink/grow transitions.
292
292
 
293
293
  See [CHANGELOG.md](CHANGELOG.md) for the full history.
294
294
  <!-- CHANGELOG:END -->
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jeo-code",
3
- "version": "0.9.8",
3
+ "version": "0.9.9",
4
4
  "description": "Clean, highly optimized AI coding agent using spec-first loop",
5
5
  "type": "module",
6
6
  "main": "src/cli.ts",
@@ -193,6 +193,17 @@ export function tmuxProfileCommands(
193
193
  ): TmuxProfileCommand[] {
194
194
  const t = `=${target}:`;
195
195
  const commands: TmuxProfileCommand[] = [];
196
+ // Follow the attached client's geometry, always. tmux's default is already
197
+ // `latest`, but ANY `resize-window` (jeo's own, a user keybinding, a wrapper
198
+ // script) silently flips the window to `manual`, and a user's tmux.conf may set
199
+ // `manual` globally. A manual window never resizes with the terminal: jeo's pane
200
+ // stays frozen at its launch size, gets shown letterboxed/cut, and jeo never sees
201
+ // SIGWINCH so it cannot reflow either. Asserting `latest` per jeo session makes
202
+ // the live TUI track every terminal resize.
203
+ commands.push({
204
+ description: "track the attached client's size (never freeze the window)",
205
+ args: ["set-window-option", "-t", t, "window-size", "latest"],
206
+ });
196
207
  if (env.JEO_TMUX_MOUSE !== "0") {
197
208
  commands.push({
198
209
  description: "enable tmux mouse scrolling (wheel-up → copy-mode over real history)",
@@ -491,13 +491,15 @@ export async function runLaunchCommand(args: string[]): Promise<void> {
491
491
  : `Starting new independent tmux session: ${sessionName} (another live jeo session already owns ${sessionBase}; reattach later with: tmux attach -t ${sessionName})`,
492
492
  );
493
493
 
494
- // Re-assert the caller dimensions right before attach (best-effort): profile
495
- // commands or a slow first frame can land while the window is still detached.
496
- if (termSize) {
497
- try {
498
- Bun.spawnSync([tmuxBin, "resize-window", "-t", `=${sessionName}`, "-x", String(termSize.columns), "-y", String(termSize.rows)]);
499
- } catch { /* best-effort — old tmux without resize-window is fine */ }
500
- }
494
+ // NOTE: never `tmux resize-window` here. tmux flips the window's `window-size`
495
+ // option to `manual` as a side effect of that command, which permanently
496
+ // detaches the window from the attached client's geometry — the terminal is
497
+ // resized, tmux keeps the window frozen at its old size, and the pane is shown
498
+ // letterboxed/cut with jeo never receiving SIGWINCH (the "TUI is stuck at the
499
+ // launch size and the screen is cut" report). `new-session -x/-y` already
500
+ // creates the detached window at the caller's size, and `window-size latest`
501
+ // (asserted in tmuxProfileCommands) makes the attach and every later terminal
502
+ // resize track the client automatically.
501
503
 
502
504
  const attach = Bun.spawn([tmuxBin, "attach-session", "-t", `=${sessionName}`], {
503
505
  stdin: "inherit",