jeo-code 0.6.8 → 0.6.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 +7 -0
- package/README.ja.md +1 -5
- package/README.ko.md +1 -5
- package/README.md +1 -5
- package/README.zh.md +1 -5
- package/package.json +1 -1
- package/src/tui/app.ts +28 -28
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,13 @@ 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.6.9] - 2026-06-16
|
|
10
|
+
_Live streaming blocks size to their content and the viewport instead of a fixed rectangle._
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- **`Thinking` / tool `Output` live blocks size to their content.** The dimmed streaming trace and tool-output tail are now rendered by a single `renderLiveBlock` helper that shows only the most-recent lines, capped at ~30% of the terminal height — instead of a fixed blank-padded rectangle. A short stream no longer leaves dead "hole" rows, and a short terminal keeps the rows the heartbeat needs.
|
|
14
|
+
- Dropped the rounded-icon header image from the READMEs (the hero image and title stay).
|
|
15
|
+
|
|
9
16
|
## [0.6.8] - 2026-06-16
|
|
10
17
|
_OAuth loopback callback host pinned to `localhost` to match provider-registered redirect URIs._
|
|
11
18
|
|
package/README.ja.md
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
<p align="center">
|
|
2
|
-
<img src="assets/icon-rounded-256.png" alt="jeo-code icon" width="128" />
|
|
3
|
-
</p>
|
|
4
|
-
|
|
5
1
|
<p align="center">
|
|
6
2
|
<img src="assets/hero.png" alt="jeo-code 自律コーディングエージェントのヒーローイラスト" width="100%" />
|
|
7
3
|
</p>
|
|
@@ -162,11 +158,11 @@ CI は `.github/workflows/npm-publish.yml` で公開します — GitHub リリ
|
|
|
162
158
|
## 変更履歴 (Changelog)
|
|
163
159
|
|
|
164
160
|
<!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
|
|
161
|
+
- **[0.6.9]** (2026-06-16) — Live streaming blocks size to their content and the viewport instead of a fixed rectangle.
|
|
165
162
|
- **[0.6.8]** (2026-06-16) — OAuth loopback callback host pinned to `localhost` to match provider-registered redirect URIs.
|
|
166
163
|
- **[0.6.7]** (2026-06-16) — Mouse-report input corruption fixed under `jeo --tmux`, and a full-width TUI at one consistent width.
|
|
167
164
|
- **[0.6.6]** (2026-06-16) — Vertical caret movement between input-box rows, a centered welcome banner, and a leaner `parseFlags`.
|
|
168
165
|
- **[0.6.5]** (2026-06-16) — macOS combo-key editing in the boxed prompt, a fresh-start screen clear at launch, a proportional welcome banner, height-aware relayout — and `launch.ts` split into focused submodules.
|
|
169
|
-
- **[0.6.4]** (2026-06-16) — Branding, a responsive-resize fix, `/provider` realignment, and engine repeat-spin recovery.
|
|
170
166
|
|
|
171
167
|
See [CHANGELOG.md](CHANGELOG.md) for the full history.
|
|
172
168
|
<!-- CHANGELOG:END -->
|
package/README.ko.md
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
<p align="center">
|
|
2
|
-
<img src="assets/icon-rounded-256.png" alt="jeo-code icon" width="128" />
|
|
3
|
-
</p>
|
|
4
|
-
|
|
5
1
|
<p align="center">
|
|
6
2
|
<img src="assets/hero.png" alt="jeo-code 자율 코딩 에이전트 히어로 일러스트" width="100%" />
|
|
7
3
|
</p>
|
|
@@ -162,11 +158,11 @@ CI는 `.github/workflows/npm-publish.yml`로 배포합니다 — GitHub 릴리
|
|
|
162
158
|
## 변경 이력 (Changelog)
|
|
163
159
|
|
|
164
160
|
<!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
|
|
161
|
+
- **[0.6.9]** (2026-06-16) — Live streaming blocks size to their content and the viewport instead of a fixed rectangle.
|
|
165
162
|
- **[0.6.8]** (2026-06-16) — OAuth loopback callback host pinned to `localhost` to match provider-registered redirect URIs.
|
|
166
163
|
- **[0.6.7]** (2026-06-16) — Mouse-report input corruption fixed under `jeo --tmux`, and a full-width TUI at one consistent width.
|
|
167
164
|
- **[0.6.6]** (2026-06-16) — Vertical caret movement between input-box rows, a centered welcome banner, and a leaner `parseFlags`.
|
|
168
165
|
- **[0.6.5]** (2026-06-16) — macOS combo-key editing in the boxed prompt, a fresh-start screen clear at launch, a proportional welcome banner, height-aware relayout — and `launch.ts` split into focused submodules.
|
|
169
|
-
- **[0.6.4]** (2026-06-16) — Branding, a responsive-resize fix, `/provider` realignment, and engine repeat-spin recovery.
|
|
170
166
|
|
|
171
167
|
See [CHANGELOG.md](CHANGELOG.md) for the full history.
|
|
172
168
|
<!-- CHANGELOG:END -->
|
package/README.md
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
<p align="center">
|
|
2
|
-
<img src="assets/icon-rounded-256.png" alt="jeo-code icon" width="128" />
|
|
3
|
-
</p>
|
|
4
|
-
|
|
5
1
|
<p align="center">
|
|
6
2
|
<img src="assets/hero.png" alt="jeo-code autonomous coding-agent hero illustration" width="100%" />
|
|
7
3
|
</p>
|
|
@@ -162,11 +158,11 @@ Required npm token permissions (repository secret `NPM_TOKEN`):
|
|
|
162
158
|
## Changelog
|
|
163
159
|
|
|
164
160
|
<!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
|
|
161
|
+
- **[0.6.9]** (2026-06-16) — Live streaming blocks size to their content and the viewport instead of a fixed rectangle.
|
|
165
162
|
- **[0.6.8]** (2026-06-16) — OAuth loopback callback host pinned to `localhost` to match provider-registered redirect URIs.
|
|
166
163
|
- **[0.6.7]** (2026-06-16) — Mouse-report input corruption fixed under `jeo --tmux`, and a full-width TUI at one consistent width.
|
|
167
164
|
- **[0.6.6]** (2026-06-16) — Vertical caret movement between input-box rows, a centered welcome banner, and a leaner `parseFlags`.
|
|
168
165
|
- **[0.6.5]** (2026-06-16) — macOS combo-key editing in the boxed prompt, a fresh-start screen clear at launch, a proportional welcome banner, height-aware relayout — and `launch.ts` split into focused submodules.
|
|
169
|
-
- **[0.6.4]** (2026-06-16) — Branding, a responsive-resize fix, `/provider` realignment, and engine repeat-spin recovery.
|
|
170
166
|
|
|
171
167
|
See [CHANGELOG.md](CHANGELOG.md) for the full history.
|
|
172
168
|
<!-- CHANGELOG:END -->
|
package/README.zh.md
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
<p align="center">
|
|
2
|
-
<img src="assets/icon-rounded-256.png" alt="jeo-code icon" width="128" />
|
|
3
|
-
</p>
|
|
4
|
-
|
|
5
1
|
<p align="center">
|
|
6
2
|
<img src="assets/hero.png" alt="jeo-code 自主编码代理主视觉插图" width="100%" />
|
|
7
3
|
</p>
|
|
@@ -162,11 +158,11 @@ CI 通过 `.github/workflows/npm-publish.yml` 发布 — GitHub 发布 release
|
|
|
162
158
|
## 更新日志 (Changelog)
|
|
163
159
|
|
|
164
160
|
<!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
|
|
161
|
+
- **[0.6.9]** (2026-06-16) — Live streaming blocks size to their content and the viewport instead of a fixed rectangle.
|
|
165
162
|
- **[0.6.8]** (2026-06-16) — OAuth loopback callback host pinned to `localhost` to match provider-registered redirect URIs.
|
|
166
163
|
- **[0.6.7]** (2026-06-16) — Mouse-report input corruption fixed under `jeo --tmux`, and a full-width TUI at one consistent width.
|
|
167
164
|
- **[0.6.6]** (2026-06-16) — Vertical caret movement between input-box rows, a centered welcome banner, and a leaner `parseFlags`.
|
|
168
165
|
- **[0.6.5]** (2026-06-16) — macOS combo-key editing in the boxed prompt, a fresh-start screen clear at launch, a proportional welcome banner, height-aware relayout — and `launch.ts` split into focused submodules.
|
|
169
|
-
- **[0.6.4]** (2026-06-16) — Branding, a responsive-resize fix, `/provider` realignment, and engine repeat-spin recovery.
|
|
170
166
|
|
|
171
167
|
See [CHANGELOG.md](CHANGELOG.md) for the full history.
|
|
172
168
|
<!-- CHANGELOG:END -->
|
package/package.json
CHANGED
package/src/tui/app.ts
CHANGED
|
@@ -1178,6 +1178,30 @@ export class LaunchTui {
|
|
|
1178
1178
|
}
|
|
1179
1179
|
|
|
1180
1180
|
|
|
1181
|
+
/** Build a live, DIMMED streaming block (the `Thinking` reasoning trace or a tool's
|
|
1182
|
+
* `Output` tail). Sized to its ACTUAL content and the terminal height — no fixed
|
|
1183
|
+
* blank-row padding. The old fixed-height region (`ROWS` constant, blank-padded at
|
|
1184
|
+
* the top) reserved a constant rectangle: a short stream left dead rows that read as
|
|
1185
|
+
* a torn "hole", and on a short terminal it stole rows the heartbeat needed. Now the
|
|
1186
|
+
* block shows only the most-recent lines, capped at ~30% of the screen height (a
|
|
1187
|
+
* ceiling guards a tall terminal), so it grows with the stream and shrinks with the
|
|
1188
|
+
* viewport. Returns [] when there is nothing to show. */
|
|
1189
|
+
private renderLiveBlock(label: string, text: string, cols: number, rows: number, ceiling: number): string[] {
|
|
1190
|
+
const dim = this.theme.color ? chalk.dim : (s: string) => s;
|
|
1191
|
+
if (!text.trim()) return [];
|
|
1192
|
+
const wrapW = Math.max(8, cols - 2);
|
|
1193
|
+
const wrapped = tailForWrap(text)
|
|
1194
|
+
.split("\n")
|
|
1195
|
+
.flatMap(l => wrapTextWithAnsi(l, wrapW))
|
|
1196
|
+
.filter(l => l.length > 0);
|
|
1197
|
+
if (wrapped.length === 0) return [];
|
|
1198
|
+
const cap = Math.max(3, Math.min(ceiling, Math.floor(rows * 0.3)));
|
|
1199
|
+
const out: string[] = [sectionLabel(label, Math.max(8, cols), { color: this.theme.color, unicode: this.unicode })];
|
|
1200
|
+
for (const l of wrapped.slice(-cap)) out.push(dim(` ${l}`));
|
|
1201
|
+
out.push("");
|
|
1202
|
+
return out;
|
|
1203
|
+
}
|
|
1204
|
+
|
|
1181
1205
|
/** Render the Ctrl+O panel inside the live frame. `maxRows` includes borders. */
|
|
1182
1206
|
private renderHistoryPanel(width: number, maxRows: number): string[] {
|
|
1183
1207
|
if (!this.historyLines || maxRows < 4) return [];
|
|
@@ -1294,42 +1318,18 @@ export class LaunchTui {
|
|
|
1294
1318
|
// as a DIMMED, bounded block above the status line. It is transient — flushed
|
|
1295
1319
|
// UN-dimmed into scrollback once the model commits to a tool/reply (onAssistant),
|
|
1296
1320
|
// so the in-progress trace stays shaded while the final record reads in normal text.
|
|
1321
|
+
// Height is sized to the content and the viewport (renderLiveBlock), not a fixed
|
|
1322
|
+
// rectangle, so a short trace leaves no padded "hole" and a short terminal is spared.
|
|
1297
1323
|
const liveThink = this.streamingThought.trim() || this.streamingReasoning.trim();
|
|
1298
1324
|
if (isThinking && liveThink) {
|
|
1299
|
-
|
|
1300
|
-
const wrapped = tailForWrap(liveThink)
|
|
1301
|
-
.split("\n")
|
|
1302
|
-
.flatMap(l => wrapTextWithAnsi(l, wrapW))
|
|
1303
|
-
.filter(l => l.length > 0);
|
|
1304
|
-
// FIXED reserved height (bottom-anchored, blank-padded at top): once present the
|
|
1305
|
-
// block's row count is CONSTANT, so streaming content never changes the frame
|
|
1306
|
-
// height. The per-100ms height thrash that desynced the differential renderer
|
|
1307
|
-
// (duplicate model bar) is gone; height now toggles only at lifecycle boundaries.
|
|
1308
|
-
const ROWS = 6;
|
|
1309
|
-
const shown = wrapped.slice(-ROWS);
|
|
1310
|
-
tail.push(sectionLabel("Thinking", Math.max(8, cols), { color: this.theme.color, unicode: this.unicode }));
|
|
1311
|
-
for (let k = 0; k < ROWS - shown.length; k++) tail.push("");
|
|
1312
|
-
for (const l of shown) tail.push(dim(` ${l}`));
|
|
1313
|
-
tail.push("");
|
|
1325
|
+
tail.push(...this.renderLiveBlock("Thinking", liveThink, cols, rows, 6));
|
|
1314
1326
|
}
|
|
1315
1327
|
|
|
1316
1328
|
// Live tool output (gjc-style streaming bash stdout): while a tool runs, its
|
|
1317
1329
|
// output arrives via onToolProgress and is shown as a DIMMED, bounded tail block.
|
|
1318
1330
|
// It is transient — cleared on result, when the formatted forge card takes over.
|
|
1319
1331
|
if (this.runningTool && this.liveToolOutput.trim()) {
|
|
1320
|
-
|
|
1321
|
-
const wrapped = tailForWrap(this.liveToolOutput)
|
|
1322
|
-
.split("\n")
|
|
1323
|
-
.flatMap(l => wrapTextWithAnsi(l, wrapW))
|
|
1324
|
-
.filter(l => l.length > 0);
|
|
1325
|
-
// FIXED reserved height (see thinking block): constant rows while a tool streams,
|
|
1326
|
-
// so cumulative stdout growth does not thrash the frame height.
|
|
1327
|
-
const ROWS = 8;
|
|
1328
|
-
const shown = wrapped.slice(-ROWS);
|
|
1329
|
-
tail.push(sectionLabel("Output", Math.max(8, cols), { color: this.theme.color, unicode: this.unicode }));
|
|
1330
|
-
for (let k = 0; k < ROWS - shown.length; k++) tail.push("");
|
|
1331
|
-
for (const l of shown) tail.push(dim(` ${l}`));
|
|
1332
|
-
tail.push("");
|
|
1332
|
+
tail.push(...this.renderLiveBlock("Output", this.liveToolOutput, cols, rows, 8));
|
|
1333
1333
|
}
|
|
1334
1334
|
|
|
1335
1335
|
// Live status field: unboxed thinking line + compact metrics row. The model's
|