Skip to content

Add multi-provider secret sync - #239

Merged
Redth merged 1 commit into
mainfrom
redth-plan-multi-provider-secret-sync
Aug 23, 2026
Merged

Redth merged 1 commit into
mainfrom
redth-plan-multi-provider-secret-sync

Conversation

@Redth

@Redth Redth commented Aug 22, 2026

Copy link
Copy Markdown
Owner

MAUI Sherpa currently treats cloud secret storage as a single active-provider choice, which prevents users from keeping each sensitive item in the provider set that best fits its backup and publishing needs. This change adds item-level multi-provider placement with progressive status and recoverable background reconciliation.

What changed

  • Adds a provider registry and conflict-aware sync coordinator for managed secrets, Android keystores, certificates, provisioning profiles, and publish profiles.
  • Uses typed item adapters and manifests so provider copies can be compared, moved, removed, and retried without persisting secret payloads in task records.
  • Prioritizes Local Vault within each reconciliation and batches provider inventory reads to avoid per-row status calls.
  • Adds a persistent background task center with coalescing, retries, cancellation, restart recovery, per-provider progress, live Shiny.Mediator placement events, and completed-history clearing.
  • Adds a shared cloud/vault picker to every supported item surface plus per-provider, per-item-type defaults in Settings. Defaults are explicitly non-retroactive.
  • Preserves the last Apple and Google identity selection and fixes native macOS toolbar labels after identity changes.
  • Tightens provider not-found/error handling, including Infisical fast-path behavior, and improves macOS Debug Local Vault access and duplicate native-reference handling.

Review notes

Background records contain only item/provider references and state. They persist through Local Vault when available and fall back to memory-only execution when it is unavailable. Reconciliation is still represented as one logical item job with provider substeps; independent provider-lane scheduling is intentionally deferred so source selection, revisions, coalescing, and conflict decisions cannot diverge.

Validation

  • dotnet test tests/MauiSherpa.Core.Tests/MauiSherpa.Core.Tests.csproj (552 passed)
  • dotnet build src/MauiSherpa.MacOS -f net10.0-macos --no-restore --verbosity minimal

Add per-item provider placement, conflict-aware reconciliation, Local Vault-first background work, and live provider status updates across secrets, keystores, certificates, provisioning profiles, and publish profiles.

Add provider defaults, persistent task history, per-provider progress, shared picker UI, identity persistence, and macOS development reliability fixes.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 10500b7f-7c58-406a-96e8-e7c6f13b5ad6
@Redth
Redth merged commit 224562a into main Aug 23, 2026
9 checks passed
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