Skip to content

feat: add plan mode and deep link support to mobile#26

Merged
sirily11 merged 1 commit into
mainfrom
multiple-registration
May 20, 2026
Merged

feat: add plan mode and deep link support to mobile#26
sirily11 merged 1 commit into
mainfrom
multiple-registration

Conversation

@sirily11

Copy link
Copy Markdown
Contributor

No description provided.

Copilot AI review requested due to automatic review settings May 20, 2026 07:16
@vercel

vercel Bot commented May 20, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
rxcode Ready Ready Preview, Comment May 20, 2026 7:16am

Request Review

@sirily11 sirily11 enabled auto-merge (squash) May 20, 2026 07:16
@autopilot-project-manager autopilot-project-manager Bot added the enhancement New feature or request label May 20, 2026
@sirily11 sirily11 merged commit 28f19f0 into main May 20, 2026
8 checks passed
@sirily11 sirily11 deleted the multiple-registration branch May 20, 2026 07:19

Copilot AI 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.

Pull request overview

This PR extends RxCode’s mobile companion and sync protocol to support plan mode workflows and notification deep links, while also enhancing desktop→mobile snapshots (usage + host metrics) and updating the marketing website to highlight the mobile app.

Changes:

  • Mobile: add APNs deep-link navigation, per-thread plan-mode configuration, plan review/decision UI, multi-Mac pairing management, and refreshed chat/briefing/settings UIs.
  • Desktop + Sync: add plan-decision transport, snapshot fields for usage + host metrics, and improve relay reconnect safety.
  • Website: add an “Agent Collaboration” feature card and a “Mobile Companion” section (screenshots + App Store badge).

Reviewed changes

Copilot reviewed 30 out of 36 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
website/public/download-appstore.svg Adds App Store download badge asset for the mobile section.
website/app/page.tsx Adds mobile companion section, screenshots grid, and new feature card inclusion.
website/app/globals.css Adds keyframes/styles for the agent-collaboration diagram animation.
website/app/agent-talk-feature.tsx Introduces animated “Agents that talk to each other” feature card.
RxCodeMobile/Views/RootView.swift Adds pending deep-link consumption and shared navigation helper.
RxCodeMobile/Views/OnboardingView.swift Adds optional cancel button + pairing-completion callback for in-settings pairing.
RxCodeMobile/Views/NewThreadSheet.swift Sends per-thread agent config (incl. plan mode) in new-session requests; updates config UI bindings.
RxCodeMobile/Views/MobileSettingsView.swift Adds multi-Mac pairing management, usage/host-metrics sections, and summarization pickers.
RxCodeMobile/Views/MobileChatView.swift Adds plan banner + plan sheet, improves auto-scroll behavior, and wires plan decisions.
RxCodeMobile/Views/MobileBriefingView.swift Refreshes briefing list UI with glass-style cards.
RxCodeMobile/Views/MobileBriefingDetailView.swift Refreshes briefing detail UI with glass-style cards and thread cards.
RxCodeMobile/State/MobileAppState.swift Adds deep-link state, multi-desktop pairing persistence, plan extraction/decision sending, and host/usage snapshot fields.
RxCodeMobile/RxCodeMobileApp.swift Drives relay connect/disconnect off scenePhase.
RxCodeMobile/AppDelegate.swift Handles notification taps (including cold launch) and decrypts fallback payloads.
RxCode/Views/Toolbar/RxCodeToolbar.swift Switches right-sidebar visibility to persisted @AppStorage key.
RxCode/Views/RunProfile/RunProfileToolbarGroup.swift Opens run inspector via persisted right-sidebar visibility.
RxCode/Views/ProjectWindowView.swift Lazily starts inspector based on persisted right-sidebar visibility.
RxCode/Views/MainView.swift Updates Cmd+K logic and lazy inspector startup to use persisted right-sidebar visibility.
RxCode/Views/Inspector/RightInspectorPanel.swift Keys panel visibility off @AppStorage and avoids forcibly re-opening it.
RxCode/Services/SystemMetricsService.swift Adds desktop CPU/memory/thermal sampling for mobile “Computer Status”.
RxCode/Services/NotificationService.swift Strips Markdown from assistant-summary notification bodies before posting.
RxCode/Services/MobileSyncService.swift Routes incoming plan decisions to the desktop app via NotificationCenter.
RxCode/App/AppState.swift Broadcasts usage + host metrics in snapshots; applies plan decisions from mobile; fixes cancel-stream redirect edge case; persists plan decision summaries into mobile messages.
Packages/Tests/RxCodeSyncTests/PayloadTests.swift Adds snapshot tests for usage + host metrics decoding/compatibility.
Packages/Tests/RxCodeCoreTests/MarkdownStrippingTests.swift Adds unit tests for Markdown stripping used in notifications.
Packages/Sources/RxCodeSync/Transport/RelayClient.swift Prevents reconnect races from opening multiple sockets / duplicate relay registrations.
Packages/Sources/RxCodeSync/Protocol/Payload.swift Adds plan-decision payload, usage + host-metrics snapshot fields, summarization options, and per-thread new-session config fields.
Packages/Sources/RxCodeCore/WindowState.swift Introduces AppStorageKeys and removes WindowState-owned inspector visibility flag.
Packages/Sources/RxCodeCore/Utilities/MarkdownStripping.swift Adds stripMarkdown utility for notification-safe plain text.
Packages/Sources/RxCodeCore/Models/RateLimitUsage.swift Makes RateLimitUsage Codable/Equatable for sync transport.
Packages/Sources/RxCodeChatKit/PlanSheetView.swift Makes PlanSheetView iOS-compatible (UIPasteboard, frame gating, imports).
.gitignore Ignores Playwright MCP workspace folder.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +188 to +195
/// Consume a pending APNs deep link (set by a notification tap) and navigate
/// to its thread. Called both when the link changes and when the paired view
/// first appears, since a link can already be set at cold launch.
private func consumePendingDeepLink() {
guard let link = state.pendingDeepLink else { return }
state.pendingDeepLink = nil
navigate(toSession: link.sessionID, projectID: link.projectID)
}
Comment on lines +9 to 13
@State private var showPairingSheet = false
@State private var desktopPendingRemoval: PairedDesktop?
@State private var modelDraft = ""
@State private var acpClientDraft = ""

Comment on lines +22 to +29
// Per-thread agent config. Seeded once from the desktop's current settings,
// then applied only to the thread this sheet creates (no longer mutates the
// desktop's global defaults).
@State private var planModeEnabled = false
@State private var selectedProvider: AgentProvider?
@State private var selectedModelID: String?
@State private var selectedPermissionMode: PermissionMode = .default
@State private var didSeedConfig = false
Comment on lines +67 to +73
@Test("snapshot carries agent usage")
func snapshotCarriesAgentUsage() throws {
let payload = Payload.snapshot(
SnapshotPayload(
projects: [],
sessions: [],
usage: MobileUsageSnapshot(
@sirily11

Copy link
Copy Markdown
Contributor Author

🎉 This PR is included in version 1.7.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

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

Labels

enhancement New feature or request released

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants