deepseek-coder-agent-cli 1.0.66 → 1.0.68

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.
@@ -213,6 +213,7 @@ export declare class UnifiedUIRenderer extends EventEmitter {
213
213
  private spinnerFrame;
214
214
  private spinnerInterval;
215
215
  private readonly maxInlinePanelLines;
216
+ private readonly maxInputDisplayLines;
216
217
  private compactingStatusMessage;
217
218
  private compactingStatusFrame;
218
219
  private compactingStatusInterval;
@@ -251,6 +252,7 @@ export declare class UnifiedUIRenderer extends EventEmitter {
251
252
  private hasConversationContent;
252
253
  private isPromptActive;
253
254
  private inputRenderOffset;
255
+ private inputLineViewportOffset;
254
256
  private readonly plainPasteIdleMs;
255
257
  private readonly plainPasteWindowMs;
256
258
  private readonly plainPasteTriggerChars;
@@ -706,6 +708,11 @@ export declare class UnifiedUIRenderer extends EventEmitter {
706
708
  private renderPromptImmediate;
707
709
  private renderPromptImmediateInternal;
708
710
  private buildOverlayLines;
711
+ /**
712
+ * Build input lines with viewport constraint to fit within maxLines.
713
+ * Ensures cursor is always visible and shows scroll indicators when content is clipped.
714
+ */
715
+ private buildInputLinesWithViewport;
709
716
  /**
710
717
  * Build a single compact status line with all essential info
711
718
  * Format: deepseek-reasoner · ░░░░░░ 5% · agi-code · ~/GitHub
@@ -736,7 +743,6 @@ export declare class UnifiedUIRenderer extends EventEmitter {
736
743
  private buildControlLines;
737
744
  private buildToggleLine;
738
745
  private buildShortcutLine;
739
- private buildInputLine;
740
746
  private buildInputWindow;
741
747
  /**
742
748
  * Expand collapsed paste into the buffer without submitting (Ctrl+L).
@@ -1 +1 @@
1
- {"version":3,"file":"UnifiedUIRenderer.d.ts","sourceRoot":"","sources":["../../src/ui/UnifiedUIRenderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UnifiedUIRenderer.d.ts","sourceRoot":"","sources":["../../src/ui/UnifiedUIRenderer.ts"],"names":[],"mappings":"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"}
@@ -234,6 +234,7 @@ export class UnifiedUIRenderer extends EventEmitter {
234
234
  spinnerFrame = 0;
235
235
  spinnerInterval = null;
236
236
  maxInlinePanelLines = 12;
237
+ maxInputDisplayLines = 15; // Max lines to show in input area; keeps bottom visible during paste
237
238
  // Compacting status animation
238
239
  compactingStatusMessage = '';
239
240
  compactingStatusFrame = 0;
@@ -368,6 +369,7 @@ export class UnifiedUIRenderer extends EventEmitter {
368
369
  hasConversationContent = false;
369
370
  isPromptActive = false;
370
371
  inputRenderOffset = 0;
372
+ inputLineViewportOffset = 0; // Vertical scroll offset for multi-line input viewport
371
373
  plainPasteIdleMs = 80; // Increased for more robust multi-line paste detection
372
374
  plainPasteWindowMs = 120; // Increased window for paste burst detection
373
375
  plainPasteTriggerChars = 16; // Lower threshold to catch multi-line pastes sooner
@@ -4491,10 +4493,15 @@ export class UnifiedUIRenderer extends EventEmitter {
4491
4493
  this.promptHeight = height;
4492
4494
  }
4493
4495
  buildOverlayLines() {
4494
- const lines = [];
4495
4496
  const maxWidth = this.safeWidth();
4497
+ const terminalHeight = this.rows || 24;
4496
4498
  // Simple horizontal divider - clean and reliable
4497
4499
  const divider = theme.ui.muted('─'.repeat(maxWidth));
4500
+ // ============ PHASE 1: Build all fixed chrome elements first ============
4501
+ // These elements have fixed height and must always be visible
4502
+ const chromeAbove = []; // Lines above input
4503
+ const chromeBelow = []; // Lines below input (status, toggles, shortcuts)
4504
+ // Activity line (only when streaming)
4498
4505
  const fallbackActivity = (() => {
4499
4506
  const raw = this.statusStreaming || this.statusOverride || this.statusMessage;
4500
4507
  if (!raw)
@@ -4502,9 +4509,7 @@ export class UnifiedUIRenderer extends EventEmitter {
4502
4509
  const cleaned = this.stripAnsi(raw).replace(/^[⏺•]\s*/, '').trim();
4503
4510
  return cleaned || null;
4504
4511
  })();
