@vincemakes/kiso-tui-cells 0.18.0 → 0.19.1

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.
@@ -392,7 +392,6 @@ export interface StretchTerms {
392
392
  */
393
393
  export declare function stretchLine(t: StretchTerms & {
394
394
  readonly phase: "thinking" | "acting" | "settled";
395
- readonly foldKey?: number;
396
395
  }, W: number): string[];
397
396
  export declare function turnFold(t: {
398
397
  words: string;
@@ -1249,7 +1249,20 @@ export function stretchLine(t, W) {
1249
1249
  const p = palette();
1250
1250
  const live = t.phase !== "settled";
1251
1251
  const mark = t.phase === "settled" ? `${p.bold}✦${p.reset}` : `${p.dim}${t.mark ?? "✧"}${p.reset}`;
1252
- const key = t.phase === "settled" ? (t.foldKey === undefined ? " · ctrl+r" : ` · ctrl+r ${t.foldKey}`) : "";
1252
+ // R4a (owner ruling, 2026-08-30) the fold row prints NO key.
1253
+ //
1254
+ // R4 printed `· ctrl+r 3` so the row could name its own target. The
1255
+ // owner's objection is the right one: a number you cannot type is not
1256
+ // a selector, it is decoration that costs a column — and the
1257
+ // reference implementation, checked rather than assumed, prints
1258
+ // nothing on the row either. Its expansion lives in a MODE you enter,
1259
+ // where the pointer can reach every fold including the ones that have
1260
+ // scrolled away; the row itself stays clean.
1261
+ //
1262
+ // So the affordance is retired here and owed to that mode. Until it
1263
+ // exists, `ctrl+r` still opens the most recent fold — it is simply no
1264
+ // longer advertised on a row that cannot say which one it means.
1265
+ const key = "";
1253
1266
  const lead = t.phase === "thinking" ? [`thinking ${t.thoughtSeconds}s`] : t.phase === "settled" && t.thoughtSeconds > 0 ? [`thought ${t.thoughtSeconds}s`] : [];
1254
1267
  const clauseText = troubleClause(t);
1255
1268
  let meta = [...lead, ...(t.phase === "thinking" ? [] : stretchTerms(t, live))].join(" · ");
package/dist/strings.d.ts CHANGED
@@ -155,7 +155,19 @@ export declare function displayVerb(name: string): string;
155
155
  * The two ask-only gestures keep their clauses because the ask is the
156
156
  * only flavor with a set to build and an answer to write.
157
157
  */
158
- export declare const PANEL_KEYS_ROW = "panels: \u2191\u2193 move \u00B7 \u23CE or click confirms \u00B7 1-4 instant \u00B7 space toggles \u00B7 t types";
158
+ /**
159
+ * R6/D2 — the row claims only what is TRUE OF EVERY panel.
160
+ *
161
+ * Its old sentence ("⏎ or click confirms · 1-4 instant · space toggles")
162
+ * was documented as true of every flavor, and had silently stopped
163
+ * being: `1-4 instant` is false on the ask's multi-select and on the
164
+ * pick panel (where a digit only moves the cursor and never commits),
165
+ * `or click` is false on both (their frames deliberately report no
166
+ * clickable span), and "1-4" is wrong whenever a panel has a different
167
+ * option count. Layered honesty: this row states the invariant, and each
168
+ * panel's own affordance row states that panel's whole truth.
169
+ */
170
+ export declare const PANEL_KEYS_ROW = "panels: \u2191\u2193 move \u00B7 \u23CE confirms \u00B7 digits act on their row \u00B7 t types";
159
171
  /**
160
172
  * TUI2-R1 (D) — the sheet, one screen, static.
161
173
  *
package/dist/strings.js CHANGED
@@ -189,6 +189,11 @@ export const KEY_BINDINGS = [
189
189
  { keys: "/", what: "commands" },
190
190
  { keys: "↑↓", what: "history / queue pop" },
191
191
  { keys: "ctrl+r", what: "expand cells" },
192
+ // R5 — the transcript viewer. It has to be HERE or it does not exist:
193
+ // R4a retired the printed key from the fold row on the ground that a
194
+ // row cannot say which fold a key opens, and the sheet is where the
195
+ // discoverability moved. A surface nobody can find is not a feature.
196
+ { keys: "ctrl+o", what: "transcript" },
192
197
  { keys: "tab", what: "complete (menu / @)" },
193
198
  { keys: "?", what: "this sheet" },
194
199
  { keys: "ctrl+z / ctrl+y", what: "undo / redo" },
@@ -244,7 +249,19 @@ export function displayVerb(name) {
244
249
  * The two ask-only gestures keep their clauses because the ask is the
245
250
  * only flavor with a set to build and an answer to write.
246
251
  */
247
- export const PANEL_KEYS_ROW = "panels: ↑↓ move · ⏎ or click confirms · 1-4 instant · space toggles · t types";
252
+ /**
253
+ * R6/D2 — the row claims only what is TRUE OF EVERY panel.
254
+ *
255
+ * Its old sentence ("⏎ or click confirms · 1-4 instant · space toggles")
256
+ * was documented as true of every flavor, and had silently stopped
257
+ * being: `1-4 instant` is false on the ask's multi-select and on the
258
+ * pick panel (where a digit only moves the cursor and never commits),
259
+ * `or click` is false on both (their frames deliberately report no
260
+ * clickable span), and "1-4" is wrong whenever a panel has a different
261
+ * option count. Layered honesty: this row states the invariant, and each
262
+ * panel's own affordance row states that panel's whole truth.
263
+ */
264
+ export const PANEL_KEYS_ROW = "panels: ↑↓ move \u00b7 ⏎ confirms \u00b7 digits act on their row \u00b7 t types";
248
265
  /** The sheet's grid: the first six bindings in two 3-column rows, the
249
266
  * last four in two 2-column rows (the wide entries get the room). The
250
267
  * COLUMN STOPS are the prototype's absolute positions, floored by the
@@ -254,15 +271,22 @@ const SHEET_GRID = [
254
271
  [0, 1, 2],
255
272
  [3, 4, 5],
256
273
  [6, 7],
274
+ // R5: ctrl+o joins at index 8, so the tail shifts by one. The grid is
275
+ // a SECOND table that must agree with KEY_BINDINGS and nothing makes
276
+ // it — adding a binding without touching this silently drops the LAST
277
+ // one off the sheet, which is exactly what happened on the first
278
+ // attempt and exactly what the "ONE SOURCE" gate exists to catch.
257
279
  [8, 9],
258
- [10], // UD-1: its own single-column rowno hand-tuned stop touched
280
+ // UD-1's undo row shares this one now the table has an even count
281
+ // again, so no binding needs a row to itself.
282
+ [10, 11],
259
283
  ];
260
284
  const SHEET_STOPS = [
261
285
  [16, 43],
262
286
  [16, 43],
263
287
  [36],
264
288
  [36],
265
- [],
289
+ [36],
266
290
  ];
267
291
  /**
268
292
  * TUI2-R1 (D) — the sheet, one screen, static.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vincemakes/kiso-tui-cells",
3
- "version": "0.18.0",
3
+ "version": "0.19.1",
4
4
  "description": "kiso tui-cells — the components cell renderer (components, diff, width, the render slice). Zero runtime dependencies: input is data, output is bytes.",
5
5
  "type": "module",
6
6
  "license": "MIT",