Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Team Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Warning Your free Security trial is over. An organization admin can activate Security or dismiss this notice. Comment |
There was a problem hiding this comment.
Two issues in the new context-limit composer banner: it passes fields ComposerBannerStackItem does not declare (urgent, actionClassName), and its className targets Alert slots that the composer banner stack never renders, so the intended emphasis is silently dropped while py-4 overrides the banner primitive's seam padding.
Posted via Macroscope — UI Consistency
There was a problem hiding this comment.
Reviewed the changed TypeScript against the Effect service conventions. Two findings, both on the new handover path: a text-generation operation bolted onto the provider-snapshot registry instead of the existing TextGeneration service, and an RPC error whose message is derived from cause.message.
Posted via Macroscope — Effect Service Conventions
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This is a substantial new cross-platform handover capability that changes existing send/compaction behavior, adds provider-backed generation and durable draft recovery, and introduces a new authenticated RPC. The change also touches the server authorization package, so its runtime and access-control implications require human review. You can add or adjust custom eligibility rules. Learn more. |
There was a problem hiding this comment.
Two places in this PR acquire Effect services through Effect.context<never>() + a context as Context.Context<never> cast instead of yield* Foo.Foo, which erases the dependency from the layer's requirement type and turns a missing layer into a silent runtime capability downgrade.
Posted via Macroscope — Effect Service Conventions
There was a problem hiding this comment.
UI consistency review of the changed web surfaces (ChatView.tsx, settings/SettingsPanels.tsx, settingsSearch.ts, usage/*, lib/contextWindow.ts).
The shared-primitive usage is consistent: the new composer banner uses ComposerBannerStackItem with variant/priority (the earlier excess-prop and dead-slot-override issues are fixed), the usage alert uses Alert/AlertTitle/AlertDescription with an existing warning variant and controlAlignment="first-line", and the new settings row follows the established SettingsRow + NumberField (size="sm", group with decrement/input/increment, unit suffix) pattern with searchableSetting wiring.
Two behavioral findings on the new context-limit gate are noted inline.
Posted via Macroscope — UI Consistency
There was a problem hiding this comment.
Two issues in apps/web/src/components/ChatView.tsx where the new token-limit gate changes composer behavior beyond blocking a new turn. Everything else in the in-scope web files (shared Alert/Button/NumberField usage, banner stack item shape, settings row + search anchor, Tailwind ownership) looks consistent, and the earlier compaction/gear-routing points are addressed.
Posted via Macroscope — UI Consistency
There was a problem hiding this comment.
One new finding this run (inline). The two findings posted on commit 561680f — the sendDisabledReason path also blocking pending-user-input answers, and the DEFAULT_SERVER_SETTINGS fallback making the banner claim a 250,000-token limit the thread's server never set — are unchanged at this head and are not reposted.
Posted via Macroscope — UI Consistency
9fd4585 to
7b6d207
Compare
7b6d207 to
bb8eab3
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 89a2929. Configure here.
Bugbot is paused — on-demand spend limit reachedBugbot uses usage-based billing for this team and has hit its on-demand spend limit. A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue. |
614f3ec to
920058b
Compare
Bugbot is paused — on-demand spend limit reachedBugbot uses usage-based billing for this team and has hit its on-demand spend limit. A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue. |
b2dbb29 to
a13d34a
Compare
…0095) Prerequisite squashed from pingdotgg#10095 at 61374dc. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…dotgg#10097) Prerequisite squashed from pingdotgg#10097 at 1061345. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
a13d34a to
623afe9
Compare
|
Thanks for the PR. We're not taking changes to the orchestration and provider layers right now: that part of the server is being rewritten for V2, and merging into the current code would either conflict with or be thrown away by that work. Closing for now. If this is still an issue once V2 lands, please reopen (or open a fresh PR against the new code) and we'll take a proper look. |

When a thread reaches its context limit, the user has no way to carry the work into a fresh thread without retyping the state by hand.
This adds a handover action on web and mobile. The server generates a continuation brief through an enabled Codex instance (
orchestration.generateHandover, advertised by thethreadHandoverGenerationcapability), and the client opens it as an unsent draft in a new thread in the same checkout, so the user can pick the model and reasoning level before sending. Other providers return a typed "not supported" error. Web persists the generated brief before navigating and shows saved state after remount. Mobile records the import in a durable per-thread draft, so restarting or retrying reopens that draft without duplicating the brief or overwriting later edits.Depends on unmerged PRs. This branch is cumulative: its first two commits are squashed copies of #10095 (hard context admission, at
61374dce6) and #10097 (shared concurrency reservations, at1061345fe). Merge those first. The handover delta is the last commit only. This stays a draft until both land.Rebased linearly onto
mainat211618fd9, with no merge commits. Conflict resolutions adopt upstream's composer imports, the mobileGlassBlurTargetContextwrapper, and thethreadPullRequests/pullRequestStackActionscapabilities. They also fit #10097's reservations into the compaction queue from #11107. Messages sent during compaction are queued ahead of the context-admission and reservation gates, so an over-limit thread no longer rejects them. They replay after compaction lowers usage, and each replay takes its own slot. A newProviderCommandReactortest covers this.Verification on
623afe900:ProviderCommandReactor, the WebSocket missing-thread handover error inserver.test.ts)tsc --noEmitpasses for contracts, shared, client-runtime, server, web, and mobile.vp linton changed files: 0 errors.Still pending: before/after web and mobile screenshots, and a live provider handover run. The cross-provider (GPT-6 Astra) review was skipped because Codex weekly quota was below 10%.
Coordination trace: T3 thread 272cea79-ab91-4570-91a4-10aee73ba516
Originally implemented with GPT-6 Astra in the Codex harness; rebased and verified with Claude Opus 5 in Claude Code.
🤖 Generated with Claude Code