4505
- // Activity line (only when streaming) - shows: ◐ Working… (esc to interrupt · 34s)
4506
4512
  if (this.mode === 'streaming' && (this.activityMessage || fallbackActivity)) {
4507
- // Clean spinner animation using braille dots + shimmer accent for a richer feel
4508
4513
  const spinnerChars = spinnerFrames.braille;
4509
4514
  const spinnerChar = spinnerChars[this.spinnerFrame % spinnerChars.length] ?? '⠋';
4510
4515
  const starChar = this.activityStarFrames[this.activityStarFrame % this.activityStarFrames.length] ?? '✶';
@@ -4519,8 +4524,6 @@ export class UnifiedUIRenderer extends EventEmitter {
4519
4524
  displayActivity = fallbackActivity || 'Working';
4520
4525
  }
4521
4526
  const needsEllipsis = !displayActivity.trimEnd().endsWith('…') && !displayActivity.trimEnd().endsWith('...');
4522
- // Format: ⠋ Working… (esc to interrupt · 1m 19s · ↑1.2k tokens)
4523
- // Build parts with animated elapsed time color
4524
4527
  const elapsedColor = chalk.hex(this.elapsedColorFrames[this.elapsedColorFrame % this.elapsedColorFrames.length] ?? '#F59E0B');
4525
4528
  const parts = ['esc to interrupt'];
4526
4529
  if (elapsed)
@@ -4531,46 +4534,21 @@ export class UnifiedUIRenderer extends EventEmitter {
4531
4534
  const prefix = `${spinnerDecorated} `;
4532
4535
  const activityText = `${displayActivity.trim()}${needsEllipsis ? '…' : ''}`;
4533
4536
  const suffix = ` ${theme.ui.muted('(')}${parts.join(theme.ui.muted(' · '))}${theme.ui.muted(')')}`;
4534
- // Build the full activity line with animated color for elapsed time
4535
4537
  const activityLine = `${prefix}${activityText}${suffix}`;
4536
- // Always show full text - wrap to multiple lines if needed
4537
4538
  const indent = ' '.repeat(this.visibleLength(prefix));
4538
4539
  const wrapped = this.wrapOverlayLine(activityLine, maxWidth, indent);
4539
- lines.push(...wrapped);
4540
- }
4541
- // Top divider
4542
- lines.push(divider);
4543
- // Input prompt line
4544
- const promptIndex = lines.length;
4545
- const inputLine = this.buildInputLine();
4546
- // Handle multi-line input by splitting on newlines
4547
- // Filter out empty lines to prevent duplicate divider appearance from leading/trailing newlines
4548
- const inputLines = inputLine.split('\n').filter((line, idx, arr) => {
4549
- // Keep non-empty lines, but preserve single empty line if it's intentional (e.g., between content)
4550
- // Only filter leading/trailing empty lines
4551
- if (line.trim() === '') {
4552
- // Filter if it's the first line (leading empty) or last line (trailing empty)
4553
- if (idx === 0 || idx === arr.length - 1)
4554
- return false;
4555
- }
4556
- return true;
4557
- });
4558
- // Ensure at least one line for the prompt
4559
- if (inputLines.length === 0) {
4560
- inputLines.push(theme.primary('> '));
4540
+ chromeAbove.push(...wrapped);
4561
4541
  }
4562
- for (const line of inputLines) {
4563
- lines.push(this.truncateLine(line, maxWidth));
4564
- }
4565
- // Bottom divider
4566
- lines.push(divider);
4567
- // Inline panel (pinned scroll box for live output/menus)
4542
+ // Top divider (always present)
4543
+ chromeAbove.push(divider);
4544
+ // Bottom divider (always present)
4545
+ chromeBelow.push(divider);
4546
+ // Inline panel
4568
4547
  if (this.inlinePanel.length > 0) {
4569
4548
  for (const panelLine of this.inlinePanel) {
4570
- lines.push(this.truncateLine(` ${panelLine}`, maxWidth));
4549
+ chromeBelow.push(this.truncateLine(` ${panelLine}`, maxWidth));
4571
4550
  }
4572
- // Separate inline content from suggestions/toggles
4573
- lines.push(divider);
4551
+ chromeBelow.push(divider);
4574
4552
  }
4575
4553
  // Slash command suggestions
4576
4554
  if (this.suggestions.length > 0) {
@@ -4580,26 +4558,170 @@ export class UnifiedUIRenderer extends EventEmitter {
4580
4558
  const marker = isActive ? theme.primary('▸') : theme.ui.muted(' ');
4581
4559
  const cmdText = isActive ? theme.primary(suggestion.command) : theme.ui.muted(suggestion.command);
4582
4560
  const descText = isActive ? suggestion.description : theme.ui.muted(suggestion.description);
4583
- lines.push(this.truncateLine(` ${marker} ${cmdText} — ${descText}`, maxWidth));
4561
+ chromeBelow.push(this.truncateLine(` ${marker} ${cmdText} — ${descText}`, maxWidth));
4584
4562
  }
4585
4563
  }
4586
- // Compact status line: model · context% · profile · dir
4564
+ // Compact status line
4587
4565
  const compactStatus = this.buildCompactStatusLine();
4588
4566
  if (compactStatus) {
4589
- lines.push(this.truncateLine(` ${compactStatus}`, maxWidth));
4567
+ chromeBelow.push(this.truncateLine(` ${compactStatus}`, maxWidth));
4590
4568
  }
4591
- // Mode toggles (compact single line when possible)
4569
+ // Mode toggles
4592
4570
  const toggleLine = this.buildToggleLine();
4593
4571
  if (toggleLine) {
4594
- lines.push(this.truncateLine(` ${toggleLine}`, maxWidth));
4572
+ chromeBelow.push(this.truncateLine(` ${toggleLine}`, maxWidth));
4595
4573
  }
4596
- // Keyboard shortcuts line (shows shortcuts not already visible in toggle line)
4574
+ // Keyboard shortcuts
4597
4575
  const shortcutLine = this.buildShortcutLine();
4598
4576
  if (shortcutLine) {
4599
- lines.push(this.truncateLine(` ${shortcutLine}`, maxWidth));
4577
+ chromeBelow.push(this.truncateLine(` ${shortcutLine}`, maxWidth));
4578
+ }
4579
+ // ============ PHASE 2: Calculate available space for input ============
4580
+ const chromeHeight = chromeAbove.length + chromeBelow.length;
4581
+ const minInputLines = 1; // At least show the prompt line
4582
+ const maxInputLines = Math.max(minInputLines, terminalHeight - chromeHeight - 1); // -1 for safety margin
4583
+ // ============ PHASE 3: Build input with calculated height constraint ============
4584
+ const allInputLines = this.buildInputLinesWithViewport(maxInputLines);
4585
+ // ============ PHASE 4: Assemble final overlay ============
4586
+ const lines = [];
4587
+ lines.push(...chromeAbove);
4588
+ const promptIndex = lines.length; // Track where prompt starts for cursor positioning
4589
+ for (const line of allInputLines) {
4590
+ lines.push(this.truncateLine(line, maxWidth));
4600
4591
  }
4592
+ lines.push(...chromeBelow);
4601
4593
  return { lines, promptIndex };
4602
4594
  }
