@vincemakes/kiso-code 0.24.2 → 0.24.3

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/dist/dispatch.js CHANGED
@@ -26,8 +26,11 @@ export function dispatch(line, ctx) {
26
26
  ctx.chainRef.current = ctx.chainRef.current.then(async () => {
27
27
  // TUI2-R1.5 9 (VD-10): /help is sentences for a human — the keys
28
28
  // row in particular is one long line that hard-folded mid-word.
29
- for (const row of helpRows())
30
- bodyLog(row, "words");
29
+ // DC-51: ONE call, because one call is ONE CELL. D1 puts a blank
30
+ // between any two elements, so a row-per-call group comes out
31
+ // double-spaced — which is what the owner photographed on the
32
+ // ctrl+o expansion.
33
+ bodyLog(helpRows().join("\n"), "words");
31
34
  ctx.input.prompt();
32
35
  });
33
36
  return;
@@ -96,8 +99,23 @@ export function dispatch(line, ctx) {
96
99
  }
97
100
  const land = async () => {
98
101
  if (r.kind === "appended") {
99
- for (const line of r.lines)
100
- bodyLog(line);
102
+ // DC-51 — ONE CALL, because one call is ONE CELL.
103
+ //
104
+ // This was a loop, one `bodyLog` per line, and each call
105
+ // makes its own raw cell — so D1 put a blank between every
106
+ // pair and the expansion came out laced with unpainted
107
+ // rows, twice the height of the card it is meant to be.
108
+ // The owner saw it as stripes.
109
+ //
110
+ // It only became wrong when the block became RENDERED ROWS
111
+ // (0.24.2 ③). Before that the lines were a header and two
112
+ // multi-line payloads — four cells, and the payloads' own
113
+ // newlines kept their rows inside one cell each.
114
+ //
115
+ // `bodyLog` splits on newlines, and a rendered row may not
116
+ // contain one (invariant ①b throws on it), so joining is
117
+ // exactly reversible here.
118
+ bodyLog(r.lines.join("\n"));
101
119
  }
102
120
  else if (r.kind === "none") {
103
121
  // DC-35: "nothing to expand" was said in two situations and
@@ -126,8 +144,7 @@ export function dispatch(line, ctx) {
126
144
  }
127
145
  else {
128
146
  bodyLog(`--- re-wrapped ${r.blocks} block${r.blocks === 1 ? "" : "s"} at the current width (appended — the history above is unchanged) ---`);
129
- for (const line of r.lines)
130
- bodyLog(line);
147
+ bodyLog(r.lines.join("\n")); // DC-51: one call, one cell
131
148
  if (r.skipped > 0)
132
149
  bodyLog(`--- ${r.skipped} earlier block${r.skipped === 1 ? "" : "s"} not re-wrapped (bounded at two screens) ---`);
133
150
  }
package/dist/index.js CHANGED
@@ -712,8 +712,7 @@ async function chatLoop(agent, firstId, input, autoCompact) {
712
712
  // prompt inside a conversation with thousands of events — the
713
713
  // durable log was right there and none of it was shown. Empty for
714
714
  // a fresh session, so `kiso chat` is byte-identical.
715
- for (const line of resumeTail(session.log.all, process.stdout.columns ?? 80))
716
- bodyLog(line);
715
+ bodyLog(resumeTail(session.log.all, process.stdout.columns ?? 80).join("\n")); // DC-51: one call, one cell
717
716
  // R2 (owner, 2026-08-27): the resume list is NOT on the opening
718
717
  // screen. `/resume` is where you go looking for a session; the
719
718
  // opening's job is to say what THIS one is.
@@ -732,8 +731,7 @@ async function chatLoop(agent, firstId, input, autoCompact) {
732
731
  }
733
732
  else {
734
733
  bodyLog(`session ${id} (switched — previous: ${prev}, /resume ${prev} returns)\n`);
735
- for (const line of resumeTail(session.log.all, process.stdout.columns ?? 80))
736
- bodyLog(line);
734
+ bodyLog(resumeTail(session.log.all, process.stdout.columns ?? 80).join("\n")); // DC-51: one call, one cell
737
735
  if (currentFaux)
738
736
  session.setAdapter(createFauxProvider(readFauxScript().slice(fauxSkip(id))));
739
737
  }
@@ -1000,8 +998,7 @@ async function main() {
1000
998
  session.setAdapter(createFauxProvider(readFauxScript().slice(fauxSkip(id))));
1001
999
  // REL-0152-D5 — the same tail on the explicit-id form. NOT on
1002
1000
  // the -p path above: that one's stdout is a machine's input.
1003
- for (const line of resumeTail(session.log.all, process.stdout.columns ?? 80))
1004
- bodyLog(line);
1001
+ bodyLog(resumeTail(session.log.all, process.stdout.columns ?? 80).join("\n")); // DC-51: one call, one cell
1005
1002
  await resume(session, prompt, faux, input);
1006
1003
  break;
1007
1004
  }
package/dist/trust-ui.js CHANGED
@@ -245,8 +245,7 @@ export async function resolveProjectTrust(input) {
245
245
  // the bodyLog below records, verbatim — the listing still lands in
246
246
  // the scrollback; the panel is a bounded block, the record is not).
247
247
  bodyLog(`[project .kiso] ${artifacts.root}`);
248
- for (const row of projectTrustRows(artifacts.files, " "))
249
- bodyLog(row);
248
+ bodyLog(projectTrustRows(artifacts.files, " ").join("\n")); // DC-51: one call, one cell
250
249
  const verdict = await askPanel(input, projectTrustView(artifacts.root, artifacts.files));
251
250
  // A cancel is a "no" HERE — refused is sticky, the project does not
252
251
  // load (re-evaluate by deleting the trust line or changing a file).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vincemakes/kiso-code",
3
- "version": "0.24.2",
3
+ "version": "0.24.3",
4
4
  "description": "kiso CLI — the durable coding agent that survives kill -9: kiso chat / kiso resume / kiso sessions.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -18,19 +18,19 @@
18
18
  "test": "vitest run"
19
19
  },
20
20
  "dependencies": {
21
- "@vincemakes/kiso-ask-ext": "0.24.2",
22
- "@vincemakes/kiso-core": "0.24.2",
23
- "@vincemakes/kiso-evals": "0.24.2",
24
- "@vincemakes/kiso-mcp-ext": "0.24.2",
25
- "@vincemakes/kiso-provider-anthropic": "0.24.2",
26
- "@vincemakes/kiso-provider-openai": "0.24.2",
27
- "@vincemakes/kiso-runtime": "0.24.2",
28
- "@vincemakes/kiso-skills-ext": "0.24.2",
29
- "@vincemakes/kiso-subagent-ext": "0.24.2",
30
- "@vincemakes/kiso-task-ext": "0.24.2",
31
- "@vincemakes/kiso-tools-node": "0.24.2",
32
- "@vincemakes/kiso-tui": "0.24.2",
33
- "@vincemakes/kiso-tui-cells": "0.24.2"
21
+ "@vincemakes/kiso-ask-ext": "0.24.3",
22
+ "@vincemakes/kiso-core": "0.24.3",
23
+ "@vincemakes/kiso-evals": "0.24.3",
24
+ "@vincemakes/kiso-mcp-ext": "0.24.3",
25
+ "@vincemakes/kiso-provider-anthropic": "0.24.3",
26
+ "@vincemakes/kiso-provider-openai": "0.24.3",
27
+ "@vincemakes/kiso-runtime": "0.24.3",
28
+ "@vincemakes/kiso-skills-ext": "0.24.3",
29
+ "@vincemakes/kiso-subagent-ext": "0.24.3",
30
+ "@vincemakes/kiso-task-ext": "0.24.3",
31
+ "@vincemakes/kiso-tools-node": "0.24.3",
32
+ "@vincemakes/kiso-tui": "0.24.3",
33
+ "@vincemakes/kiso-tui-cells": "0.24.3"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@types/node": "^26.1.2",