@sigrun/tui 0.10.2 → 0.11.0
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
CHANGED
|
@@ -6,6 +6,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
8
|
|
|
9
|
+
## [0.11.0] - 2026-11-07
|
|
10
|
+
|
|
11
|
+
- Version-locked bump with the 0.11.0 core line (the pi-durable 1.5.0 release).
|
|
12
|
+
|
|
9
13
|
## [0.10.2] - 2026-11-06
|
|
10
14
|
|
|
11
15
|
- Version-locked bump with the 0.10.2 core line (no changes).
|
|
@@ -6,7 +6,12 @@
|
|
|
6
6
|
* (`▸ Thinking · 2 tools`; `▾` when open) that unfolds into the thinking
|
|
7
7
|
* text and `✓ tool preview` rows (`✗` error, `·` no result yet — the
|
|
8
8
|
* wire carries no per-tool running marker, so `·` covers pending too).
|
|
9
|
-
* `pi.compaction` renders the centred `── context compacted ──` divider.
|
|
9
|
+
* `pi.compaction` renders the centred `── context compacted ──` divider.
|
|
10
|
+
* A run that ended without an answer (`pi.live.runFailure`, pi-durable
|
|
11
|
+
* 1.5.0) renders one dim `run ended: <reason>[: <detail>]` line under
|
|
12
|
+
* the last turn; the shared reader hides the user-caused endings
|
|
13
|
+
* (`aborted`/`reset`) and any failure a newer run superseded.
|
|
14
|
+
* The `[tool]`/`[thinking]` tags of
|
|
10
15
|
* the entry-era pane are gone.
|
|
11
16
|
*
|
|
12
17
|
* Task 2c: an EXPANDED input (`/skill:name`, a prompt template) is one
|
|
@@ -6,7 +6,12 @@
|
|
|
6
6
|
* (`▸ Thinking · 2 tools`; `▾` when open) that unfolds into the thinking
|
|
7
7
|
* text and `✓ tool preview` rows (`✗` error, `·` no result yet — the
|
|
8
8
|
* wire carries no per-tool running marker, so `·` covers pending too).
|
|
9
|
-
* `pi.compaction` renders the centred `── context compacted ──` divider.
|
|
9
|
+
* `pi.compaction` renders the centred `── context compacted ──` divider.
|
|
10
|
+
* A run that ended without an answer (`pi.live.runFailure`, pi-durable
|
|
11
|
+
* 1.5.0) renders one dim `run ended: <reason>[: <detail>]` line under
|
|
12
|
+
* the last turn; the shared reader hides the user-caused endings
|
|
13
|
+
* (`aborted`/`reset`) and any failure a newer run superseded.
|
|
14
|
+
* The `[tool]`/`[thinking]` tags of
|
|
10
15
|
* the entry-era pane are gone.
|
|
11
16
|
*
|
|
12
17
|
* Task 2c: an EXPANDED input (`/skill:name`, a prompt template) is one
|
|
@@ -42,6 +47,7 @@
|
|
|
42
47
|
* {@link ConversationPane.clearNotices}).
|
|
43
48
|
*/
|
|
44
49
|
import { Container, Markdown, MouseRegion, Text, } from "@earendil-works/pi-tui";
|
|
50
|
+
import { liveRunFailure } from "@sigrun/shared/live";
|
|
45
51
|
import { activityLabel, expandedUserEntry, groupTurns, } from "@sigrun/shared/turns";
|
|
46
52
|
import { plainTuiTheme } from "../theme.js";
|
|
47
53
|
import { AUTH_FAILURE_MESSAGE } from "../api.js";
|
|
@@ -163,6 +169,9 @@ export class ConversationPane {
|
|
|
163
169
|
/** The notices' mounted components, aligned with `#notices`. */
|
|
164
170
|
#noticeComponents = [];
|
|
165
171
|
#turns = [];
|
|
172
|
+
/** The latest view's `run ended:` line (stream state — recomputed on
|
|
173
|
+
* every `showView`, unlike the composer-owned notices). */
|
|
174
|
+
#runFailureLine;
|
|
166
175
|
/** The open view's conversation id (the chat-block attach's address). */
|
|
167
176
|
#conversationId = 0;
|
|
168
177
|
/** The mounted chat-block surface states, keyed by entry id
|
|
@@ -286,6 +295,11 @@ export class ConversationPane {
|
|
|
286
295
|
}
|
|
287
296
|
this.#conversationId = conversationId;
|
|
288
297
|
this.#turns = groupTurns(wire.entries);
|
|
298
|
+
const runFailure = liveRunFailure(wire);
|
|
299
|
+
this.#runFailureLine =
|
|
300
|
+
runFailure === undefined
|
|
301
|
+
? undefined
|
|
302
|
+
: `run ended: ${runFailure.reason}${runFailure.detail ? `: ${runFailure.detail}` : ""}`;
|
|
289
303
|
if (this.#focus !== undefined && this.#focus >= this.#turns.length) {
|
|
290
304
|
this.#focus = undefined;
|
|
291
305
|
}
|
|
@@ -414,6 +428,11 @@ export class ConversationPane {
|
|
|
414
428
|
}
|
|
415
429
|
this.#container.addChild(new RenderSlot()); // turn gap
|
|
416
430
|
}
|
|
431
|
+
// The run-failure line rides UNDER the last turn (a stream-derived
|
|
432
|
+
// line, not a composer notice — `showView`'s replacement owns it).
|
|
433
|
+
if (this.#runFailureLine !== undefined) {
|
|
434
|
+
this.#container.addChild(new Text(this.#theme.dim(this.#runFailureLine), 0, 0));
|
|
435
|
+
}
|
|
417
436
|
for (const notice of this.#notices) {
|
|
418
437
|
const component = noticeComponent(notice);
|
|
419
438
|
this.#noticeComponents.push(component);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sigrun/tui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "sigrun terminal client (pi-tui based) over the \u00a75 API \u2014 spawned by the sigrun CLI, or standalone against a server URL",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@earendil-works/pi-tui": "^1.3.0",
|
|
24
|
-
"@sigrun/shared": "0.
|
|
24
|
+
"@sigrun/shared": "0.11.0"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"typescript": "^7.0.2",
|