Skip to content

feat: add secrets support#71

Merged
sirily11 merged 1 commit into
mainfrom
mobile-ci-status
May 31, 2026
Merged

feat: add secrets support#71
sirily11 merged 1 commit into
mainfrom
mobile-ci-status

Conversation

@sirily11
Copy link
Copy Markdown
Contributor

No description provided.

Copilot AI review requested due to automatic review settings May 31, 2026 09:31
@vercel
Copy link
Copy Markdown

vercel Bot commented May 31, 2026

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

Project Deployment Actions Updated (UTC)
rxcode Ready Ready Preview, Comment May 31, 2026 10:04am

Request Review

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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() }
@sirily11 sirily11 force-pushed the mobile-ci-status branch from 00c4fe3 to a0389e9 Compare May 31, 2026 10:04
@sirily11 sirily11 enabled auto-merge (squash) May 31, 2026 10:04
@sirily11 sirily11 merged commit a6bcb85 into main May 31, 2026
13 checks passed
@sirily11 sirily11 deleted the mobile-ci-status branch May 31, 2026 10:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants