Repository navigation
Improve desktop chat activity, interruption, and queued messages - #889
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
PR Summary by QodoImprove desktop chat activity, interruption, and queued messages
AI Description
Diagram
High-Level Assessment
Files changed (17)
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5b51d58555
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| internal bool Matches(string text, string? path, long offset) => | ||
| (TranscriptPath != path || offset > TranscriptOffset) | ||
| && Normalize(Text) == Normalize(text); |
There was a problem hiding this comment.
Rebase queued offsets when the transcript resets
When a transcript is truncated after a send, JsonlTail rereads it from offset zero with TailStatus.Reset, but the queued message retains its pre-truncation TranscriptOffset. A matching echo in the reset file will therefore have offset <= TranscriptOffset and can never acknowledge the message, leaving the banner permanently queued or unconfirmed. Reset or generation-scope queued offsets when Apply handles the tail reset.
Useful? React with 👍 / 👎.
| void RefreshActivityNote() { | ||
| var working = _status == "Running" && _awaitingInput == false; | ||
| if (working) _workingSince ??= _time.GetTimestamp(); | ||
| else _workingSince = null; |
There was a problem hiding this comment.
Stop the working clock while a pending card blocks the turn
When a permission or question card is pending, the activity line is hidden but _workingSince remains unchanged because working ignores HasPendingCards. After the user spends time answering and the card disappears, the UI resumes with that blocked interval included—for example, a ten-minute approval wait immediately displays Working for 10m ... even though the agent was not working. Treat a pending card as non-working when updating the clock, not only when rendering the note.
Useful? React with 👍 / 👎.
Code Review by Qodo
1.
|
No linked GitHub or Linear issue.
What & why
Desktop chat shows
zzzfor idle agents, a liveWorking for Xm Xsline while busy, and outgoing messages above the composer. Esc interrupts terminal-backed agents while preserving the draft. The clock pauses for pending questions and permissions.Where to look
Uncertain deliveries remain visible until a fresh transcript receipt confirms them. Path changes, truncation, and partial historical lines cannot falsely acknowledge a send; hidden slash commands can confirm delivery. A late receipt preserves edited drafts and newer delivery notices.
Verification
dotnet buildforCapacitor.App.Tests.UnitandCapacitor.Cli.Core.Tests.Unit: zero warnings/errors, including a full desktop rebuild.dotnet publish src/Capacitor.Cli/Capacitor.Cli.csproj -c Release: passed without trimming/AOT warnings. Local Homebrew libraries emitted macOS deployment-target linker warnings.git diff --checkandbash scripts/check-linear-ids.shpassed.