fix(macos): store desktop secrets in Keychain - #430
Conversation
Obiente previewNC Native · Obiente updates this comment as the preview changes. |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
️✅ There are no secrets present in this pull request anymore.If these secrets were true positive and are still valid, we highly recommend you to revoke them. 🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 94066a3579
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
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".
a799b6b to
89caf2d
Compare
|
Codex Review: Didn't find any major issues. Swish! 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". |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 74f6daa413
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
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".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 777213be6a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
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".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 323f801a64
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
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".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 121797e689
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
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".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 16380e7ef1
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
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".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e246a78882
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
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".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 962e6b8d4f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
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".
| if (failure is DesktopSecretDeletionRecoveryUnavailableException || | ||
| failure is DesktopSecretLegacyCleanupUnavailableException) throw failure |
There was a problem hiding this comment.
Queue legacy cleanup instead of aborting local sign-out
When secret-tool is absent, save() deliberately accepts a durable AdoptedPendingLegacyCleanup state, so every subsequent sign-out reaches this throw even on a fresh macOS profile. Fresh evidence beyond the earlier cleanup finding is that AccountSettingsScreen.kt:156-157 revokes the server session before calling clearSession(); this exception then preserves the in-memory session and preferences, leaving the UI logged into already-revoked credentials while every retry fails on the same missing provider. Persist the legacy target for later cleanup and allow local sign-out to finish instead of throwing after remote revocation.
AGENTS.md reference: AGENTS.md:L457-L459
Useful? React with 👍 / 👎.
| if (session == null) { | ||
| var sessionLoadAttempt by remember { mutableStateOf(0) } | ||
| val sessionLoad = remember(services, sessionLoadAttempt) { | ||
| loadNextcloudSessionSafely(services::loadSession) |
There was a problem hiding this comment.
Lower the shrunken Kotlin file-size baseline
This change reduces NextcloudNativeApp.kt from 12,436 to 12,435 lines, but tools/kotlin-file-size-baseline.txt still permits 12,436. Leaving the old allowance lets a later edit silently restore the removed line, contrary to the repository's explicit requirement to lower an oversized file's baseline whenever it shrinks; update the entry to 12,435 in this change.
AGENTS.md reference: AGENTS.md:L214-L219
Useful? React with 👍 / 👎.
What changed
Validation
DesktopSecretStoreTestwith a fake native API./gradlew --no-daemon --max-workers=1 :ui:createDistributablebash tools/check-kotlin-architecture.shbash tools/check-repository.shLimits
The implementation compiled and passed deterministic tests on Linux. A live macOS Keychain round trip and macOS package build are still required before removing the documented platform limitation.
Advances #335