Skip to content

Feature: Prompt to unlock the keyring before falling back to memory storage - #205

Merged
MemerGamer merged 2 commits into
mainfrom
feat/keyring-unlock
Nov 2, 2026
Merged

MemerGamer merged 2 commits into
mainfrom
feat/keyring-unlock

Conversation

@MemerGamer

Copy link
Copy Markdown
Owner

Resolved / Related Issues

  • None

Summary

  • SecretServiceStore now calls org.freedesktop.Secret.Service.Unlock for a locked collection or item. If the service needs a prompt, it shows the desktop keyring prompt and retries.
  • It falls back to in-memory storage only when the unlock is dismissed, fails, or times out. A dismissal starts a cooldown before the next prompt.
  • Unit tests use a fake Secret Service, so the real desktop keyring prompt has not been exercised by these tests.

Steps used to test these changes

  1. Built tests/Files.Platform.Tests in Release with -warnaserror and ran it under xvfb-run: 1459 passed, 0 failed, 0 skipped.
  2. Built src/Files.App for net10.0-desktop in Release: succeeded.
  3. Ran the CI-equivalent app build with -p:FilesWin32Compat=false: succeeded.

🤖 Generated with Claude Code

MemerGamer and others added 2 commits November 2, 2026 16:09
When the Secret Service collection or item is locked, call Service.Unlock and, if a prompt is returned, show it via Prompt.Prompt and await Completed. The original operation is then retried once. A dismissed, failed or timed-out unlock falls back to the in-memory store, with a cooldown so a refusing user is not re-prompted on every save.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MemerGamer
MemerGamer merged commit c015b45 into main Nov 2, 2026
2 checks passed
@MemerGamer
MemerGamer deleted the feat/keyring-unlock branch November 2, 2026 14:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant