feat: Add busy-stall focus rescue and richer server_busy / compile guidance#1721
Conversation
Add busy-stall Unity focus rescue during persistent server_busy retries, enrich server_busy error envelopes with editor activity and contextual NextActions, and surface execute-dynamic-code reload guidance when compile stops on externally changed Scene files. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Warning Review limit reached
Next review available in: 14 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (19)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Record the busy-stall focus test as the pre-fix Red repro and add compile response tests for additional ExternalSceneChangeResolver message shapes. Co-authored-by: Cursor <cursoragent@cursor.com>
…uidance Lower the default busy-stall focus threshold to 5s so it fires within the 10s server_busy retry window, replace misleading external-scene NextActions, and pass live compile/import flags through the editor readiness policy. Co-authored-by: Cursor <cursoragent@cursor.com>
Summary
server_busyretries persist for 5s within the 10s busy retry window, focus Unity once viaconnectionRetryFocusController(busy_stall) and restore focus on exit.UNITY_SERVER_BUSYCLI errors withEditorActivity(compile/import/play state when true) and contextualNextActions.NextActionswith anexecute-dynamic-codeEditorSceneManager.OpenSceneexample and unsaved-change guidance.Pre-implementation verification (new protocol)
B-7a — busy path focus rescue repro (TDD Red → Green)
focusController.tryFocus; terminal focus path also skipsserver_busy.TestSendWithTransientConnectionRetryFocusesOnceAfterPersistentBusywas Red on pre-fix code (focusCallCountstayed 0).finishBusyRetrybounds busy retries toserverConnectionRetryDefaultTimeout(10s), so the stall threshold must stay below that window. Default is 5s (focus at 5s, ~5s retry remaining).TestDefaultBusyFocusStallThresholdFitsWithinBusyRetryWindowguards this ratio.B-7b — discriminable Unity states on
server_busyisCompilingEditorApplication.isCompilingviaEditorRuntimeStateServiceisUpdatingEditorApplication.isUpdatingisPlaying/isPausedsecondsSinceLastMainThreadTickEditorMainThreadLivenessTrackerisDomainReloadInProgressserver_busypathB-8 — external Scene error wording (source-backed)
ExternalSceneChangeResolver.csmessages containing"externally changed Scene files":CreateUnresolvedMessage(line 124)CreateReloadFailureMessage(line 132)CreateDirtySaveBeforeReloadFailureMessage(line 140)These occur after auto save/reload attempts fail (default path without
--stop-on-external-scene-changes).CreateStoppedMessage(line 116) uses different wording and does not match the NextActions gate.NextActions[1] advises on unsaved in-editor conflicts (not a misleading
--stop-on-external-scene-changesrerun hint).Fable review fixes (bc20a6d)
defaultBusyFocusStallThreshold30s → 5s; constant regression test added.Singlediscards unsaved editor changes.editorState.IsCompiling/IsUpdatingthrough without mutual-exclusion literals.Verification
scripts/check-go-cli.shpass (includesTestDefaultBusyFocusStallThresholdFitsWithinBusyRetryWindow+ busy-stall focus test)dist/darwin-arm64/uloop compile— 0 errors / 0 warningsCompileResponseFactoryTests+ToolExecutionEditorReadyPolicyTests— 13 passedRelease triggers
cli/commontouched with project-runner + dispatcher companions;scripts/stamp-release-inputs.shrun in prior commit.