Skip to content

fix: report paused PTY delivery accurately - #120

Open
swaynehales wants to merge 9 commits into
aannoo:mainfrom
swaynehales:fix/antigravity-accept-edits-banner
Open

swaynehales wants to merge 9 commits into
aannoo:mainfrom
swaynehales:fix/antigravity-accept-edits-banner

Conversation

@swaynehales

@swaynehales swaynehales commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Summary

  • recognize Antigravity's accept-edits banner as an empty prompt
  • report blocked local PTY delivery as queued instead of sent
  • classify PTY and hook approval contexts as paused delivery
  • report unresolved local PTY delivery as pending instead of sent
  • preserve debounce for transient gates and publish durable blockers promptly
  • make shared gate-status ownership atomic and instance-bound
  • keep feedback synchronization collective and bounded

Verification

  • cargo fmt -- --check
  • cargo clippy --all-targets --all-features -- -D warnings
  • cargo test --all-targets --all-features -- --test-threads=1
  • 2,241 passed; 16 ignored
  • live approval gate reports Queued; delivery paused
  • live Claude, Codex, Droid, and Antigravity matrix: 4/4 received and answered

Antigravity 1.1.17 renders

    > Accept-edits mode: file edits auto-approved (shift+tab to cycle)

on the prompt row in normal intensity, indistinguishable from a user draft
by the dim check alone. get_antigravity_input_text reports it as pending
input, so require_prompt_empty fails permanently on an idle screen: launch
is classified blocked with screen_settled_not_ready, and idle delivery
never fires until a turn is submitted by hand.

Recognize the banner as placeholder text, but only while the ready footer
is visible. require_prompt_empty stays enabled globally -- relaxing it
would let delivery overwrite or submit over a real draft.

Recognition is a prefix relation in both directions: the text must open
with the banner's stable marker, and the full banner must in turn start
with the text. That accepts the banner whole and truncated by a narrow
terminal, while rejecting anything continuing past its end, so a draft
quoting or extending the banner stays user input. A terminal narrow enough
to cut inside the marker fails closed to current behavior.

Regression coverage: standard banner, narrow-terminal wrapping, banner in
scrollback followed by a real draft, the observed out-of-credits footer
where the ready pattern is absent and the banner must still block, banner
text with a trailing draft, and a terminal cut inside the marker.
Classify the shared tui status family as queued delivery, synchronize first-send feedback within one bounded collective deadline, and retain healthy-first mixed output.

Publish durable gates promptly while debouncing transient gates, and make delivery-loop status ownership atomic, instance-bound, and retryable without clobbering hook or tool writers.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5be0c368dc

ℹ️ 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".

Comment thread src/commands/send.rs
Comment on lines +250 to +253
if is_delivery_paused_status_context(&data.status_context) {
paused.push(recipient);
} else {
healthy.push(recipient);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Include PTY approval blocks in paused feedback

When an approval dialog is visible, publish_approval_status records status = "blocked" with status_context = "pty:approval" (src/pty/shared.rs:216-225). The delivery gate then returns not_idle, and set_gate_status_if_listening cannot publish a tui:* context because the row is not listening. This condition therefore classifies the recipient as healthy after the synchronization timeout and prints Sent to even though the message remains queued behind the approval; treat the blocked approval context as paused as well.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in df65410 and bab2bcc. Approval-blocked rows with pty:approval, approval, and tui:* contexts now report queued delivery; regression coverage is included.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 1, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-01T01:10:10.277684Z 5be0c36 PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant