macOS OpenRC import reports Keychain not found #3

Open
opened 2026-11-04 14:41:36 +01:00 by Alex · 1 comment
Owner

Report

The desktop app now builds and starts on macOS. Importing an OpenRC file displays the native "Keychain not found" / "A keychain cannot be found to store ..." dialog. Credential values are intentionally omitted.

Identified launch defect

The Rust profile worker launcher clears the environment and sets HOME to the private profile data directory. The macOS credential adapter uses the user's file-based Keychain, so the worker must retain the login home directory instead. Linux retains its existing isolated-home behavior.

Correction

  • Preserve only the parent application's valid absolute HOME on macOS; keep private profile paths and working directory unchanged.
  • Disable file-keychain UI in the dedicated worker and preflight the existing default keychain. Never create, reset or unlock a keychain automatically.
  • Map missing default/keychain errors to safe missing-collection codes and interaction-required errors to the existing locked status.
  • Make the unavailable-store UI message apply to both supported platforms.

Verification

Synthetic native-boundary checks cover disabled UI, successful/default-keychain handling, absent keychains blocking writes, safe error codes and absence of raw exception context. Python and Rust source syntax validation pass on Linux. No real keychain, OpenRC credentials or cloud was accessed. Native macOS import/save verification remains pending; keep this issue open until the reporter confirms it.

Retry with the app closed, git pull --ff-only, bash scripts/build-macos.sh, then launch the rebuilt .app. Do not reset or delete the login keychain as a workaround.

## Report The desktop app now builds and starts on macOS. Importing an OpenRC file displays the native "Keychain not found" / "A keychain cannot be found to store ..." dialog. Credential values are intentionally omitted. ## Identified launch defect The Rust profile worker launcher clears the environment and sets HOME to the private profile data directory. The macOS credential adapter uses the user's file-based Keychain, so the worker must retain the login home directory instead. Linux retains its existing isolated-home behavior. ## Correction - Preserve only the parent application's valid absolute HOME on macOS; keep private profile paths and working directory unchanged. - Disable file-keychain UI in the dedicated worker and preflight the existing default keychain. Never create, reset or unlock a keychain automatically. - Map missing default/keychain errors to safe missing-collection codes and interaction-required errors to the existing locked status. - Make the unavailable-store UI message apply to both supported platforms. ## Verification Synthetic native-boundary checks cover disabled UI, successful/default-keychain handling, absent keychains blocking writes, safe error codes and absence of raw exception context. Python and Rust source syntax validation pass on Linux. No real keychain, OpenRC credentials or cloud was accessed. Native macOS import/save verification remains pending; keep this issue open until the reporter confirms it. Retry with the app closed, git pull --ff-only, bash scripts/build-macos.sh, then launch the rebuilt .app. Do not reset or delete the login keychain as a workaround.
Author
Owner

Correction pushed to main in 272a7beeef. Synthetic native-boundary checks and Rust/Python syntax validation passed on Linux; real macOS Keychain access remains unverified. Keep this issue open until OpenRC import and credential save succeed on the reporter's Mac. Quit the old app before rebuilding and launch the new bundle afterward.

Correction pushed to main in 272a7beeef4aa02bc6eba279085381228e94e0d8. Synthetic native-boundary checks and Rust/Python syntax validation passed on Linux; real macOS Keychain access remains unverified. Keep this issue open until OpenRC import and credential save succeed on the reporter's Mac. Quit the old app before rebuilding and launch the new bundle afterward.
Sign in to join this conversation.
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Alex/openstack-dashboard-app#3
No description provided.