@dreb/coding-agent 2.31.1 → 2.32.1

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
@@ -42,6 +42,8 @@
42
42
 
43
43
  ### Fixed
44
44
 
45
+ - Fixed the TUI yanking the viewport to the top and wiping scrollback when a live-region-only change occurred while the user was scrolled up — at turn end (the working spinner disappearing) or on resize. A one-line live-region change was escalating to `recommitAll()`, which clears scrollback and repaints the whole session from the top, destroying the user's scroll position and native scrollback. The working indicator now lives on the always-present editor input line (constant live-region height, so turn boundaries no longer shrink the live region), live-region-only viewport shifts route through a new `restoreLiveViewport()` that bottom-anchors without replaying committed content, and `recommitAll()` re-establishes input modes via a RIS reset before any transcript bytes. A structural guard now makes it a loud error (with terminal teardown) for any live-only render path to reach `recommitAll()`, so the committed-replay class of bug cannot silently return. ([#292](https://github.com/aebrer/dreb/issues/292))
46
+
45
47
  - Fixed ESC doing nothing during `stream_retry` / `length_retry` backoff. The old handlers stopped the working spinner (`loadingAnimation`) and swapped in a dedicated retry spinner that had no ESC wiring, so the default ESC handler's `if (this.loadingAnimation)` guard fell through to a no-op. The fix removes the retry spinner entirely, keeps the working spinner running throughout the retry, and surfaces retry feedback as a persistent warning in the chat scrollback instead. ESC now aborts via the pre-existing spinner-abort path — identical to cancelling normal generation. ([#262](https://github.com/aebrer/dreb/issues/262))
46
48
 
47
49
  - Fixed `/buddy off` not persisting across sessions — the buddy reappeared in the TUI on restart. The `hidden` flag was persisted correctly, but the startup auto-mount ignored it. The startup mount is now gated on the persisted `hidden` flag (extracted into `mountExistingBuddyIfVisible()`); a hidden buddy stays loaded but unmounted until you run `/buddy` to bring it back. ([#243](https://github.com/aebrer/dreb/issues/243))
@@ -42,9 +42,16 @@ export declare class InteractiveMode {
42
42
  private version;
43
43
  private isInitialized;
44
44
  private onInputCallback?;
45
- private loadingAnimation;
46
45
  private pendingWorkingMessage;
47
46
  private readonly defaultWorkingMessage;
47
+ private readonly workingFrames;
48
+ private workingFrame;
49
+ private workingInterval;
50
+ private inlineStatusOwner;
51
+ private inlineStatusSpinner;
52
+ private warnedMissingInlineStatus;
53
+ private isAgentWorking;
54
+ private currentWorkingMessage;
48
55
  private lastSigintTime;
49
56
  private lastEscapeTime;
50
57
  private changelogMarkdown;
@@ -163,6 +170,16 @@ export declare class InteractiveMode {
163
170
  private setExtensionHeader;
164
171
  private addExtensionTerminalInputListener;
165
172
  private clearExtensionTerminalInputListeners;
173
+ private defaultInterruptWorkingMessage;
174
+ private setEditorInlineStatus;
175
+ private renderWorkingIndicator;
176
+ private startInlineStatus;
177
+ private stopInlineStatus;
178
+ private startInlineLoader;
179
+ private startAgentWorking;
180
+ private stopAgentWorking;
181
+ private stopAllInlineStatus;
182
+ private setWorkingMessage;
166
183
  /**
167
184
  * Create the ExtensionUIContext for extensions.
168
185
  */