dsh-ssh-tui 0.3.9 → 0.3.10

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.
@@ -348,6 +348,26 @@ export declare function providerUsesLocalOAuth(provider: string): boolean;
348
348
  * Overflow into the input box is handled by clipping/padding painted rows to
349
349
  * the measured column count, not by inflating glyph width.
350
350
  */
351
+ /**
352
+ * Codex-style compact elapsed: `0s`, `1m 05s`, `1h 01m 01s`.
353
+ * Used by the workspace wait card while the model has not streamed yet.
354
+ */
355
+ export declare function fmtElapsedCompact(elapsedSecs: number): string;
356
+ /**
357
+ * Sweep highlight across `text` (Codex `shimmer.rs`). Truecolor blends a
358
+ * highlight band; otherwise DIM / default / BOLD. Process-start based so
359
+ * every paint of the same frame stays in phase.
360
+ */
361
+ export declare function shimmerText(text: string, nowMs: number, color: boolean): string;
362
+ /** One-line wait copy: current tool, else the user's last prompt. */
363
+ export declare function waitCardCopy(input: {
364
+ toolTitle?: string;
365
+ toolSummary?: string;
366
+ prompt?: string;
367
+ }): {
368
+ header: string;
369
+ detail?: string;
370
+ };
351
371
  export declare function displayWidth(text: string): number;
352
372
  /** Pad or clip one already-sanitized line so it occupies exactly `width` cells. */
353
373
  export declare function padToWidth(text: string, width: number): string;
@@ -388,9 +408,12 @@ interface InputView {
388
408
  folded: boolean;
389
409
  }
390
410
  /**
391
- * Fold a long single-line input into one terminal row around the cursor.
392
- * Only the *display* is clipped; the caller keeps the original `input` intact
393
- * for editing and submission.
411
+ * Fold a long input into one terminal row around the cursor.
412
+ *
413
+ * Newlines from a paste are display-only: they do not occupy cells, so a
414
+ * naive `displayWidth(input)` under-counts a multi-line paste and parks the
415
+ * caret in the middle of later text. Fold the *current line* (between the
416
+ * surrounding newlines) and keep `\n` out of the visible slice.
394
417
  */
395
418
  export declare function foldInputView(input: string, cursor: number, maxWidth: number): InputView;
396
419
  /** A recognized OpenCode provider route, used by /usage and /quota. */
@@ -654,6 +677,7 @@ export declare class SshTui {
654
677
  private focusedRow;
655
678
  private pendingMessages;
656
679
  private lastActivity;
680
+ private lastIdleCtrlCAt;
657
681
  private stalledWarningShown;
658
682
  private lastPaintAt;
659
683
  private commandAbort;
@@ -671,6 +695,8 @@ export declare class SshTui {
671
695
  private escapeBuffer;
672
696
  private escapeTimer;
673
697
  private thinkingStartedAt;
698
+ private waitStartedAt;
699
+ private waitPrompt;
674
700
  private completionSignaled;
675
701
  private replaying;
676
702
  private completedAt;
@@ -726,6 +752,15 @@ export declare class SshTui {
726
752
  /** The transcript rows that support per-row expand/collapse. */
727
753
  private collapsibleRows;
728
754
  private spinnerFrame;
755
+ /**
756
+ * Codex wait card: shown while the turn is running and there is no live
757
+ * thinking/reply stream. A live tool keeps the card so the detail line can
758
+ * name what is happening (Codex `update_details`).
759
+ */
760
+ private waitCardVisible;
761
+ private beginWait;
762
+ private endWait;
763
+ private waitCardSource;
729
764
  private findSubagentRow;
730
765
  private findLivePlanRow;
731
766
  /** Older / finished plans stay in the scrolling transcript. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-ssh-tui",
3
- "version": "0.3.9",
3
+ "version": "0.3.10",
4
4
  "description": "SSH-friendly interactive terminal TUI plugin for DeepSeek Harness",
5
5
  "keywords": [
6
6
  "deepseek-harness",