Preserve incremental review log updates#83
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e7eac9ee97
ℹ️ 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".
…aries Block text with trailing newlines used to absorb the separator between blocks, so command panels (which replace block text with a placeholder) lost the boundary and rendered on the same line as neighboring text, and streamed output flipped the spacing around command rows. Normalize block text in the document builder and always separate visible blocks with one blank-line gap. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Adjacency-based mirror suppression missed reasoning mirrors that arrive after an intervening item (for example a command), duplicating the reasoning text, and compared later entries against a stale previous key. Track rendered reasoning entries per scope and text, and let each entry consume exactly one later mirror with the counterpart payload kind, so late mirrors are suppressed while legitimately repeated reasoning still renders. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Restarted reviews relied on the CodexKit default parameter for the delivery mode. Pass .inline explicitly so the restart path carries the same delivery contract as fresh review starts. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ReviewRunIDArgument uses the package-scoped nilIfEmpty extension but relied on leaky member visibility from sibling files' imports. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b5580ac1d2
ℹ️ 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".
A wrapper payload can carry both a top-level event envelope type and the nested item/payload type. Returning the envelope type first hid the reasoning payload kind from mirror deduplication, so wrapped live notifications rendered mirrored reasoning twice. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Normalizing block text inside the document builder also rewrote sourceText, so expanded command panels lost leading/trailing newlines and an all-newline output collapsed to an empty block. Move rendered normalization into the styler, keep sourceText raw, and read panel output through the block's source range. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Streaming updates supersede in-flight render tasks, so applied display documents can skip revisions. The scroll view only accepted the single-step lastChange or a pure tail append, so any mid-document change after a skipped revision fell back to a full reload, recreating command panel views and rebuilding TextKit layout on every burst. Recompute the block replacement against the display document that is actually on screen, and log when an incremental render still degrades to a reload. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Package.resolved was generated with the local dependencies/CodexKit checkout present, so fresh checkouts resolving the remote fallback revision rewrote the resolved files and broke builds with automatic resolution disabled. Commit the resolved state of a checkout without the local dependency. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Codex Review: Didn't find any major issues. Already looking forward to the next diff. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
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". |
Purpose
Fix review log rendering regressions where mirrored Codex reasoning entries could duplicate text, where paragraph spacing around command rows was unstable (command chips merging with neighboring paragraphs, gaps flickering while output streams), and where streaming bursts degraded every display update into a full TextKit reload that recreated command panel views.
Changes
agent_reasoning/reasoningmirror entries by consuming them as pairs per scope and text, so late mirrors that arrive after other items (for example commands) are suppressed while legitimately repeated reasoning still renders. Wrapper payloads prefer the nested item kind over the event envelope type.delivery: .inlineexplicitly on prepared review restarts so the restart path carries the same delivery contract as fresh review starts.CodexReviewKitinReviewRunIDArgumentinstead of relying on leaky member visibility for the package-scopednilIfEmptyextension.dependencies/CodexKitso fresh clones resolve the pinned remote CodexKit without rewritingPackage.resolved.Testing
swift test --build-system swiftbuild --no-parallelxcodebuild test -project Tools/ReviewMonitor/CodexReviewMonitor.xcodeproj -scheme CodexReviewMonitor -destination 'platform=macOS,arch=arm64' CODE_SIGNING_ALLOWED=NO CODE_SIGNING_REQUIRED=NOgit diff --check