4595
+ /**
4596
+ * Build input lines with viewport constraint to fit within maxLines.
4597
+ * Ensures cursor is always visible and shows scroll indicators when content is clipped.
4598
+ */
4599
+ buildInputLinesWithViewport(maxLines) {
4600
+ const now = Date.now();
4601
+ const burstActive = this.pasteBurstWindowStart > 0 && now - this.pasteBurstWindowStart <= this.plainPasteWindowMs;
4602
+ // During paste detection, show compact indicator
4603
+ if (this.inPlainPaste || this.inBracketedPaste || burstActive) {
4604
+ const chars = this.plainPasteBuffer.length || this.pasteBuffer.length || this.pendingInsertBuffer.length || 0;
4605
+ if (chars > 0) {
4606
+ const indicator = theme.ui.muted(`[📋 pasting... ${chars} chars]`);
4607
+ return [this.truncateLine(`${theme.primary('> ')}${indicator}`, this.safeWidth())];
4608
+ }
4609
+ if (burstActive) {
4610
+ return [this.truncateLine(`${theme.primary('> ')}`, this.safeWidth())];
4611
+ }
4612
+ }
4613
+ const prompt = theme.primary('> ');
4614
+ const promptWidth = this.visibleLength(prompt);
4615
+ const maxWidth = this.safeWidth();
4616
+ const continuationIndent = ' ';
4617
+ const continuationWidth = continuationIndent.length;
4618
+ // Build all display lines from buffer
4619
+ const rawBuffer = this.buffer.replace(/\r/g, '\n');
4620
+ const normalized = this.secretMode ? '•'.repeat(rawBuffer.length) : rawBuffer;
4621
+ const bufferLines = normalized.split('\n');
4622
+ const allLines = [];
4623
+ let totalChars = 0;
4624
+ let cursorLine = 0;
4625
+ let cursorCol = 0;
4626
+ let foundCursor = false;
4627
+ for (let lineIndex = 0; lineIndex < bufferLines.length; lineIndex++) {
4628
+ const line = bufferLines[lineIndex] ?? '';
4629
+ const isFirstLogicalLine = lineIndex === 0;
4630
+ const lineStartChar = totalChars;
4631
+ const firstLineWidth = maxWidth - promptWidth;
4632
+ const contLineWidth = maxWidth - continuationWidth;
4633
+ let remaining = line;
4634
+ let isFirstDisplayLine = true;
4635
+ while (remaining.length > 0 || isFirstDisplayLine) {
4636
+ const availableWidth = (isFirstLogicalLine && isFirstDisplayLine) ? firstLineWidth : contLineWidth;
4637
+ const chunk = remaining.slice(0, availableWidth);
4638
+ remaining = remaining.slice(availableWidth);
4639
+ let displayLine;
4640
+ if (isFirstLogicalLine && isFirstDisplayLine) {
4641
+ displayLine = `${prompt}${chunk}`;
4642
+ }
4643
+ else {
4644
+ displayLine = `${continuationIndent}${chunk}`;
4645
+ }
4646
+ if (!foundCursor) {
4647
+ const chunkStart = lineStartChar + (line.length - remaining.length - chunk.length);
4648
+ const chunkEnd = chunkStart + chunk.length;
4649
+ if (this.cursor >= chunkStart && this.cursor <= chunkEnd) {
4650
+ cursorLine = allLines.length;
4651
+ const offsetInChunk = this.cursor - chunkStart;
4652
+ cursorCol = ((isFirstLogicalLine && isFirstDisplayLine) ? promptWidth : continuationWidth) + offsetInChunk;
4653
+ foundCursor = true;
4654
+ }
4655
+ }
4656
+ allLines.push(displayLine);
4657
+ isFirstDisplayLine = false;
4658
+ if (remaining.length === 0 && chunk.length === 0)
4659
+ break;
4660
+ }
4661
+ totalChars += line.length + 1;
4662
+ }
4663
+ // Handle cursor at end
4664
+ if (!foundCursor) {
4665
+ cursorLine = Math.max(0, allLines.length - 1);
4666
+ const lastLine = allLines[cursorLine] ?? '';
4667
+ cursorCol = this.visibleLength(lastLine);
4668
+ }
4669
+ // Add cursor highlight
4670
+ if (allLines.length > 0 && cursorLine < allLines.length) {
4671
+ const targetLine = allLines[cursorLine] ?? '';
4672
+ const visiblePart = this.stripAnsi(targetLine);
4673
+ const cursorPos = Math.min(cursorCol, visiblePart.length);
4674
+ const before = visiblePart.slice(0, cursorPos);
4675
+ const at = visiblePart.charAt(cursorPos) || ' ';
4676
+ const after = visiblePart.slice(cursorPos + 1);
4677
+ const prefix = cursorLine === 0 ? prompt : continuationIndent;
4678
+ const textPart = cursorLine === 0 ? before.slice(promptWidth) : before.slice(continuationWidth);
4679
+ allLines[cursorLine] = `${prefix}${textPart}${ESC.REVERSE}${at}${ESC.RESET}${after}`;
4680
+ }
4681
+ this.cursorVisibleColumn = cursorCol + 1;
4682
+ // ============ VIEWPORT LOGIC ============
4683
+ // If all lines fit, return them all
4684
+ if (allLines.length <= maxLines) {
4685
+ return allLines;
4686
+ }
4687
+ // Need viewport - reserve 1 line for scroll indicator if needed
4688
+ const viewportSize = maxLines - 1; // Reserve 1 for indicator
4689
+ if (viewportSize < 1) {
4690
+ return [allLines[cursorLine] ?? theme.primary('> ')];
4691
+ }
4692
+ // Calculate viewport to keep cursor visible, preferring to show content after cursor
4693
+ let viewportStart = this.inputLineViewportOffset;
4694
+ // Ensure cursor is in viewport
4695
+ if (cursorLine < viewportStart) {
4696
+ viewportStart = cursorLine;
4697
+ }
4698
+ else if (cursorLine >= viewportStart + viewportSize) {
4699
+ viewportStart = cursorLine - viewportSize + 1;
4700
+ }
4701
+ // Clamp to valid range
4702
+ const maxStart = Math.max(0, allLines.length - viewportSize);
4703
+ viewportStart = Math.max(0, Math.min(viewportStart, maxStart));
4704
+ this.inputLineViewportOffset = viewportStart;
4705
+ // Extract viewport
4706
+ const viewportEnd = Math.min(viewportStart + viewportSize, allLines.length);
4707
+ const visibleLines = allLines.slice(viewportStart, viewportEnd);
4708
+ // Build result with scroll indicator
4709
+ const result = [];
4710
+ const hiddenAbove = viewportStart;
4711
+ const hiddenBelow = allLines.length - viewportEnd;
4712
+ if (hiddenAbove > 0 && hiddenBelow > 0) {
4713
+ // Content hidden both above and below
4714
+ result.push(theme.ui.muted(` ↕ ${hiddenAbove} above · ${hiddenBelow} below — use arrows to scroll`));
4715
+ }
4716
+ else if (hiddenAbove > 0) {
4717
+ result.push(theme.ui.muted(` ↑ ${hiddenAbove} line${hiddenAbove === 1 ? '' : 's'} above`));
4718
+ }
4719
+ else if (hiddenBelow > 0) {
4720
+ result.push(theme.ui.muted(` ↓ ${hiddenBelow} line${hiddenBelow === 1 ? '' : 's'} below`));
4721
+ }
4722
+ result.push(...visibleLines);
4723
+ return result;
4724
+ }
4603
4725
  /**
4604
4726
  * Build a single compact status line with all essential info
4605
4727
  * Format: deepseek-reasoner · ░░░░░░ 5% · agi-code · ~/GitHub
@@ -5006,103 +5128,6 @@ export class UnifiedUIRenderer extends EventEmitter {
5006
5128
  }
5007
5129
  return parts.join(theme.ui.muted(' '));
5008
5130
  }
5009
- buildInputLine() {
5010
- // While detecting paste (or in burst detection phase), suppress buffer display
5011
- const now = Date.now();
5012
- const burstActive = this.pasteBurstWindowStart > 0 && now - this.pasteBurstWindowStart <= this.plainPasteWindowMs;
5013
- if (this.inPlainPaste || this.inBracketedPaste || burstActive) {
5014
- const chars = this.plainPasteBuffer.length || this.pasteBuffer.length || this.pendingInsertBuffer.length || 0;
5015
- if (chars > 0) {
5016
- const indicator = theme.ui.muted(`[📋 pasting... ${chars} chars]`);
5017
- return this.truncateLine(`${theme.primary('> ')}${indicator}`, this.safeWidth());
5018
- }
5019
- // Even if no chars yet, show empty prompt during burst to prevent flicker
5020
- if (burstActive) {
5021
- return this.truncateLine(`${theme.primary('> ')}`, this.safeWidth());
5022
- }
5023
- }
5024
- // Claude Code uses simple '>' prompt
5025
- const prompt = theme.primary('> ');
5026
- const promptWidth = this.visibleLength(prompt);
5027
- const maxWidth = this.safeWidth();
5028
- const continuationIndent = ' '; // 2 spaces for continuation lines
5029
- const continuationWidth = continuationIndent.length;
5030
- // Handle multi-line input - split buffer on newlines first
5031
- // In secret mode, mask all characters with bullets
5032
- const rawBuffer = this.buffer.replace(/\r/g, '\n');
5033
- const normalized = this.secretMode ? '•'.repeat(rawBuffer.length) : rawBuffer;
5034
- const bufferLines = normalized.split('\n');
5035
- // Wrap each logical line to fit terminal width, expanding vertically
5036
- const result = [];
5037
- let totalChars = 0;
5038
- let cursorLine = 0;
5039
- let cursorCol = 0;
5040
- let foundCursor = false;
5041
- for (let lineIndex = 0; lineIndex < bufferLines.length; lineIndex++) {
5042
- const line = bufferLines[lineIndex] ?? '';
5043
- const isFirstLogicalLine = lineIndex === 0;
5044
- const lineStartChar = totalChars;
5045
- // Determine available width for this line
5046
- const firstLineWidth = maxWidth - promptWidth;
5047
- const contLineWidth = maxWidth - continuationWidth;
5048
- // Wrap this logical line into display lines
5049
- let remaining = line;
5050
- let isFirstDisplayLine = true;
5051
- while (remaining.length > 0 || isFirstDisplayLine) {
5052
- const availableWidth = (isFirstLogicalLine && isFirstDisplayLine) ? firstLineWidth : contLineWidth;
5053
- const chunk = remaining.slice(0, availableWidth);
5054
- remaining = remaining.slice(availableWidth);
5055
- // Build the display line
5056
- let displayLine;
5057
- if (isFirstLogicalLine && isFirstDisplayLine) {
5058
- displayLine = `${prompt}${chunk}`;
5059
- }
5060
- else {
5061
- displayLine = `${continuationIndent}${chunk}`;
5062
- }
5063
- // Track cursor position
5064
- if (!foundCursor) {
5065
- const chunkStart = lineStartChar + (line.length - remaining.length - chunk.length);
5066
- const chunkEnd = chunkStart + chunk.length;
5067
- if (this.cursor >= chunkStart && this.cursor <= chunkEnd) {
5068
- cursorLine = result.length;
5069
- const offsetInChunk = this.cursor - chunkStart;
5070
- cursorCol = ((isFirstLogicalLine && isFirstDisplayLine) ? promptWidth : continuationWidth) + offsetInChunk;
5071
- foundCursor = true;
5072
- }
5073
- }
5074
- result.push(displayLine);
5075
- isFirstDisplayLine = false;
5076
- // If nothing left and this was an empty line, we already added it
5077
- if (remaining.length === 0 && chunk.length === 0)
5078
- break;
5079
- }
5080
- totalChars += line.length + 1; // +1 for the newline separator
5081
- }
5082
- // Handle cursor at very end
5083
- if (!foundCursor) {
5084
- cursorLine = Math.max(0, result.length - 1);
5085
- const lastLine = result[cursorLine] ?? '';
5086
- cursorCol = this.visibleLength(lastLine);
5087
- }
5088
- // Add cursor highlight to the appropriate position
5089
- if (result.length > 0) {
5090
- const targetLine = result[cursorLine] ?? '';
5091
- const visiblePart = this.stripAnsi(targetLine);
5092
- const cursorPos = Math.min(cursorCol, visiblePart.length);
5093
- // Rebuild the line with cursor highlight
5094
- const before = visiblePart.slice(0, cursorPos);
5095
- const at = visiblePart.charAt(cursorPos) || ' ';
5096
- const after = visiblePart.slice(cursorPos + 1);
5097
- // Preserve the prompt/indent styling
5098
- const prefix = cursorLine === 0 ? prompt : continuationIndent;
5099
- const textPart = cursorLine === 0 ? before.slice(promptWidth) : before.slice(continuationWidth);
5100
- result[cursorLine] = `${prefix}${textPart}${ESC.REVERSE}${at}${ESC.RESET}${after}`;
5101
- }
5102
- // Store cursor column for terminal positioning
5103
- this.cursorVisibleColumn = cursorCol + 1;
5104
- return result.join('\n');
5105
- }
5106
5131
  buildInputWindow(available) {
5107
5132
  if (available <= 0) {
5108
5133
  return { text: '', cursor: 0 };
@@ -5282,6 +5307,7 @@ export class UnifiedUIRenderer extends EventEmitter {
5282
5307
  this.buffer = '';
5283
5308
  this.cursor = 0;
5284
5309
  this.inputRenderOffset = 0;
5310
+ this.inputLineViewportOffset = 0; // Reset vertical viewport
5285
5311
  this.suggestions = [];
5286
5312
  this.suggestionIndex = -1;
5287
5313
  this.renderPrompt();