Skip to content

Preserve companion sends and recover saved source receipts - #2857

Open
Chris0Jeky wants to merge 3 commits into
codex/2808-original-source-contextfrom
codex/2808-companion-continuity
Open

Preserve companion sends and recover saved source receipts#2857
Chris0Jeky wants to merge 3 commits into
codex/2808-original-source-contextfrom
codex/2808-companion-continuity

Conversation

@Chris0Jeky

@Chris0Jeky Chris0Jeky commented Sep 9, 2026

Copy link
Copy Markdown
Owner

Card companion sends now wait for unsaved thinking to be saved, so the message cannot silently use an older shared draft. Navigation remains in the thinking workspace while a send is pending, and the dialog explains that closing the browser does not cancel an accepted server request.

A failed post-send receipt read keeps the successful response and offers a GET-only retry with session/write-generation checks. Preview expiry uses the server receipt interval minus elapsed request time, avoiding client wall-clock skew. Source choice and Review/Apply remain explicit. Related to #2808; stacked on #2855.

Validation: 6,315 frontend tests passed (3 existing skips,407 files);99 targeted tests; production build/typecheck, scoped lint, doc links and governance passed. Chromium passed unsaved-thinking Ctrl+Enter prevention, a held real Mock POST/navigation guard, failed receipt GET then retry with one POST, saved source receipts,375px overflow/axe and unchanged card. Initial new-test mock/type fixtures failed and were corrected before these passes. Independent bounded Luna review found no direct HIGH/CRITICAL defects across the send paths, refresh races, navigation and preview expiry. Hosted checks pending.

Not verified: physical devices or live-provider quality. No backend runtime change or user database mutation.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 9, 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-09T23:01:13.730052Z 1b836c9 New commits
ℹ️ 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.

@Chris0Jeky Chris0Jeky moved this from Pending to Review in Taskdeck Execution Sep 9, 2026

@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: 30b5fb64af

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

<ChatComposeBar
:message-content="messageContent"
:sending-message="sendingMessage"
:send-blocked="thinkingDirty || refreshingReceipt"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Disable retained-instruction sends while blocked

When a bound session still has a retained board-recovery turn and the embedded thinking deck is dirty—or while a receipt retry is running—this prop disables only ChatComposeBar. The Continue retained instruction control in ChatMessageList.vue remains enabled, but its handler reaches sendMessageToSession, which now returns immediately for the same sendBlocked/refreshingReceipt conditions, so clicking the visible action silently does nothing. Pass the blocked state to that send control and disable it as well.

AGENTS.md reference: frontend/AGENTS.md:L5-L5

Useful? React with 👍 / 👎.

@Chris0Jeky

Copy link
Copy Markdown
Owner Author

PR2857 comment3973669791: MEDIUM usability, non-blocking. The retained-instruction button stays enabled while shared thinking is dirty or a receipt refresh runs, but the common send guard refuses the POST. This is an enabled control that does nothing, not an unguarded send or data-loss path. Track disabling/explaining this control in the #2808 continuation; do not reopen the completed parent review loop.

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

Labels

None yet

Projects

Status: Review

Development

Successfully merging this pull request may close these issues.

1 participant