jeo-code 0.5.4 → 0.5.5

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/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.5]** (2026-06-15) — Full multi-line visibility — the input box scrolls to the caret and the submitted card shows every line.
153
154
  - **[0.5.4]** (2026-06-15) — Reliable multi-line input is ON by default — a paste fills the box and submits as one message.
154
155
  - **[0.5.3]** (2026-06-15) — `$` chains multiple skills in one line (all run, in order), plus multi-line prompt input — paste-merge and gated Shift+Enter.
155
156
  - **[0.5.2]** (2026-06-14) — `$skill` prompt invocation with prefix/fuzzy suggestions, and a per-session input-box hue (amber in cmd-mode).
156
157
  - **[0.5.1]** (2026-06-14) — cmd-mode `!<command>` shell escape — run a shell command without engaging the agent.
157
- - **[0.5.0]** (2026-06-14) — Performance: workspace-scan, workflow-state, and DNA-Claw HUD caches; plus a credential-safety fix that never wipes OAuth over an invalid config.
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.5]** (2026-06-15) — Full multi-line visibility — the input box scrolls to the caret and the submitted card shows every line.
153
154
  - **[0.5.4]** (2026-06-15) — Reliable multi-line input is ON by default — a paste fills the box and submits as one message.
154
155
  - **[0.5.3]** (2026-06-15) — `$` chains multiple skills in one line (all run, in order), plus multi-line prompt input — paste-merge and gated Shift+Enter.
155
156
  - **[0.5.2]** (2026-06-14) — `$skill` prompt invocation with prefix/fuzzy suggestions, and a per-session input-box hue (amber in cmd-mode).
156
157
  - **[0.5.1]** (2026-06-14) — cmd-mode `!<command>` shell escape — run a shell command without engaging the agent.
157
- - **[0.5.0]** (2026-06-14) — Performance: workspace-scan, workflow-state, and DNA-Claw HUD caches; plus a credential-safety fix that never wipes OAuth over an invalid config.
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.5]** (2026-06-15) — Full multi-line visibility — the input box scrolls to the caret and the submitted card shows every line.
153
154
  - **[0.5.4]** (2026-06-15) — Reliable multi-line input is ON by default — a paste fills the box and submits as one message.
154
155
  - **[0.5.3]** (2026-06-15) — `$` chains multiple skills in one line (all run, in order), plus multi-line prompt input — paste-merge and gated Shift+Enter.
155
156
  - **[0.5.2]** (2026-06-14) — `$skill` prompt invocation with prefix/fuzzy suggestions, and a per-session input-box hue (amber in cmd-mode).
156
157
  - **[0.5.1]** (2026-06-14) — cmd-mode `!<command>` shell escape — run a shell command without engaging the agent.
157
- - **[0.5.0]** (2026-06-14) — Performance: workspace-scan, workflow-state, and DNA-Claw HUD caches; plus a credential-safety fix that never wipes OAuth over an invalid config.
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.5]** (2026-06-15) — Full multi-line visibility — the input box scrolls to the caret and the submitted card shows every line.
153
154
  - **[0.5.4]** (2026-06-15) — Reliable multi-line input is ON by default — a paste fills the box and submits as one message.
154
155
  - **[0.5.3]** (2026-06-15) — `$` chains multiple skills in one line (all run, in order), plus multi-line prompt input — paste-merge and gated Shift+Enter.
155
156
  - **[0.5.2]** (2026-06-14) — `$skill` prompt invocation with prefix/fuzzy suggestions, and a per-session input-box hue (amber in cmd-mode).
156
157
  - **[0.5.1]** (2026-06-14) — cmd-mode `!<command>` shell escape — run a shell command without engaging the agent.
157
- - **[0.5.0]** (2026-06-14) — Performance: workspace-scan, workflow-state, and DNA-Claw HUD caches; plus a credential-safety fix that never wipes OAuth over an invalid config.
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.4",
3
+ "version": "0.5.5",
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/tui/app.ts CHANGED
@@ -567,14 +567,12 @@ export class LaunchTui {
567
567
  const border = this.theme.color && uc ? chalk.hex(uc.border) : (s: string) => s;
568
568
  const shadow = this.theme.color && uc ? chalk.hex(uc.shadow) : border;
569
569
  const fill = this.theme.color && uc ? (s: string) => chalk.bgHex(uc.fill)(s) : (s: string) => s;
570
+ // Show ALL wrapped lines — the card lives in scrollback (not a bounded live frame),
571
+ // so a long submitted query stays fully visible (no truncation).
570
572
  const body = text
571
573
  .split("\n")
572
- .flatMap(line => wrapTextWithAnsi(line, Math.max(8, inner - 2)))
573
- .slice(0, 6);
574
- const clipped = body.length === 6 && text.split("\n").length > 6
575
- ? [...body.slice(0, 5), this.unicode ? "…" : "..."]
576
- : body;
577
- const rows = clipped.length ? clipped : [""];
574
+ .flatMap(line => wrapTextWithAnsi(line, Math.max(8, inner - 2)));
575
+ const rows = body.length ? body : [""];
578
576
  const top = border(g.tl + g.h.repeat(inner) + g.tr);
579
577
  const bottom = shadow(g.bl + g.h.repeat(inner) + g.br);
580
578
  const mid = rows.map(line => {
@@ -101,17 +101,23 @@ export function renderInputFrame(line: string, opts: InputBoxOptions = {}): Inpu
101
101
  ccol = wrapped.col;
102
102
  }
103
103
 
104
- // Tail-truncate to maxBodyRows (caret usually edits near the end); the first
105
- // visible row carries an `…` marker when earlier rows are hidden.
104
+ // Scroll the visible window so the caret row stays in view cursor movement reveals
105
+ // every line (no content is unreachable). `…` markers flag rows hidden above/below.
106
106
  const maxBodyRows = Math.max(1, Math.trunc(opts.maxBodyRows ?? rows.length));
107
+ const totalRows = rows.length;
107
108
  let hidden = 0;
108
- if (rows.length > maxBodyRows) {
109
- hidden = rows.length - maxBodyRows;
110
- rows = rows.slice(hidden);
111
- rows[0] = `…${rows[0] ?? ""}`.slice(0, textWidth);
109
+ if (totalRows > maxBodyRows) {
110
+ hidden = Math.min(Math.max(0, crow - maxBodyRows + 1), totalRows - maxBodyRows);
111
+ if (crow < hidden) hidden = crow; // caret above the window → scroll up to it
112
+ rows = rows.slice(hidden, hidden + maxBodyRows);
113
+ if (hidden > 0) rows[0] = `…${rows[0] ?? ""}`.slice(0, textWidth);
114
+ if (hidden + maxBodyRows < totalRows) {
115
+ const last = rows.length - 1;
116
+ rows[last] = `${rows[last] ?? ""}…`.slice(0, textWidth);
117
+ }
112
118
  }
113
119
  let visRow = Math.max(0, Math.min(crow - hidden, rows.length - 1));
114
- if (hidden > 0 && crow - hidden === 0) ccol += 1; // shifted by the `…` marker
120
+ if (hidden > 0 && crow - hidden === 0) ccol += 1; // shifted by the leading `…`
115
121
  if (crow - hidden < 0) { visRow = 0; ccol = 0; }
116
122
 
117
123
  const promptMark = "> ";