fix(tui): calm the Activity feed — revert auto-expand-on-error, demote log noise#13808
Merged
Conversation
Reverts the auto-expand-on-new-error effect added in 93b47d9. The effect overrode the user's chosen detailsMode and visually interrupted every turn. Red/yellow chevron tint remains as the passive signal — click to read, just like Thinking and Tool calls.
Restore the old-CLI contract where only complete failures tint Activity red. Everything else is still visible for debugging but no longer commandeers attention. - gateway.stderr: always tone='info' (drops the ERRLIKE_RE regex) - gateway.protocol_error: both pushes demoted to 'info' - commands.catalog cold-start failure: demoted to 'info' - approval.request: no longer duplicates the overlay into Activity Kept as 'error': terminal `error` event, gateway.start_timeout, gateway-exited, explicit status.update kinds.
Contributor
There was a problem hiding this comment.
Pull request overview
This PR restores a calmer TUI Activity feed by removing the auto-expand behavior on new errors and reclassifying several gateway-related events as informational so the Activity chevron only tints red on true failures.
Changes:
- Revert the “auto-open Activity on new error” behavior in the thinking/progress UI.
- Demote gateway stderr/protocol noise (and command catalog cold-start failure) to
info, and stop emitting an Activity entry forapproval.request. - Add a regression test covering the new noise classification and approval behavior.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| ui-tui/src/components/thinking.tsx | Removes the effect that forced Activity open when new errors appear. |
| ui-tui/src/app/createGatewayEventHandler.ts | Reclassifies noisy gateway events to info and omits Activity logging for approvals. |
| ui-tui/src/tests/createGatewayEventHandler.test.ts | Adds coverage ensuring noise is info, approvals don’t enter Activity, and real errors still do. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Restore the old-CLI contract where only complete failures tint the Activity chevron red. Everything else is still visible for debugging but no longer commandeers attention.
Two small commits:
fix(tui): don't force-open Activity on every error— reverts the auto-expand-on-new-error effect from93b47d96. The effect overrode the user's chosendetailsModeand visually interrupted every turn. Red/yellow chevron tint stays as the passive signal; click to read, same as Thinking and Tool calls.fix(tui): demote gateway log-noise from Activity to info tone— reclassifies the noisy sources increateGatewayEventHandler.ts:gateway.stderr→ alwaysinfo(drops theERRLIKE_REregex)gateway.protocol_error(both pushes) →infocommands.catalogcold-start failure →infoapproval.request→ no Activity entry (the overlay is the signal)Kept as
error: terminalerrorevent,gateway.start_timeout, gateway-exited, explicitstatus.updateerror/warn kinds.Motivation
The old CLI silently swallowed ~99% of stderr and protocol noise — only complete failures ever surfaced. The new event pipeline surfaced that unfiltered firehose into the Activity feed as
error/warntones, and the auto-expand compounded it into a per-turn attention-grab. This restores the signal-to-noise ratio of the old CLI while keeping the information accessible via the (now-dim) Activity chevron and/logs.Net effect
gateway.stderrerror/warnby regexinfogateway.protocol_errorwarn(×2)info(×2)commands.catalogfailwarninfoapproval.requestwarnerroreventerrorerror(unchanged)gateway.start_timeouterrorerror(unchanged)errorerror(unchanged)In normal operation the Activity chevron stays dim — no eye-grab. Red chevron genuinely means "something broke, worth a click".
Explicitly deferred (not in this branch)
display.open_thinking/tools/activity) for the "always A+B, never C" mental model. Revisit if source triage doesn't quiet things enough.display.auto_expand_errorsflag for users who liked the pop-up.Test plan
npm testinui-tui/— 24 files, 186 tests, greeninfo, approval stays out of Activity, realerrorevent still tints red