@aragon-agent/cli 0.6.42 → 0.6.44

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.
@@ -12,15 +12,20 @@
12
12
  * and every row it did not ask for became `gap` - blank rows ABOVE the content, which
13
13
  * is what the user reported as "the app starts halfway down the screen" and as "a big
14
14
  * blank between the result and the running card". The band now takes the whole pool
15
- * (`fill`), so the region is `[header][band][composer][status]` top to bottom and
15
+ * (`fill`), so the region is `[band][composer][identity][status]` top to bottom and
16
16
  * `gap` cannot exist: `resolveCanvasLayout` is given `frameRows === capacity` and
17
17
  * derives `gap = 0` (see the spec's §5.5 proof, which is why the writer needs no
18
18
  * change at all).
19
19
  *
20
20
  * The composer, popup and status rows come from the SAME `buildFrameBudget` the
21
21
  * full-screen layout uses, so the two modes cannot disagree about how tall the
22
- * editor is. What differs is the top: the header is a real slot here (D3), and the
23
- * row it occupies is spent from the region, not from the printed transcript.
22
+ * editor is. What differs is the top: the identity row is a real slot here (D3), and
23
+ * the row it occupies is spent from the region, not from the printed transcript.
24
+ * THE COUNT IS ALL THIS MODULE OWNS, NOT THE POSITION: since
25
+ * `tui-header-leaks-into-scrollback` the identity row is drawn between the composer and
26
+ * the status group (`ScrollbackShell.tsx`), because region row 0 is necessarily the
27
+ * successor of the newest printed row and chrome there lands inside the conversation.
28
+ * Moving it changed no number below: it is still 1 row, still taken out of `remaining`.
24
29
  *
25
30
  * THIS IS THE ONLY CALL SITE OF `buildLiveBand` (I-8). `remaining` is computed here
26
31
  * once and handed to the band; an `App` that computed its own copy would make
@@ -56,9 +61,11 @@ export function buildScrollbackBudget(input) {
56
61
  }
57
62
  // D1 · H = C. `frameRows` is `rows - 1` by construction (`layout/budget.ts`), so the
58
63
  // region ends exactly on the row above the writer's parked cursor.
64
+ // The identity row is drawn at the BOTTOM now; it is still one row and still deducted
65
+ // here, which is why `liveRows`, `bandRows` and `previewRows` did not move with it.
59
66
  const headerRows = 1;
60
67
  const liveRows = Math.max(1, base.frameRows);
61
- // The whole pool: everything between the header and the status line. Two independent
68
+ // The whole pool: everything above the composer slot. Two independent
62
69
  // derivations put its floor at 1, so `max(0, ...)` is defensive only:
63
70
  // 1. `composerSlotRows = 2 + clampDraftRows(rows, draftRows)` and
64
71
  // `draftMaxRows(rows) = max(1, min(6, floor(rows / 4)))`, so on the narrowest
@@ -7,7 +7,9 @@
7
7
  * `justifyContent="flex-end"` therefore pushed those four rows against the composer and
8
8
  * left every unused row ABOVE the conversation - the "the first reply starts at the
9
9
  * bottom of the screen" report. The answer is conditional anchoring: top while the
10
- * content fits, so the conversation is written downwards from under the header.
10
+ * content fits, so the conversation is written downwards from the region's top row
11
+ * (`tui-header-leaks-into-scrollback` took the identity row off that row and put it
12
+ * below the composer, so the first line of the band is now the first line of the screen).
11
13
  *
12
14
  * WHY THE FALLBACK IS `bottom` AND NOT THE OTHER WAY ROUND. `flex-start` inside an
13
15
  * `overflow="hidden"` box clips the NEWEST rows (Ink's clip rectangle is the box's
@@ -26,7 +28,8 @@
26
28
  * parameters and a unit test can drive it with any table it likes.
27
29
  */
28
30
  import type { Entry } from '../../agent/reducer.js';
29
- /** `top` = content grows down from the header; `bottom` = newest row hugs the composer. */
31
+ /** `top` = content grows down from the region's top row; `bottom` = newest row hugs the
32
+ * composer. */
30
33
  export type TailAnchor = 'top' | 'bottom';
31
34
  /**
32
35
  * Which alignment the live tail should use for the entries it is about to render.
@@ -7,7 +7,9 @@
7
7
  * `justifyContent="flex-end"` therefore pushed those four rows against the composer and
8
8
  * left every unused row ABOVE the conversation - the "the first reply starts at the
9
9
  * bottom of the screen" report. The answer is conditional anchoring: top while the
10
- * content fits, so the conversation is written downwards from under the header.
10
+ * content fits, so the conversation is written downwards from the region's top row
11
+ * (`tui-header-leaks-into-scrollback` took the identity row off that row and put it
12
+ * below the composer, so the first line of the band is now the first line of the screen).
11
13
  *
12
14
  * WHY THE FALLBACK IS `bottom` AND NOT THE OTHER WAY ROUND. `flex-start` inside an
13
15
  * `overflow="hidden"` box clips the NEWEST rows (Ink's clip rectangle is the box's
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aragon-agent/cli",
3
- "version": "0.6.42",
3
+ "version": "0.6.44",
4
4
  "description": "AragonAgent CLI — a Claude-Code / Codex-style interactive terminal UI (TUI) on top of the @aragon-agent/core engine. Installable and runnable via npm / npx.",
5
5
  "license": "MIT",
6
6
  "author": "AragonAgent contributors",
@@ -56,7 +56,7 @@
56
56
  "prepublishOnly": "npm run build"
57
57
  },
58
58
  "dependencies": {
59
- "@aragon-agent/core": "^0.2.54",
59
+ "@aragon-agent/core": "^0.2.56",
60
60
  "chalk": "^5.6.2",
61
61
  "cli-highlight": "^2.0.0",
62
62
  "commander": "^12.1.0",