feat: migrate user menu and fix message performance#67
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
Pull request overview
Migrates the in-app User Guide and onboarding to a more polished, slide/markdown-driven UX, simplifies memory injection by dropping the per-memory LLM "should inject" classifier in favor of vector-score retrieval thresholds, and adds extensive performance/diagnostics logging across agent spawn paths. Also prunes orphaned briefing metadata at launch and adds a macOS provisioning profile step to CI.
Changes:
- Replace the hand-coded
ManualTopicview with a markdown-bundle-drivenUserManualView, and rebuildOnboardingViewas a multi-slide flow with mock previews and a CLI-setup slide. - Refactor memory subsystem: drop
determineMemoryInjectionIntent/fallbackShouldInjectMemoryIntoSystemPrompt/ intent cache; switch extraction prompt to user-messages-only; addMemoryRetrievalModewith score thresholds passed intoMemoryService.search; filter briefings to known projects and prune orphans from SwiftData. - Add timing/diagnostic logs to Claude, Codex, and ACP spawn/stream paths and to AppState stream preflight; CI now installs a macOS provisioning profile.
Reviewed changes
Copilot reviewed 38 out of 38 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| RxCode/Views/UserManualView.swift | Rewrites manual as markdown-driven view with localized resource loader |
| RxCode/Views/Onboarding/OnboardingView.swift | Multi-slide onboarding with mock previews; CLI check moved to last slide |
| RxCode/Views/Sidebar/BriefingView.swift | Filters briefing/summary items to known projects |
| RxCode/Views/SettingsMemoryViews.swift | Adds Retrieval-mode picker for memory |
| RxCode/App/AppState.swift | Adds MemoryRetrievalMode, removes intent cache |
| RxCode/App/AppState+Agents.swift | Drops system-prompt memory injection classifier; uses related-hit context only |
| RxCode/App/AppState+Lifecycle.swift | Prunes orphan briefing metadata on launch; removes auto-completion of onboarding |
| RxCode/App/AppState+CrossProject.swift | Threads memory mode/threshold into search; adds extensive preflight logs |
| RxCode/App/AppState+SessionLifecycle.swift | Switches memory ops API to userMessages |
| RxCode/App/AppState+MemoryIntent.swift | Deleted (intent fallback heuristics removed) |
| RxCode/Services/ThreadStore.swift | Adds deleteBriefingMetadata(excludingProjectIds:) |
| RxCode/Services/OpenAISummarizationService.swift | Rewrites memory extraction prompt around user messages; removes injection-intent prompt |
| RxCode/Services/MemoryService.swift | Adds minScore filter and timing logs to search |
| RxCode/Services/FoundationModelSummarizationService.swift | Drops injection-intent; switches to userMessages |
| RxCode/Services/ClaudeService+Summaries.swift | Same API change |
| RxCode/Services/ClaudeService+Process.swift | Spawn/prompt timing logs |
| RxCode/Services/CodexAppServer+Summaries.swift | Same API change |
| RxCode/Services/CodexAppServer+Turn.swift | First-stdout-line timing log |
| RxCode/Services/CodexAppServer+Process.swift | Spawn timing logs |
| RxCode/Services/ACPService.swift | Adds stdoutLineCount to session state |
| RxCode/Services/ACPService+Spawn.swift | Reformats spawn logs with elapsed timing |
| RxCode/Services/ACPService+Protocol.swift | First-stdout-line log |
| RxCode/Resources/user_manual_*.md | New EN/zh-CN bundled manual pages |
| RxCode/Resources/Localizable.xcstrings | New string entries / marks one stale |
| RxCodeTests/MemoryIntentTests.swift | Rewrites tests around new memory extraction prompt and parsing |
| RxCode.xcodeproj/project.pbxproj | Adds empty UserMenus group |
| .github/workflows/build.yaml | Installs macOS provisioning profile for signing |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| let prunedBriefingMetadata = threadStore.deleteBriefingMetadata( | ||
| excludingProjectIds: Set(projects.map(\.id)) | ||
| ) | ||
| if prunedBriefingMetadata.threadSummaries > 0 || prunedBriefingMetadata.branchBriefings > 0 { | ||
| threadSummaryRevision &+= 1 | ||
| branchBriefingRevision &+= 1 | ||
| logger.info("Pruned orphan briefing metadata summaries=\(prunedBriefingMetadata.threadSummaries) briefings=\(prunedBriefingMetadata.branchBriefings)") | ||
| } |
| let messages = userMessages.enumerated().map { idx, message in | ||
| "### User message \(idx + 1)\n\(message)" | ||
| }.joined(separator: "\n\n") |
|
|
||
| persistedQueues = threadStore.loadAllQueues() | ||
|
|
f9085b9 to
f60b9d4
Compare
OnboardingView.swift exceeded the 800-line lint limit. Extract each slide preview (CLI, ACP, summarization, mobile pairing, MCP) and the shared mock components into their own files alongside the main view. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
🎉 This PR is included in version 1.13.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
No description provided.