Mobile Audit#564
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
|
Warning Review limit reached
More reviews will be available in 29 minutes and 40 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more credits in the billing tab to continue. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (10)
📒 Files selected for processing (69)
✨ 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 |
|
@copilot review but do not make fixes |
|
@codex review |
|
Codex Review: Didn't find any major issues. Breezy! 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". |
Summary
Describe the change.
What Changed
Key files and behaviors.
Validation
How you tested.
Risks
Anything to watch.
Greptile Summary
This PR is a broad mobile audit covering three main areas: a new
turnActivelive-hint mechanism that bridges the gap between byte-capped snapshot tails and the changeset pump for streaming affordances, Cursor SDK agent-rotation recovery for cross-resume continuity, and extensive iOS UI refactoring for Lanes, Work chat, and Files screens.turnActivestreaming hint: Host now resolves live session state at subscribe time and ships it in thechat_subscribeack; iOSSyncServiceseedschatTurnActiveHintBySessionfrom the ack and keeps it live via status/done events;WorkChatSessionViewcombines transcript and hint intoisStreamingTurnto drive the stop button, activity indicator, and streaming markdown path.preserveProviderResumeStateextended to Cursor,stageCursorSdkAgentRotationRecoveryinjects continuity context when the SDK opens a different agent on resume, and the pool-compaction teardown reason is corrected fromhandle_closetopool_compactionto avoid spurious state preservation.LaneDetailGitActionsPane; Work chat stop/send buttons are redesigned for desktop parity; changed-files panels are collapsed by default like tool-call panels;workToolArgPreviewandworkSummarizeInlineTextprovide richer tool-call collapsed previews;git.mergeContinueandgit.mergeAbortremote commands are wired end-to-end.Confidence Score: 5/5
Safe to merge; all logic changes are well-commented, tested, and backward-compatible.
The
turnActivehint mechanism is covered by a dedicated integration test covering active, awaiting-input, and missing-summary cases. Cursor resume changes are additive and gated onreasonAllowsPreservation. UI refactoring is visual parity work with no data-flow regressions identified. The pool-compaction teardown-reason rename is a correct semantic fix. No data-loss paths, no auth changes.No files require special attention.
Important Files Changed
turnActivefield toSyncChatSubscribeSnapshotPayloadand two new git remote command actions (git.mergeContinue,git.mergeAbort); backward-compatible additions.turnActivestate onchat_subscribeack by resolving it immediately before each send viaresolveLiveStatusFields; avoids I/O window race by keeping resolution microtask-only.preserveProviderResumeStateto Cursor sessions, addsstageCursorSdkAgentRotationRecoveryfor cross-resume agent-ID drift, changes pool compaction teardown reason fromhandle_closetopool_compaction, and fixes system-context prompt label.chatTurnActiveHintBySessiondictionary and leading-edge chat-event coalescing (150 ms window, was 420 ms trailing-only); hint seeded from subscribe ack and kept live via status/done events; cleared on disconnect/project switch.isStreamingTurncombining transcript and live hint; movesartifactDrawerPresentedstate up to parent; redesigns stop/send buttons; fixes queue-hint display when pending steers are present.workRailLogoProvider,workUpstreamBrand,workModelRowLogoProvider,workToolArgPreview, andworkSummarizeInlineTexthelpers.pendingSteerTextsfilter so local-echo messages matching queued steer text are suppressed from the timeline, preventing double-rendering of the same message.Sequence Diagram
sequenceDiagram participant iOS as iOS SyncService participant Host as Sync Host participant Chat as AgentChatService iOS->>Host: "chat_subscribe { sessionId }" Host->>Chat: getSessionSummary(sessionId) Chat-->>Host: "{ status: active } | null" Host-->>iOS: "chat_subscribe ack { turnActive: true | absent }" iOS->>iOS: updateChatTurnActiveHint(sessionId, true) iOS->>iOS: markChatEventsChanged(immediate: true) Host->>iOS: "chat_event { status: started }" iOS->>iOS: "updateChatTurnActiveHintFromEvent turnActive=true" Host->>iOS: "chat_event { done }" iOS->>iOS: "updateChatTurnActiveHintFromEvent turnActive=false" iOS->>iOS: markChatEventsChanged(immediate: true) Note over iOS: WorkChatSessionView isStreamingTurn combines transcriptOrHintIndicatesActiveTurnReviews (2): Last reviewed commit: "ship: iteration 1 - address Greptile att..." | Re-trigger Greptile