@esso0428/pi-subagents 0.17.4 → 0.17.6

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
@@ -7,10 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
- ## [0.17.4] - 2026-09-18
10
+ ## [0.17.6] - 2026-09-30
11
11
 
12
- ### Added
13
- - **ConversationViewer now shows a clickable `[preview]` action beside `[esc]`**, opening the focused tool's existing read-only full preview while preserving `w` and no-focus no-op behavior.
12
+ ### Fixed
13
+ - **The main ConversationViewer now reserves a right-hand scrollbar rail and exposes an explicit `[preview]` action**, keeping transcript scrolling visible while opening the focused tool's full read-only preview without changing the conversation view's layout or focus behavior.
14
+
15
+ ## [0.17.5] - 2026-09-30
16
+
17
+ ### Fixed
18
+ - **Read-only Tool Output previews now replace the parent conversation viewer in place instead of opening a nested overlay**, giving the preview the full viewer viewport and exclusive keyboard/mouse ownership; `Esc`, `q`, or the preview close control returns cleanly to the subagent conversation.
14
19
 
15
20
  ## [0.17.3] - 2026-09-18
16
21
 
package/README.md CHANGED
@@ -15,7 +15,7 @@ https://github.com/user-attachments/assets/8685261b-9338-4fea-8dfe-1c590d5df543
15
15
  - **Claude Code look & feel** — same tool names, calling conventions, and UI patterns (`Agent`, `get_subagent_result`, `steer_subagent`) — feels native
16
16
  - **Parallel background agents** — spawn multiple agents that run concurrently with automatic queuing (configurable concurrency limit, default 4) and smart group join (consolidated notifications)
17
17
  - **Agents panel UI** — persistent above-editor widget with animated spinners, live tool activity, token counts, colored status icons, and one focus-gated navigator. It shows every agent by default; press `↓` at an empty prompt to activate the panel, `↑`/`↓` to select, `Enter` to open a live or read-only history viewer, and `Esc` to return. Long rosters reserve a right-hand track/thumb scrollbar and show `↑ N more` or `↓ N more` at the clipped edge. Configure via `/agents → Settings → Widget`: `all`, `background`, or `off`
18
- - **Conversation viewer** — select any agent in `/agents` to open a live-scrolling overlay of its full conversation (auto-follows new content, scroll up to pause). Steer a running agent inline by pressing `e` to open a Pi-native composer, typing, then `Enter` to send (`Esc` or an empty submit returns); the follow-up appears as a muted/gray USER message and redirects the agent after its current tool. `Alt+Up` (`a-up`/`alt+up`) recalls submitted follow-up drafts. Read-only tool previews use the same right-hand track/thumb scrollbar with top/bottom hidden-line affordances. Stop a still-running agent by pressing `x` (then `x` again to confirm) — both work for background agents too
18
+ - **Conversation viewer** — select any agent in `/agents` to open a live-scrolling overlay of its full conversation (auto-follows new content, scroll up to pause). The main viewer reserves a right-hand scrollbar rail for the transcript and exposes a `[preview]` header action for the focused tool. Steer a running agent inline by pressing `e` to open a Pi-native composer, typing, then `Enter` to send (`Esc` or an empty submit returns); the follow-up appears as a muted/gray USER message and redirects the agent after its current tool. `Alt+Up` (`a-up`/`alt+up`) recalls submitted follow-up drafts. Read-only tool previews replace the viewer in place, use the larger viewport with the same right-hand track/thumb scrollbar and top/bottom hidden-line affordances, and return with `Esc`, `q`, or the close control. Stop a still-running agent by pressing `x` (then `x` again to confirm) — both work for background agents too
19
19
  - **Custom agent types** — define agents in `.pi/agents/<name>.md` or `.agents/agents/<name>.md` (project) or globally, with YAML frontmatter: custom system prompts, model selection, thinking levels, tool restrictions
20
20
  - **Mid-run steering** — inject messages into running agents to redirect their work without restarting
21
21
  - **Session resume** — pick up where an agent left off, preserving full conversation context
