feat: add secrets support#71
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
Pull request overview
Adds end-to-end encrypted secrets management, plus mobile CI status sync and auth/notification reliability updates.
Changes:
- Adds secrets crypto/models/flows, macOS secrets service/key vault, and SwiftUI management/download/upload views.
- Syncs desktop CI status snapshots to mobile and renders CI chips in briefing views.
- Updates RxAuth token refresh behavior, notification response text fallback/logging, analytics, localization, and RxAuthSwift pinning.
Reviewed changes
Copilot reviewed 37 out of 37 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
Packages/Sources/RxCodeCore/Secrets/SecretsCrypto.swift |
Adds interoperable crypto primitives for secrets encryption. |
Packages/Sources/RxCodeCore/Secrets/SecretsFlows.swift |
Adds enrollment and DEK unwrap/wrap flows. |
Packages/Sources/RxCodeCore/Secrets/SecretsModels.swift |
Adds DTOs for secrets APIs. |
Packages/Tests/RxCodeCoreTests/SecretsCryptoTests.swift |
Adds crypto interop and round-trip tests. |
RxCode/Services/Secrets/SecretsService.swift |
Adds secrets REST client. |
RxCode/Services/Secrets/SecretsPasskeyAuthenticator.swift |
Adds passkey PRF-based KEK vault. |
RxCode/App/AppState+Secrets.swift |
Wires high-level secrets actions into AppState. |
RxCode/App/AppState.swift |
Adds secrets state/services. |
RxCode/Views/Secrets/AddSecretSheet.swift |
Adds secret upload UI. |
RxCode/Views/Secrets/SecretsDownloadSheet.swift |
Adds project secret download UI. |
RxCode/Views/Secrets/SecretsEnvironmentDetailView.swift |
Adds environment file list/editor UI. |
RxCode/Views/Secrets/SecretsManageSheet.swift |
Adds top-level secrets management sheet. |
RxCode/Views/Secrets/SecretsRepoDetailView.swift |
Adds repo environment management UI. |
RxCode/Views/Settings/AutopilotSettingsTab.swift |
Adds secrets section to settings. |
RxCode/Views/Sidebar/ProjectTreeView.swift |
Adds per-project secret download menu. |
RxCode/Services/RxAuthService.swift |
Coalesces refresh token calls and adds cached access-token fast path. |
RxCode/Views/Onboarding/RxAuthSignInView.swift |
Logs passkey sign-in failures to analytics. |
Packages/Sources/RxCodeCore/Utilities/AnalyticsService.swift |
Adds passkey sign-in error event. |
RxCode/App/AppState+CIStatus.swift |
Avoids no-op CI status revisions. |
RxCode/App/AppState+MobileSnapshots.swift |
Includes CI statuses in mobile snapshots. |
RxCode/App/AppState+MobileSync.swift |
Tracks CI revision for mobile sync invalidation. |
Packages/Sources/RxCodeSync/Protocol/Payload.swift |
Adds optional CI status snapshot field. |
Packages/Sources/RxCodeSync/Protocol/Payload+RemoteManagement.swift |
Adds mobile CI status payload type. |
Packages/Tests/RxCodeSyncTests/PayloadTests.swift |
Extends payload round-trip coverage for CI statuses. |
RxCodeMobile/State/MobileAppState.swift |
Stores synced CI status by project. |
RxCodeMobile/State/MobileAppState+Inbound.swift |
Applies incoming CI statuses. |
RxCodeMobile/State/MobileAppState+Sync.swift |
Clears CI status on disconnect. |
RxCodeMobile/Views/MobileBriefingView.swift |
Renders CI chips in mobile briefing lists/cards. |
RxCodeMobile/Views/MobileBriefingDetailView.swift |
Renders linked CI chip in briefing detail. |
RxCode/App/AppState+SessionLifecycle.swift |
Uses latest non-empty assistant text for notifications. |
RxCode/App/AppState+CrossProject.swift |
Adds response notification diagnostics. |
RxCode/Services/NotificationService.swift |
Adds notification body diagnostics. |
RxCode/Resources/Localizable.xcstrings |
Adds extracted strings for secrets UI. |
RxCodeMobile/Resources/Localizable.xcstrings |
Adds mobile CI status strings. |
RxCode.xcodeproj/project.pbxproj |
Pins RxAuthSwift to exact version. |
RxCode.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved |
Updates RxAuthSwift resolved package. |
RxCode.xcodeproj/xcshareddata/xcschemes/RxCodeMobile.xcscheme |
Updates mobile scheme version. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+74
to
+78
| // Fast path — a cached, not-yet-expiring token needs no network hop. | ||
| if let cached = KeychainBackedTokenReader.readAccessToken(service: Self.keychainService), | ||
| !Self.accessTokenIsExpiring(service: Self.keychainService) { | ||
| return cached | ||
| } |
Comment on lines
+150
to
+152
| let dest = directory.appendingPathComponent(file.filename) | ||
| if !overwrite, FileManager.default.fileExists(atPath: dest.path) { continue } | ||
| try Data(file.content.utf8).write(to: dest, options: .atomic) |
Comment on lines
+188
to
+192
| case .manual: | ||
| return !manualFilename.trimmingCharacters(in: .whitespaces).isEmpty | ||
| && manualRows.contains { !$0.key.trimmingCharacters(in: .whitespaces).isEmpty } | ||
| } | ||
| } |
Comment on lines
+141
to
+143
| .task(id: appState.projects.map { $0.gitHubRepo ?? "" }.joined(separator: ",")) { | ||
| await appState.refreshSecretsStatuses() | ||
| } |
| SecretsManageSheet() | ||
| .environment(appState) | ||
| } | ||
| .task { await appState.refreshSecretsEnrollment() } |
00c4fe3 to
a0389e9
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.