@@ -51,8 +51,9 @@ export declare class ConversationViewer implements Component {
51
51
  private lastInnerW;
52
52
  private closed;
53
53
  private stopArmed;
54
- private hoveredPreview;
55
54
  private hoveredClose;
55
+ private hoveredPreview;
56
+ private pressedHeaderAction;
56
57
  private keys;
57
58
  private composer;
58
59
  private searchMode;
@@ -64,6 +65,7 @@ export declare class ConversationViewer implements Component {
64
65
  private steerHistoryIndex;
65
66
  private steerHistoryDraft;
66
67
  private timeline;
68
+ private toolPreview;
67
69
  constructor(tui: TUI, session: ConversationSource, record: AgentRecord, activity: AgentActivity | undefined, theme: Theme, done: (result: undefined) => void,
68
70
  /** Abort the agent shown here. Omitted means read-only history. */
69
71
  onStop?: (() => void) | undefined,
@@ -79,7 +81,6 @@ export declare class ConversationViewer implements Component {
79
81
  capture?: boolean;
80
82
  render?: boolean;
81
83
  } | undefined;
82
- private headerActionGeometry;
83
84
  private isPreviewButtonHit;
84
85
  private isCloseButtonHit;
85
86
  render(width: number): string[];
@@ -88,6 +89,8 @@ export declare class ConversationViewer implements Component {
88
89
  private handleTimelineChange;
89
90
  dispose(): void;
90
91
  private viewportHeight;
92
+ /** Full inner width includes the one column reserved for the transcript rail. */
93
+ private transcriptWidth;
91
94
  private chromeLines;
92
95
  private invocationLine;
93
96
  private buildContentLines;
@@ -102,7 +105,6 @@ export declare class ConversationViewer implements Component {
102
105
  private moveToolFocus;
103
106
  private focusNearbyTool;
104
107
  private scrollTargetIntoView;
105
- private focusedToolBlock;
106
108
  private openFocusedToolPreview;
107
109
  private scrollBy;
108
110
  private scrollToTop;
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-viewer.d.ts","sourceRoot":"","sources":["../../src/ui/conversation-viewer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversation-viewer.d.ts","sourceRoot":"","sources":["../../src/ui/conversation-viewer.ts"],"names":[],"mappings":"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"}
@@ -188,8 +188,9 @@ export class ConversationViewer {
188
188
  lastInnerW = 0;
189
189
  closed = false;
190
190
  stopArmed = false;
191
- hoveredPreview = false;
192
191
  hoveredClose = false;
192
+ hoveredPreview = false;
193
+ pressedHeaderAction;
193
194
  keys;
194
195
  composer;
195
196
  searchMode = false;
@@ -201,6 +202,7 @@ export class ConversationViewer {
201
202
  steerHistoryIndex = -1;
202
203
  steerHistoryDraft = "";
203
204
  timeline;
205
+ toolPreview;
204
206
  constructor(tui, session, record, activity, theme, done,
205
207
  /** Abort the agent shown here. Omitted means read-only history. */
206
208
  onStop,
@@ -230,6 +232,10 @@ export class ConversationViewer {
230
232
  this.unsubscribe = session.subscribe(() => this.scheduleSessionRefresh());
231
233
  }
232
234
  handleInput(data) {
235
+ if (this.toolPreview) {
236
+ this.toolPreview.handleInput(data);
237
+ return;
238
+ }
233
239
  if (this.composer) {
234
240
  if (matchesKey(data, Key.alt("up")) || data === "a-up" || data === "alt+up") {
235
241
  this.recallSteerDraft();
@@ -255,7 +261,7 @@ export class ConversationViewer {
255
261
  return;
256
262
  }
257
263
  if (matchesKey(data, "enter")) {
258
- this.buildContentLines(this.lastInnerW || 80);
264
+ this.buildContentLines(this.transcriptWidth(this.lastInnerW || 80));
259
265
  if (this.timeline.isToolFocused()) {
260
266
  this.timeline.toggleFocusedTool();
261
267
  return;
@@ -282,7 +288,7 @@ export class ConversationViewer {
282
288
  if (this.stopArmed)
283
289
  this.stopArmed = false;
284
290
  // Input can arrive before the first render in tests and in a freshly-opened overlay.
285
- this.buildContentLines(this.lastInnerW || 80);
291
+ this.buildContentLines(this.transcriptWidth(this.lastInnerW || 80));
286
292
  const viewportHeight = this.viewportHeight();
287
293
  const maxScroll = Math.max(0, this.cachedLines.length - viewportHeight);
288
294
  if (data === "t") {
@@ -362,7 +368,11 @@ export class ConversationViewer {
362
368
  void maxScroll;
363
369
  }
364
370
  handleMouse(event) {
371
+ if (this.toolPreview)
372
+ return this.toolPreview.handleMouse(event);
365
373
  const innerW = Math.max(1, this.lastInnerW || event.width - 4);
374
+ const contentWidth = this.transcriptWidth(innerW);
375
+ const railX = 2 + contentWidth;
366
376
  const previewHit = this.isPreviewButtonHit(event.x, event.y, innerW);
367
377
  const closeHit = this.isCloseButtonHit(event.x, event.y, innerW);
368
378
  if (event.type === "move") {
@@ -373,7 +383,9 @@ export class ConversationViewer {
373
383
  if (this.composer || this.searchMode) {
374
384
  return previewChanged || closeChanged ? { handled: true, render: true } : undefined;
375
385
  }
376
- const contentLines = this.buildContentLines(innerW);
386
+ if (event.x === railX)
387
+ return previewChanged || closeChanged ? { handled: true, render: true } : undefined;
388
+ const contentLines = this.buildContentLines(contentWidth);
377
389
  const viewportHeight = this.viewportHeight();
378
390
  const maxScroll = Math.max(0, contentLines.length - viewportHeight);
379
391
  if (this.autoScroll)
@@ -384,18 +396,26 @@ export class ConversationViewer {
384
396
  const timelineResult = this.timeline.handleMouse({ ...event, y: contentY });
385
397
  return timelineResult ?? (previewChanged || closeChanged ? { handled: true, render: true } : undefined);
386
398
  }
387
- if (previewHit && event.button === "left") {
388
- if (event.type === "press")
399
+ if (event.button === "left") {
400
+ if (event.type === "press" && previewHit) {
401
+ this.pressedHeaderAction = "preview";
389
402
  return { handled: true, capture: true, render: false };
390
- if (event.type === "click") {
403
+ }
404
+ if (event.type === "press" && closeHit) {
405
+ this.pressedHeaderAction = "close";
406
+ return { handled: true, capture: true, render: false };
407
+ }
408
+ if (event.type === "release" && this.pressedHeaderAction) {
409
+ this.pressedHeaderAction = undefined;
410
+ return { handled: true, render: false };
411
+ }
412
+ if (event.type === "click" && previewHit) {
413
+ this.pressedHeaderAction = undefined;
391
414
  this.openFocusedToolPreview();
392
415
  return { handled: true, render: false };
393
416
  }
394
- }
395
- if (closeHit && event.button === "left") {
396
- if (event.type === "press")
397
- return { handled: true, capture: true, render: false };
398
- if (event.type === "click") {
417
+ if (event.type === "click" && closeHit) {
418
+ this.pressedHeaderAction = undefined;
399
419
  this.closed = true;
400
420
  this.done(undefined);
401
421
  return { handled: true, render: false };
@@ -403,7 +423,7 @@ export class ConversationViewer {
403
423
  }
404
424
  if (this.composer || this.searchMode)
405
425
  return undefined;
406
- const contentLines = this.buildContentLines(innerW);
426
+ const contentLines = this.buildContentLines(contentWidth);
407
427
  const viewportHeight = this.viewportHeight();
408
428
  const maxScroll = Math.max(0, contentLines.length - viewportHeight);
409
429
  const visibleStart = Math.min(this.scrollOffset, maxScroll);
@@ -417,9 +437,12 @@ export class ConversationViewer {
417
437
  const contentY = event.y - contentOrigin + visibleStart;
418
438
  if (contentY < 0 || contentY >= contentLines.length)
419
439
  return undefined;
440
+ // The reserved rail is visual-only; wheel events above remain handled by the viewport.
441
+ if ((event.type === "click" || event.type === "press") && event.x === railX)
442
+ return undefined;
420
443
  // Rows have one leading space and one trailing space inside the frame.
421
- // Neither padding nor the frame itself is a focus target.
422
- if ((event.type === "click" || event.type === "press") && (event.x < 2 || event.x >= 2 + innerW))
444
+ // Neither padding, the rail, nor the frame itself is a focus target.
445
+ if ((event.type === "click" || event.type === "press") && (event.x < 2 || event.x >= 2 + contentWidth))
423
446
  return undefined;
424
447
  const result = this.timeline.handleMouse({ ...event, y: contentY });
425
448
  if (result?.handled && event.type === "click") {
@@ -429,7 +452,7 @@ export class ConversationViewer {
429
452
  selected = this.timeline.getSnapshot().messageBlocks.findIndex((block) => block.toolCallId === focusedTool);
430
453
  }
431
454
  if (selected !== undefined && selected >= 0) {
432
- this.buildContentLines(innerW);
455
+ this.buildContentLines(contentWidth);
433
456
  this.setFocusFromMessageIndex(selected);
434
457
  this.autoScroll = false;
435
458
  this.scrollTargetIntoView(selected);
@@ -438,34 +461,38 @@ export class ConversationViewer {
438
461
  }
439
462
  return result;
440
463
  }
441
- headerActionGeometry(innerW) {
442
- const closeEnd = 2 + innerW;
443
- const closeStart = closeEnd - visibleWidth("[esc]");
444
- const previewEnd = closeStart - 1;
445
- const previewStart = previewEnd - visibleWidth("[preview]");
446
- return { previewStart, previewEnd, closeStart, closeEnd };
447
- }
448
464
  isPreviewButtonHit(x, y, innerW) {
449
465
  if (y !== 1)
450
466
  return false;
451
- const { previewStart, previewEnd } = this.headerActionGeometry(innerW);
452
- return x >= previewStart && x < previewEnd;
467
+ const previewWidth = visibleWidth("[preview]");
468
+ const closeWidth = visibleWidth("[Esc]");
469
+ const labelStart = 2 + Math.max(0, innerW - previewWidth - 1 - closeWidth);
470
+ return x >= labelStart && x < labelStart + previewWidth;
453
471
  }
454
472
  isCloseButtonHit(x, y, innerW) {
455
473
  if (y !== 1)
456
474
  return false;
457
- const { closeStart, closeEnd } = this.headerActionGeometry(innerW);
458
- return x >= closeStart && x < closeEnd;
475
+ const labelWidth = visibleWidth("[Esc]");
476
+ const labelStart = 2 + Math.max(0, innerW - labelWidth);
477
+ return x >= labelStart && x < 2 + innerW;
459
478
  }
460
479
  render(width) {
480
+ if (this.toolPreview)
481
+ return this.toolPreview.render(width);
461
482
  if (width < 6)
462
483
  return [];
463
484
  const th = this.theme;
464
485
  const innerW = Math.max(1, width - 4);
465
486
  this.lastInnerW = innerW;
487
+ const contentWidth = this.transcriptWidth(innerW);
466
488
  const lines = [];
467
489
  const pad = (s, len) => s + " ".repeat(Math.max(0, len - visibleWidth(s)));
468
490
  const row = (content) => th.fg("border", "│") + " " + truncateToWidth(pad(content, innerW), innerW, "...", true) + " " + th.fg("border", "│");
491
+ const contentRow = (content, lineIndex, totalLines, viewportHeight, offset) => {
492
+ const text = truncateToWidth(pad(content, contentWidth), contentWidth, "...", true);
493
+ const rail = renderScrollbarCell(th, totalLines, viewportHeight, offset, lineIndex, false);
494
+ return th.fg("border", "│") + " " + text + rail + " " + th.fg("border", "│");
495
+ };
469
496
  const hrTop = th.fg("border", `╭${"─".repeat(Math.max(0, width - 2))}╮`);
470
497
  const hrBot = th.fg("border", `╰${"─".repeat(Math.max(0, width - 2))}╯`);
471
498
  const hrMid = row(th.fg("dim", "─".repeat(innerW)));
@@ -485,11 +512,8 @@ export class ConversationViewer {
485
512
  headerParts.push(formatSessionTokens(tokens, percent, th, this.record.compactionCount));
486
513
  }
487
514
  const headerText = `${statusIcon} ${th.bold(name)}${modeTag} ${th.fg("muted", this.record.description)} ${th.fg("dim", "·")} ${fgPreservingNestedStyles(th, "dim", headerParts.join(" · "))}`;
488
- const previewAvailable = this.focusedToolBlock() !== undefined;
489
- const previewLabel = previewAvailable && this.hoveredPreview
490
- ? th.fg("text", th.bold("[preview]"))
491
- : th.fg("dim", "[preview]");
492
- const closeLabel = this.hoveredClose ? th.fg("text", th.bold("[esc]")) : th.fg("dim", "[esc]");
515
+ const previewLabel = this.hoveredPreview ? th.fg("text", th.bold("[preview]")) : th.fg("dim", "[preview]");
516
+ const closeLabel = this.hoveredClose ? th.fg("text", th.bold("[Esc]")) : th.fg("dim", "[Esc]");
493
517
  const actionsWidth = visibleWidth(previewLabel) + 1 + visibleWidth(closeLabel);
494
518
  const headerLeft = truncateToWidth(headerText, Math.max(0, innerW - actionsWidth - 1), "", true);
495
519
  const headerGap = Math.max(1, innerW - visibleWidth(headerLeft) - actionsWidth);
@@ -498,7 +522,7 @@ export class ConversationViewer {
498
522
  if (invocationLine)
499
523
  lines.push(row(invocationLine));
500
524
  lines.push(hrMid);
501
- const contentLines = this.buildContentLines(innerW);
525
+ const contentLines = this.buildContentLines(contentWidth);
502
526
  const viewportHeight = this.viewportHeight();
503
527
  const maxScroll = Math.max(0, contentLines.length - viewportHeight);
504
528
  if (this.autoScroll)
@@ -530,10 +554,11 @@ export class ConversationViewer {
530
554
  const railGlyph = currentBlock?.kind === "tool" ? "▌" : "▎";
531
555
  text = text.startsWith(" ") ? th.fg(railColor, railGlyph) + text.slice(1) : th.fg(railColor, railGlyph) + text;
532
556
  }
533
- lines.push(row(text));
557
+ lines.push(contentRow(text, i, contentLines.length, viewportHeight, visibleStart));
558
+ }
559
+ for (let i = displayed.length; i < viewportHeight; i++) {
560
+ lines.push(contentRow("", i, contentLines.length, viewportHeight, visibleStart));
534
561
  }
535
- for (let i = displayed.length; i < viewportHeight; i++)
536
- lines.push(row(""));
537
562
  lines.push(hrMid);
538
563
  if (this.composer) {
539
564
  lines.push(row(this.composer.render(innerW)[0] ?? ""));
@@ -638,6 +663,10 @@ export class ConversationViewer {
638
663
  const maxRows = Math.floor((this.tui.terminal.rows * VIEWPORT_HEIGHT_PCT) / 100);
639
664
  return Math.max(MIN_VIEWPORT, maxRows - this.chromeLines());
640
665
  }
666
+ /** Full inner width includes the one column reserved for the transcript rail. */
667
+ transcriptWidth(innerW) {
668
+ return Math.max(1, innerW - 1);
669
+ }
641
670
  chromeLines() {
642
671
  return CHROME_LINES_BASE + (this.invocationLine() ? 1 : 0) + (this.composer ? 1 : 0);
643
672
  }
@@ -769,7 +798,7 @@ export class ConversationViewer {
769
798
  if (!this.timeline.moveFocus(direction))
770
799
  return;
771
800
  const focused = this.timeline.getFocusedToolCallId();
772
- this.buildContentLines(this.lastInnerW || 80);
801
+ this.buildContentLines(this.transcriptWidth(this.lastInnerW || 80));
773
802
  const index = this.cachedMessageBlocks.findIndex((block) => block.toolCallId === focused);
774
803
  if (index >= 0) {
775
804
  this.setFocusFromMessageIndex(index);
@@ -779,7 +808,7 @@ export class ConversationViewer {
779
808
  this.tui.requestRender();
780
809
  }
781
810
  focusNearbyTool(direction) {
782
- this.buildContentLines(this.lastInnerW || 80);
811
+ this.buildContentLines(this.transcriptWidth(this.lastInnerW || 80));
783
812
  const toolIndices = this.cachedMessageBlocks
784
813
  .map((block, index) => block.kind === "tool" && block.toolCallId ? index : -1)
785
814
  .filter((index) => index >= 0);
@@ -810,30 +839,24 @@ export class ConversationViewer {
810
839
  this.scrollOffset = targetLine - viewportHeight + 1;
811
840
  this.scrollOffset = Math.max(0, Math.min(maxScroll, this.scrollOffset));
812
841
  }
813
- focusedToolBlock() {
814
- this.buildContentLines(this.lastInnerW || 80);
815
- const focusedToolCallId = this.timeline.getFocusedToolCallId();
816
- if (!focusedToolCallId)
817
- return undefined;
818
- const block = this.cachedMessageBlocks.find((candidate) => candidate.toolCallId === focusedToolCallId);
819
- return block?.kind === "tool" ? block : undefined;
820
- }
821
842
  openFocusedToolPreview() {
822
- const block = this.focusedToolBlock();
823
- const custom = this.operations?.ctx?.ui?.custom;
824
- if (!block || typeof custom !== "function")
843
+ this.buildContentLines(this.transcriptWidth(this.lastInnerW || 80));
844
+ const focusedToolCallId = this.timeline.getFocusedToolCallId();
845
+ const block = focusedToolCallId
846
+ ? this.cachedMessageBlocks.find((candidate) => candidate.toolCallId === focusedToolCallId)
847
+ : this.currentBlock();
848
+ if (block?.kind !== "tool")
825
849
  return;
826
850
  const toolName = block.toolName || "tool";
827
851
  const args = block.args ?? block.toolArguments;
828
852
  const result = block.toolResult ?? block.result ?? { content: [] };
829
853
  const title = `${toolName} · full preview`;
830
- void custom.call(this.operations.ctx.ui, (tui, overlayTheme, _keybindings, done) => {
831
- const body = createViewerCcstyleResult(toolName, result, { expanded: true, isError: result.isError === true }, overlayTheme, { args, maxChars: FULL_TOOL_PREVIEW_MAX_CHARS, diffConfig: { expandedPreviewMaxLines: Number.MAX_SAFE_INTEGER } });
832
- return new FullToolPreview(tui, overlayTheme, title, body, done);
833
- }, {
834
- overlay: true,
835
- overlayOptions: { anchor: "center", width: "85%", minWidth: 50, maxHeight: "80%", margin: 2 },
836
- }).catch(() => undefined);
854
+ const body = createViewerCcstyleResult(toolName, result, { expanded: true, isError: result.isError === true }, this.theme, { args, maxChars: FULL_TOOL_PREVIEW_MAX_CHARS, diffConfig: { expandedPreviewMaxLines: Number.MAX_SAFE_INTEGER } });
855
+ this.toolPreview = new FullToolPreview(this.tui, this.theme, title, body, () => {
856
+ this.toolPreview = undefined;
857
+ this.tui.requestRender();
858
+ });
859
+ this.tui.requestRender();
837
860
  }
838
861
  scrollBy(delta) {
839
862
  const max = Math.max(0, this.cachedLines.length - this.viewportHeight());
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-viewer.js","sourceRoot":"","sources":["../../src/ui/conversation-viewer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversation-viewer.js","sourceRoot":"","sources":["../../src/ui/conversation-viewer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,216 @@
1
+ # Conversation Viewer Scrollbar Implementation Plan
2
+
3
+ > [!NOTE]
4
+ > **For agentic workers:** `subagent-driven-development` and
5
+ > `executing-plans` are optional execution helpers. When resolving either
6
+ > skill, prefer the namespaced form (`superpowers:<skill-name>`) when
7
+ > available, then the bare `<skill-name>` form.
8
+ >
9
+ > This name-resolution order does not give those skills priority over the
10
+ > current agent or host framework's native execution/delegation policy.
11
+ >
12
+ > Steps use checkbox (`- [ ]`) syntax for tracking.
13
+
14
+ **Goal:** 在主 `ConversationViewer` transcript viewport 加入與 Tool Output 一致的右側 track/thumb scrollbar,同時保留現有鍵盤、wheel、focus、search 與 read-only 行為。
15
+
16
+ **Architecture:** 重用 `conversation-viewer.ts` 既有的 `renderScrollbarCell()`,只在 transcript content rows 預留最右一格 rail;header、invocation、分隔線、composer/search、footer 不加入 rail。沿用現有 `scrollOffset`、`viewportHeight()` 與 `autoScroll`,不引入第二個 viewport 狀態,也不改用原生 `ScrollView`。
17
+
18
+ **Tech Stack:** TypeScript、`@earendil-works/pi-tui`、Vitest、Biome、TypeScript compiler。
19
+
20
+ ## Global Constraints
21
+
22
+ - 只修改 `/tmp/pi-canonical/pi-subagents-work` canonical checkout,不修改 npm-installed copy 或研究專案根目錄。
23
+ - Scrollbar 只提供視覺 track/thumb;不新增 mouse click-to-jump 或 drag-to-scroll。
24
+ - 保留 `j/k`、方向鍵、PageUp/PageDown、Home/End、wheel、`g/G`、search match、message/tool focus 的既有語意。
25
+ - 保留 ConversationViewer header 的 `[preview] [Esc]` actions;`[preview]` 與 `w` 必須呼叫同一個 focused-tool preview handler,且 action hit-test 不得重疊。
26
+ - Tool Preview 維持 parent-owned in-place preview 與既有 scrollbar,不與主 viewer rail 共用 offset。
27
+ - 不新增跨 package renderer dependency,不改變 transcript read-only 性質。
28
+ - 新增或改寫的測試必須使用 local `vitest`;不能以全域 binary 或 npm-installed package 取代 canonical repo 驗證。
29
+ - 完成後執行 targeted viewer test、`npm test`、`npm run lint`、`npm run typecheck`、`npm run build`、`npm run test:e2e` 與 `npm pack --dry-run`。
30
+
31
+ ---
32
+
33
+ ### Task 1: Add failing ConversationViewer scrollbar tests
34
+
35
+ **Files:**
36
+ - Modify: `test/ui/conversation-viewer.test.ts`
37
+
38
+ **Interfaces:**
39
+ - Consumes: current `ConversationViewer`, `createStaticConversationSource`, `tui()`, `record()` and test `theme` helpers.
40
+ - Produces: regression coverage for the main transcript rail that Task 2 must satisfy.
41
+
42
+ - [ ] **Step 1: Add a long-transcript fixture and rail assertions**
43
+
44
+ Use a transcript longer than the current test TUI viewport:
45
+
46
+ ```ts
47
+ const longText = Array.from({ length: 80 }, (_, index) => `line ${index + 1}`).join("\n");
48
+ const viewer = new ConversationViewer(
49
+ tui(),
50
+ createStaticConversationSource([{ role: "assistant", content: [{ type: "text", text: longText }] }] as any),
51
+ record(),
52
+ undefined,
53
+ theme,
54
+ vi.fn(),
55
+ );
56
+
57
+ const atBottom = viewer.render(100);
58
+ expect(atBottom.some((line) => line.includes("┃") || line.includes("█"))).toBe(true);
59
+ ```
60
+
61
+ The test must also assert that a short transcript does not show a thumb:
62
+
63
+ ```ts
64
+ const shortViewer = new ConversationViewer(
65
+ tui(),
66
+ createStaticConversationSource([{ role: "assistant", content: [{ type: "text", text: "short" }] }] as any),
67
+ record(),
68
+ undefined,
69
+ theme,
70
+ vi.fn(),
71
+ );
72
+ expect(shortViewer.render(100).join("\n")).not.toMatch(/[┃█]/u);
73
+ ```
74
+
75
+ - [ ] **Step 2: Add thumb movement coverage**
76
+
77
+ Capture the row containing the thumb before and after jumping to the top:
78
+
79
+ ```ts
80
+ const bottomLines = viewer.render(100);
81
+ const bottomThumb = bottomLines.findIndex((line) => line.includes("┃") || line.includes("█"));
82
+ viewer.handleInput("g");
83
+ const topLines = viewer.render(100);
84
+ const topThumb = topLines.findIndex((line) => line.includes("┃") || line.includes("█"));
85
+ expect(bottomThumb).toBeGreaterThan(topThumb);
86
+ ```
87
+
88
+ Keep the assertion focused on the rail location, not on a particular color escape sequence, because the test theme intentionally strips most color styles.
89
+
90
+ - [ ] **Step 3: Run the focused test and confirm it fails before implementation**
91
+
92
+ Run:
93
+
94
+ ```bash
95
+ cd /tmp/pi-canonical/pi-subagents-work
96
+ npx vitest run test/ui/conversation-viewer.test.ts
97
+ ```
98
+
99
+ Expected: the existing ConversationViewer tests pass, and the new long-transcript rail assertion fails because the main viewer currently has no `┃`/`█` rail. Do not change production code in this step.
100
+
101
+ ---
102
+
103
+ ### Task 2: Render the main transcript scrollbar without changing layout semantics
104
+
105
+ **Files:**
106
+ - Modify: `src/ui/conversation-viewer.ts:32-52, 444-548`
107
+
108
+ **Interfaces:**
109
+ - Consumes: `renderScrollbarCell()`, `scrollOffset`, `autoScroll`, `viewportHeight()`, `buildContentLines()`, and existing `handleMouse()` geometry.
110
+ - Produces: main viewer content rows with a reserved rightmost rail while Tool Preview continues using its own `FullToolPreview` viewport.
111
+
112
+ - [ ] **Step 1: Define the content rail width and preserve outer width**
113
+
114
+ Inside `render(width)`, keep `innerW = width - 4` for the existing frame/header geometry. Define one transcript-width rule and use it at every content-line build site:
115
+
116
+ ```ts
117
+ const transcriptWidth = (innerW: number): number => Math.max(1, innerW - 1);
118
+ const contentWidth = transcriptWidth(innerW);
119
+ ```
120
+
121
+ Use `contentWidth` when building transcript lines and rendering transcript text. Replace existing `buildContentLines(this.lastInnerW || 80)` calls in input/focus/search paths with `buildContentLines(transcriptWidth(this.lastInnerW || 80))`; use `transcriptWidth(innerW)` in mouse handling. Keep `lastInnerW` as the full inner width so header close-button geometry remains unchanged.
122
+
123
+ - [ ] **Step 2: Add a content-row renderer that reserves the rail**
124
+
125
+ Keep the current `row()` helper for header, invocation, separator, composer/search and footer. Add a separate content-row path with this shape:
126
+
127
+ ```ts
128
+ const contentRow = (content: string, lineIndex: number, totalLines: number, viewportHeight: number, offset: number) => {
129
+ const rail = renderScrollbarCell(th, totalLines, viewportHeight, offset, lineIndex, false);
130
+ const text = truncateToWidth(pad(content, contentWidth), contentWidth, "...", true);
131
+ return th.fg("border", "│") + " " + text + rail + " " + th.fg("border", "│");
132
+ };
133
+ ```
134
+
135
+ The implementation may use an equivalent local helper, but the invariant is fixed: one rail cell is outside the transcript text width and the resulting row remains exactly `width` columns wide.
136
+
137
+ - [ ] **Step 3: Apply the rail only to visible transcript rows**
138
+
139
+ Build content lines at `contentWidth`, compute `visibleStart` and `viewportHeight` as before, and render each displayed/blank transcript row through `contentRow`. Pass the relative visible row index to `renderScrollbarCell()` with the existing total line count and `visibleStart` offset. Preserve the sticky role header replacement and all existing focus/search styling before adding the rail.
140
+
141
+ Do not add a rail to the outer header, invocation row, separator, composer/search row, or footer. When `totalLines <= viewportHeight`, `renderScrollbarCell()` must leave the rail visually empty while preserving its width.
142
+
143
+ - [ ] **Step 4: Preserve the `[preview] [Esc]` header actions**
144
+
145
+ Keep the header action geometry separate from the content rail. Render `[preview]` immediately to the left of `[Esc]`, reserve both labels before truncating the agent header title, and route `[preview]` press/click through the same `openFocusedToolPreview()` method used by `w`. With no focused tool, `[preview]` remains a handled no-op and must never trigger close. Add mouse press capture for both actions so release/click cannot fall through to the timeline.
146
+
147
+ - [ ] **Step 5: Keep mouse hit-testing out of the visual rail**
148
+
149
+ In `handleMouse()`, use the same `contentWidth = Math.max(1, innerW - 1)` for content geometry. Preserve wheel scrolling over the viewport, but do not pass click/press/move events from the reserved rail column into `ConversationTimeline`; the rail is visual-only and must not become a focus target. Header `[preview]`/`[Esc]` hit testing continues to use full `innerW`.
150
+
151
+
152
+ - [ ] **Step 6: Run the focused tests and iterate**
153
+
154
+ Run:
155
+
156
+ ```bash
157
+ cd /tmp/pi-canonical/pi-subagents-work
158
+ npx vitest run test/ui/conversation-viewer.test.ts
159
+ ```
160
+
161
+ Expected: all focused tests pass, including the long-transcript rail presence, short-transcript no-thumb, and thumb movement assertions. If the content width or mouse coordinate assumptions fail, fix only the viewer geometry and rerun this focused suite.
162
+
163
+ ---
164
+
165
+ ### Task 3: Verify regression coverage and package gates
166
+
167
+ **Files:**
168
+ - Inspect: `src/ui/conversation-viewer.ts`
169
+ - Inspect: `test/ui/conversation-viewer.test.ts`
170
+ - Inspect: `docs/superpowers/specs/2026-09-30-conversation-viewer-scrollbar-design.md`
171
+
172
+ **Interfaces:**
173
+ - Consumes: the implementation and tests from Tasks 1–2.
174
+ - Produces: passing verification evidence and a clean diff suitable for release review.
175
+
176
+ - [ ] **Step 1: Run the full unit suite**
177
+
178
+ ```bash
179
+ cd /tmp/pi-canonical/pi-subagents-work
180
+ npm test
181
+ ```
182
+
183
+ Expected: all test files pass; skipped tests may remain only where the existing suite intentionally skips live-model coverage.
184
+
185
+ - [ ] **Step 2: Run static checks and build**
186
+
187
+ ```bash
188
+ cd /tmp/pi-canonical/pi-subagents-work
189
+ npm run lint
190
+ npm run typecheck
191
+ npm run build
192
+ ```
193
+
194
+ Expected: Biome reports no errors, TypeScript reports no errors, and `dist/` compiles successfully.
195
+
196
+ - [ ] **Step 3: Run the e2e and package checks**
197
+
198
+ ```bash
199
+ cd /tmp/pi-canonical/pi-subagents-work
200
+ npm run test:e2e
201
+ npm pack --dry-run
202
+ ```
203
+
204
+ Expected: the faux/scripted e2e suite passes, the tarball includes the compiled `dist/ui/conversation-viewer.js`, and no test source is required at runtime.
205
+
206
+ - [ ] **Step 4: Review the final diff and commit**
207
+
208
+ ```bash
209
+ cd /tmp/pi-canonical/pi-subagents-work
210
+ git diff --check
211
+ git status --short
212
+ git add src/ui/conversation-viewer.ts test/ui/conversation-viewer.test.ts docs/superpowers/plans/2026-09-30-conversation-viewer-scrollbar.md
213
+ git commit -m "feat: add conversation viewer scrollbar"
214
+ ```
215
+
216
+ Expected: only the intended viewer source, focused tests, and this implementation plan are included in the feature commit. Do not publish or push this feature unless the user explicitly requests a release after reviewing the verification results.
@@ -0,0 +1,82 @@
1
+ # Conversation Viewer 主內容 scrollbar 設計
2
+
3
+ ## 狀態
4
+
5
+ - 狀態:已取得使用者對推薦方案的批准,等待 spec review
6
+ - 日期:2026-09-30
7
+ - 範圍:`src/ui/conversation-viewer.ts` 與對應 UI tests
8
+
9
+ ## 問題
10
+
11
+ 目前 `ConversationViewer` 的主 transcript 內容可以用 `j/k`、方向鍵、PageUp/PageDown、wheel 與 footer 百分比滾動,但內容列沒有右側 scrollbar。現有 `FullToolPreview` 已有 track/thumb,因此主 viewer 與 Tool Output 的 viewport 視覺契約不一致,使用者也無法快速判斷目前在 transcript 的位置。
12
+
13
+ ## 目標
14
+
15
+ - 在 ConversationViewer 的 transcript content rows 右側提供真正可見的 track/thumb rail。
16
+ - thumb 位置與高度反映完整 transcript 行數、目前 viewport 高度與 `scrollOffset`。
17
+ - 保留現有鍵盤與 wheel 滾動行為,不增加滑鼠拖曳或點擊跳轉。
18
+ - 保留 ConversationViewer header 的 `[preview]` action;它必須與 `w` 使用同一個 focused-tool preview handler,並與 `[Esc]` 保持不重疊。
19
+ - 保留 message/tool focus、search highlight、sticky header、composer、read-only 行為與 Tool Output preview 行為。
20
+ - 內容寬度預留 rail,避免文字覆蓋 scrollbar。
21
+
22
+ ## 非目標
23
+
24
+ - 本次不新增可拖曳 thumb 或點擊 track 跳轉。
25
+ - 本次不改用 Pi 原生 `ScrollView`。
26
+ - 本次不重構 ConversationTimeline 或抽出跨元件 scrollbar package。
27
+ - 不修改 Tool Output preview 已有的 scrollbar 行為。
28
+
29
+ ## 設計
30
+
31
+ ### 渲染幾何
32
+
33
+ `ConversationViewer.render(width)` 維持現有外框、header、invocation row、footer 與 status layout。只在 transcript content viewport 中保留最右一格作 scrollbar rail:
34
+
35
+ 1. 計算原本的 `innerW`。
36
+ 2. 當 content row render 時,將可用文字寬度設為 `innerW - 1`,最右一格固定輸出 rail。
37
+ 3. 以 `cachedLines.length` 作為 `totalLines`,以 `viewportHeight()` 作為 `viewportHeight`,以 `visibleStart` 或 `scrollOffset` 作為目前 offset。
38
+ 4. 使用既有 `renderScrollbarCell()`:沒有 overflow 時輸出 track 空白;有 overflow 時輸出 track `│` 與 thumb `┃`,scrollbar active 時可使用醒目 thumb `█`。
39
+ 5. Header、invocation row、分隔線、composer/search/footer 不消耗 transcript rail,避免改變既有互動區域。
40
+
41
+ content line 的文字、focus rail 與 search highlight 先完成,再將結果放入保留 rail 的寬度;不可讓 `truncateToWidth` 把 scrollbar 覆蓋掉。
42
+
43
+ ### 狀態與滾動
44
+
45
+ 沿用現有 `scrollOffset`、`autoScroll`、`viewportHeight()` 與 `scrollBy()`,不新增第二份 offset。既有的:
46
+
47
+ - `j/k` 與方向鍵
48
+ - PageUp/PageDown
49
+ - Home/End
50
+ - wheel
51
+ - `g/G`
52
+ - search match 跳轉
53
+ - tool/message focus 導航
54
+
55
+ 都繼續更新同一個 offset,render 時由同一個 offset 計算 thumb。自動追蹤最新內容時 thumb 留在底部;使用者向上滾動後則依現有規則停止 auto-follow。
56
+
57
+ ### 互動與事件
58
+
59
+ 本次 scrollbar 是視覺 track/thumb,不是滑鼠控制元件。`ConversationViewer.handleMouse()` 的 wheel 路由維持不變;click/press 仍依現有 timeline 與 header action hit-test 處理,不讓 scrollbar rail 新增意外 focus target。
60
+
61
+ ConversationViewer header 保留兩個 action:`[preview] [Esc]`。`[preview]` 的 click/press geometry 必須固定在 close action 左側,並呼叫與 `w` 相同的 `openFocusedToolPreview()`;沒有 focused tool 時維持 no-op。Scrollbar rail 不得改變 header action 的 hit-test。
62
+
63
+ Tool Preview 開啟時仍由 `FullToolPreview` 完全接管 render/input/mouse,不將主 viewer rail 與 preview rail 混用。
64
+
65
+ ## 測試
66
+
67
+ 在 `test/ui/conversation-viewer.test.ts` 增加或調整測試:
68
+
69
+ 1. 建立超過 viewport 的長 transcript,確認 content row 最右側出現 track/thumb 字元。
70
+ 2. 使用 `j`、PageDown 或 wheel 後重新 render,確認 thumb 位置會改變,且 hidden content 仍可到達。
71
+ 3. 建立不超過 viewport 的短 transcript,確認不顯示 thumb,且既有文字與外框寬度不變。
72
+ 4. 確認 header `[preview]` 仍可見且可 click,並與 `w` 開啟相同的 read-only Tool Output preview;沒有 focused tool 時不會誤觸 close。
73
+ 5. 確認 search、message/tool focus 與 Tool Output preview 仍可正常使用,沒有因 rail 保留而改變快捷鍵或 close 行為。
74
+ 6. 執行 targeted viewer test,再執行完整 unit tests、lint、typecheck、build、e2e 與 pack。
75
+
76
+ ## 驗收條件
77
+
78
+ - 長 transcript 的主 ConversationViewer 右側可見 track/thumb。
79
+ - thumb 隨現有鍵盤或 wheel 滾動正確移動。
80
+ - 短 transcript 不顯示誤導性的 thumb。
81
+ - 所有原有 ConversationViewer 與 Tool Output 行為測試通過。
82
+ - 不新增 nested overlay、不改變 transcript read-only 性質、不引入跨 package renderer dependency。
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@esso0428/pi-subagents",
3
- "version": "0.17.4",
3
+ "version": "0.17.6",
4
4
  "description": "A pi extension that brings smart Claude Code-style autonomous sub-agents to pi, with npm:pi-subagents-style JSON agent overrides.",
5
5
  "author": "ESSO0428",
6
6
  "repository": {
7
7
  "type": "git",
8
- "url": "https://github.com/ESSO0428/pi-subagents.git"
8
+ "url": "git+https://github.com/ESSO0428/pi-subagents.git"
9
9
  },
10
10
  "homepage": "https://github.com/ESSO0428/pi-subagents#readme",
11
11
  "bugs": {
@@ -219,8 +219,9 @@ export class ConversationViewer implements Component {
219
219
  private lastInnerW = 0;
220
220
  private closed = false;
221
221
  private stopArmed = false;
222
- private hoveredPreview = false;
223
222
  private hoveredClose = false;
223
+ private hoveredPreview = false;
224
+ private pressedHeaderAction: "preview" | "close" | undefined;
224
225
  private keys: ViewerKeys;
225
226
  private composer: Input | undefined;
226
227
  private searchMode = false;
@@ -232,6 +233,7 @@ export class ConversationViewer implements Component {
232
233
  private steerHistoryIndex = -1;
233
234
  private steerHistoryDraft = "";
234
235
  private timeline: ConversationTimeline;
236
+ private toolPreview: FullToolPreview | undefined;
235
237
 
236
238
  constructor(
237
239
  private tui: TUI,
@@ -261,6 +263,10 @@ export class ConversationViewer implements Component {
261
263
  }
262
264
 
263
265
  handleInput(data: string): void {
266
+ if (this.toolPreview) {
267
+ this.toolPreview.handleInput(data);
268
+ return;
269
+ }
264
270
  if (this.composer) {
265
271
  if (matchesKey(data, Key.alt("up")) || data === "a-up" || data === "alt+up") {
266
272
  this.recallSteerDraft();
@@ -285,7 +291,7 @@ export class ConversationViewer implements Component {
285
291
  return;
286
292
  }
287
293
  if (matchesKey(data, "enter")) {
288
- this.buildContentLines(this.lastInnerW || 80);
294
+ this.buildContentLines(this.transcriptWidth(this.lastInnerW || 80));
289
295
  if (this.timeline.isToolFocused()) {
290
296
  this.timeline.toggleFocusedTool();
291
297
  return;
@@ -311,7 +317,7 @@ export class ConversationViewer implements Component {
311
317
  if (this.stopArmed) this.stopArmed = false;
312
318
 
313
319
  // Input can arrive before the first render in tests and in a freshly-opened overlay.
314
- this.buildContentLines(this.lastInnerW || 80);
320
+ this.buildContentLines(this.transcriptWidth(this.lastInnerW || 80));
315
321
  const viewportHeight = this.viewportHeight();
316
322
  const maxScroll = Math.max(0, this.cachedLines.length - viewportHeight);
317
323
 
@@ -373,7 +379,10 @@ export class ConversationViewer implements Component {
373
379
  }
374
380
 
375
381
  handleMouse(event: TuiMouseEvent): { handled?: boolean; capture?: boolean; render?: boolean } | undefined {
382
+ if (this.toolPreview) return this.toolPreview.handleMouse(event);
376
383
  const innerW = Math.max(1, this.lastInnerW || event.width - 4);
384
+ const contentWidth = this.transcriptWidth(innerW);
385
+ const railX = 2 + contentWidth;
377
386
  const previewHit = this.isPreviewButtonHit(event.x, event.y, innerW);
378
387
  const closeHit = this.isCloseButtonHit(event.x, event.y, innerW);
379
388
  if (event.type === "move") {
@@ -384,7 +393,8 @@ export class ConversationViewer implements Component {
384
393
  if (this.composer || this.searchMode) {
385
394
  return previewChanged || closeChanged ? { handled: true, render: true } : undefined;
386
395
  }
387
- const contentLines = this.buildContentLines(innerW);
396
+ if (event.x === railX) return previewChanged || closeChanged ? { handled: true, render: true } : undefined;
397
+ const contentLines = this.buildContentLines(contentWidth);
388
398
  const viewportHeight = this.viewportHeight();
389
399
  const maxScroll = Math.max(0, contentLines.length - viewportHeight);
390
400
  if (this.autoScroll) this.scrollOffset = maxScroll;
@@ -394,23 +404,33 @@ export class ConversationViewer implements Component {
394
404
  const timelineResult = this.timeline.handleMouse({ ...event, y: contentY });
395
405
  return timelineResult ?? (previewChanged || closeChanged ? { handled: true, render: true } : undefined);
396
406
  }
397
- if (previewHit && event.button === "left") {
398
- if (event.type === "press") return { handled: true, capture: true, render: false };
399
- if (event.type === "click") {
407
+ if (event.button === "left") {
408
+ if (event.type === "press" && previewHit) {
409
+ this.pressedHeaderAction = "preview";
410
+ return { handled: true, capture: true, render: false };
411
+ }
412
+ if (event.type === "press" && closeHit) {
413
+ this.pressedHeaderAction = "close";
414
+ return { handled: true, capture: true, render: false };
415
+ }
416
+ if (event.type === "release" && this.pressedHeaderAction) {
417
+ this.pressedHeaderAction = undefined;
418
+ return { handled: true, render: false };
419
+ }
420
+ if (event.type === "click" && previewHit) {
421
+ this.pressedHeaderAction = undefined;
400
422
  this.openFocusedToolPreview();
401
423
  return { handled: true, render: false };
402
424
  }
403
- }
404
- if (closeHit && event.button === "left") {
405
- if (event.type === "press") return { handled: true, capture: true, render: false };
406
- if (event.type === "click") {
425
+ if (event.type === "click" && closeHit) {
426
+ this.pressedHeaderAction = undefined;
407
427
  this.closed = true;
408
428
  this.done(undefined);
409
429
  return { handled: true, render: false };
410
430
  }
411
431
  }
412
432
  if (this.composer || this.searchMode) return undefined;
413
- const contentLines = this.buildContentLines(innerW);
433
+ const contentLines = this.buildContentLines(contentWidth);
414
434
  const viewportHeight = this.viewportHeight();
415
435
  const maxScroll = Math.max(0, contentLines.length - viewportHeight);
416
436
  const visibleStart = Math.min(this.scrollOffset, maxScroll);
@@ -422,9 +442,11 @@ export class ConversationViewer implements Component {
422
442
  }
423
443
  const contentY = event.y - contentOrigin + visibleStart;
424
444
  if (contentY < 0 || contentY >= contentLines.length) return undefined;
445
+ // The reserved rail is visual-only; wheel events above remain handled by the viewport.
446
+ if ((event.type === "click" || event.type === "press") && event.x === railX) return undefined;
425
447
  // Rows have one leading space and one trailing space inside the frame.
426
- // Neither padding nor the frame itself is a focus target.
427
- if ((event.type === "click" || event.type === "press") && (event.x < 2 || event.x >= 2 + innerW)) return undefined;
448
+ // Neither padding, the rail, nor the frame itself is a focus target.
449
+ if ((event.type === "click" || event.type === "press") && (event.x < 2 || event.x >= 2 + contentWidth)) return undefined;
428
450
  const result = this.timeline.handleMouse({ ...event, y: contentY });
429
451
  if (result?.handled && event.type === "click") {
430
452
  let selected = result.focusedBlockIndex;
@@ -433,7 +455,7 @@ export class ConversationViewer implements Component {
433
455
  selected = this.timeline.getSnapshot().messageBlocks.findIndex((block) => block.toolCallId === focusedTool);
434
456
  }
435
457
  if (selected !== undefined && selected >= 0) {
436
- this.buildContentLines(innerW);
458
+ this.buildContentLines(contentWidth);
437
459
  this.setFocusFromMessageIndex(selected);
438
460
  this.autoScroll = false;
439
461
  this.scrollTargetIntoView(selected);
@@ -443,34 +465,36 @@ export class ConversationViewer implements Component {
443
465
  return result;
444
466
  }
445
467
 
446
- private headerActionGeometry(innerW: number): { previewStart: number; previewEnd: number; closeStart: number; closeEnd: number } {
447
- const closeEnd = 2 + innerW;
448
- const closeStart = closeEnd - visibleWidth("[esc]");
449
- const previewEnd = closeStart - 1;
450
- const previewStart = previewEnd - visibleWidth("[preview]");
451
- return { previewStart, previewEnd, closeStart, closeEnd };
452
- }
453
-
454
468
  private isPreviewButtonHit(x: number, y: number, innerW: number): boolean {
455
469
  if (y !== 1) return false;
456
- const { previewStart, previewEnd } = this.headerActionGeometry(innerW);
457
- return x >= previewStart && x < previewEnd;
470
+ const previewWidth = visibleWidth("[preview]");
471
+ const closeWidth = visibleWidth("[Esc]");
472
+ const labelStart = 2 + Math.max(0, innerW - previewWidth - 1 - closeWidth);
473
+ return x >= labelStart && x < labelStart + previewWidth;
458
474
  }
459
475
 
460
476
  private isCloseButtonHit(x: number, y: number, innerW: number): boolean {
461
477
  if (y !== 1) return false;
462
- const { closeStart, closeEnd } = this.headerActionGeometry(innerW);
463
- return x >= closeStart && x < closeEnd;
478
+ const labelWidth = visibleWidth("[Esc]");
479
+ const labelStart = 2 + Math.max(0, innerW - labelWidth);
480
+ return x >= labelStart && x < 2 + innerW;
464
481
  }
465
482
 
466
483
  render(width: number): string[] {
484
+ if (this.toolPreview) return this.toolPreview.render(width);
467
485
  if (width < 6) return [];
468
486
  const th = this.theme;
469
487
  const innerW = Math.max(1, width - 4);
470
488
  this.lastInnerW = innerW;
489
+ const contentWidth = this.transcriptWidth(innerW);
471
490
  const lines: string[] = [];
472
491
  const pad = (s: string, len: number) => s + " ".repeat(Math.max(0, len - visibleWidth(s)));
473
492
  const row = (content: string) => th.fg("border", "│") + " " + truncateToWidth(pad(content, innerW), innerW, "...", true) + " " + th.fg("border", "│");
493
+ const contentRow = (content: string, lineIndex: number, totalLines: number, viewportHeight: number, offset: number) => {
494
+ const text = truncateToWidth(pad(content, contentWidth), contentWidth, "...", true);
495
+ const rail = renderScrollbarCell(th, totalLines, viewportHeight, offset, lineIndex, false);
496
+ return th.fg("border", "│") + " " + text + rail + " " + th.fg("border", "│");
497
+ };
474
498
  const hrTop = th.fg("border", `╭${"─".repeat(Math.max(0, width - 2))}╮`);
475
499
  const hrBot = th.fg("border", `╰${"─".repeat(Math.max(0, width - 2))}╯`);
476
500
  const hrMid = row(th.fg("dim", "─".repeat(innerW)));
@@ -490,11 +514,8 @@ export class ConversationViewer implements Component {
490
514
  headerParts.push(formatSessionTokens(tokens, percent, th, this.record.compactionCount));
491
515
  }
492
516
  const headerText = `${statusIcon} ${th.bold(name)}${modeTag} ${th.fg("muted", this.record.description)} ${th.fg("dim", "·")} ${fgPreservingNestedStyles(th, "dim", headerParts.join(" · "))}`;
493
- const previewAvailable = this.focusedToolBlock() !== undefined;
494
- const previewLabel = previewAvailable && this.hoveredPreview
495
- ? th.fg("text", th.bold("[preview]"))
496
- : th.fg("dim", "[preview]");
497
- const closeLabel = this.hoveredClose ? th.fg("text", th.bold("[esc]")) : th.fg("dim", "[esc]");
517
+ const previewLabel = this.hoveredPreview ? th.fg("text", th.bold("[preview]")) : th.fg("dim", "[preview]");
518
+ const closeLabel = this.hoveredClose ? th.fg("text", th.bold("[Esc]")) : th.fg("dim", "[Esc]");
498
519
  const actionsWidth = visibleWidth(previewLabel) + 1 + visibleWidth(closeLabel);
499
520
  const headerLeft = truncateToWidth(headerText, Math.max(0, innerW - actionsWidth - 1), "", true);
500
521
  const headerGap = Math.max(1, innerW - visibleWidth(headerLeft) - actionsWidth);
@@ -503,7 +524,7 @@ export class ConversationViewer implements Component {
503
524
  if (invocationLine) lines.push(row(invocationLine));
504
525
  lines.push(hrMid);
505
526
 
506
- const contentLines = this.buildContentLines(innerW);
527
+ const contentLines = this.buildContentLines(contentWidth);
507
528
  const viewportHeight = this.viewportHeight();
508
529
  const maxScroll = Math.max(0, contentLines.length - viewportHeight);
509
530
  if (this.autoScroll) this.scrollOffset = maxScroll;
@@ -533,9 +554,11 @@ export class ConversationViewer implements Component {
533
554
  const railGlyph = currentBlock?.kind === "tool" ? "▌" : "▎";
534
555
  text = text.startsWith(" ") ? th.fg(railColor, railGlyph) + text.slice(1) : th.fg(railColor, railGlyph) + text;
535
556
  }
536
- lines.push(row(text));
557
+ lines.push(contentRow(text, i, contentLines.length, viewportHeight, visibleStart));
558
+ }
559
+ for (let i = displayed.length; i < viewportHeight; i++) {
560
+ lines.push(contentRow("", i, contentLines.length, viewportHeight, visibleStart));
537
561
  }
538
- for (let i = displayed.length; i < viewportHeight; i++) lines.push(row(""));
539
562
 
540
563
  lines.push(hrMid);
541
564
  if (this.composer) {
@@ -636,6 +659,11 @@ export class ConversationViewer implements Component {
636
659
  return Math.max(MIN_VIEWPORT, maxRows - this.chromeLines());
637
660
  }
638
661
 
662
+ /** Full inner width includes the one column reserved for the transcript rail. */
663
+ private transcriptWidth(innerW: number): number {
664
+ return Math.max(1, innerW - 1);
665
+ }
666
+
639
667
  private chromeLines(): number {
640
668
  return CHROME_LINES_BASE + (this.invocationLine() ? 1 : 0) + (this.composer ? 1 : 0);
641
669
  }
@@ -767,7 +795,7 @@ export class ConversationViewer implements Component {
767
795
  private moveToolFocus(direction: 1 | -1): void {
768
796
  if (!this.timeline.moveFocus(direction)) return;
769
797
  const focused = this.timeline.getFocusedToolCallId();
770
- this.buildContentLines(this.lastInnerW || 80);
798
+ this.buildContentLines(this.transcriptWidth(this.lastInnerW || 80));
771
799
  const index = this.cachedMessageBlocks.findIndex((block) => block.toolCallId === focused);
772
800
  if (index >= 0) {
773
801
  this.setFocusFromMessageIndex(index);
@@ -778,7 +806,7 @@ export class ConversationViewer implements Component {
778
806
  }
779
807
 
780
808
  private focusNearbyTool(direction: 1 | -1): void {
781
- this.buildContentLines(this.lastInnerW || 80);
809
+ this.buildContentLines(this.transcriptWidth(this.lastInnerW || 80));
782
810
  const toolIndices = this.cachedMessageBlocks
783
811
  .map((block, index) => block.kind === "tool" && block.toolCallId ? index : -1)
784
812
  .filter((index): index is number => index >= 0);
@@ -808,36 +836,30 @@ export class ConversationViewer implements Component {
808
836
  this.scrollOffset = Math.max(0, Math.min(maxScroll, this.scrollOffset));
809
837
  }
810
838
 
811
- private focusedToolBlock(): ConversationBlock | undefined {
812
- this.buildContentLines(this.lastInnerW || 80);
813
- const focusedToolCallId = this.timeline.getFocusedToolCallId();
814
- if (!focusedToolCallId) return undefined;
815
- const block = this.cachedMessageBlocks.find((candidate) => candidate.toolCallId === focusedToolCallId);
816
- return block?.kind === "tool" ? block : undefined;
817
- }
818
-
819
839
  private openFocusedToolPreview(): void {
820
- const block = this.focusedToolBlock();
821
- const custom = this.operations?.ctx?.ui?.custom;
822
- if (!block || typeof custom !== "function") return;
840
+ this.buildContentLines(this.transcriptWidth(this.lastInnerW || 80));
841
+ const focusedToolCallId = this.timeline.getFocusedToolCallId();
842
+ const block = focusedToolCallId
843
+ ? this.cachedMessageBlocks.find((candidate) => candidate.toolCallId === focusedToolCallId)
844
+ : this.currentBlock();
845
+ if (block?.kind !== "tool") return;
823
846
 
824
847
  const toolName = block.toolName || "tool";
825
848
  const args = block.args ?? block.toolArguments;
826
849
  const result = block.toolResult ?? block.result ?? { content: [] };
827
850
  const title = `${toolName} · full preview`;
828
- void custom.call(this.operations!.ctx.ui, (tui, overlayTheme, _keybindings, done) => {
829
- const body = createViewerCcstyleResult(
830
- toolName,
831
- result,
832
- { expanded: true, isError: result.isError === true },
833
- overlayTheme,
834
- { args, maxChars: FULL_TOOL_PREVIEW_MAX_CHARS, diffConfig: { expandedPreviewMaxLines: Number.MAX_SAFE_INTEGER } },
835
- );
836
- return new FullToolPreview(tui, overlayTheme as Theme, title, body, done);
837
- }, {
838
- overlay: true,
839
- overlayOptions: { anchor: "center", width: "85%", minWidth: 50, maxHeight: "80%", margin: 2 },
840
- }).catch(() => undefined);
851
+ const body = createViewerCcstyleResult(
852
+ toolName,
853
+ result,
854
+ { expanded: true, isError: result.isError === true },
855
+ this.theme,
856
+ { args, maxChars: FULL_TOOL_PREVIEW_MAX_CHARS, diffConfig: { expandedPreviewMaxLines: Number.MAX_SAFE_INTEGER } },
857
+ );
858
+ this.toolPreview = new FullToolPreview(this.tui, this.theme, title, body, () => {
859
+ this.toolPreview = undefined;
860
+ this.tui.requestRender();
861
+ });
862
+ this.tui.requestRender();
841
863
  }
842
864
 
843
865
  private scrollBy(delta: number): void {