Skip to content

Added the option to save login session credentials#122

Merged
d2dyno1 merged 20 commits intomasterfrom
imp_design
Apr 30, 2026
Merged

Added the option to save login session credentials#122
d2dyno1 merged 20 commits intomasterfrom
imp_design

Conversation

@d2dyno1
Copy link
Copy Markdown
Member

@d2dyno1 d2dyno1 commented Apr 25, 2026

No description provided.

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

This PR improves MAUI/Uno UI behavior around read-only vault usage and credential handling, while refactoring secure key / native interop types into the Shared layer and enhancing widget persistence.

Changes:

  • Add “saved credentials” login flow and UI templates, plus a model for cached credentials in the SDK.
  • Enforce read-only mode across browser actions/drag-drop and add UI indicators (badge, toggles).
  • Persist health widget state as a richer model (date + severity) and add text previewer UI stats (char count, cursor position).

Reviewed changes

Copilot reviewed 80 out of 119 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
tests/SecureFolderFS.Tests/FileSystemTests/FileSystemCacheTests.cs Update test call signature for local filesystem retrieval
src/Shared/SecureFolderFS.Shared/SecureStore/SecureKey.cs Move/retarget secure key + P/Invoke usage into Shared namespaces
src/Shared/SecureFolderFS.Shared/SecureStore/ManagedKey.cs Move to Shared namespace; add ManagedKey.Empty
src/Shared/SecureFolderFS.Shared/SecureFolderFS.Shared.csproj Enable unsafe blocks in Shared project
src/Shared/SecureFolderFS.Shared/PInvoke/UnsafeNative.cs Rename/move unsafe native API wrapper into Shared.PInvoke
src/Shared/SecureFolderFS.Shared/Extensions/KeyExtensions.cs Move key extension methods to Shared.Extensions
src/Sdk/SecureFolderFS.Sdk/ViewModels/Views/Vault/VaultLoginViewModel.cs Inject additional service; cleanup formatting
src/Sdk/SecureFolderFS.Sdk/ViewModels/Views/Vault/BrowserViewModel.cs Block creation/import commands when read-only
src/Sdk/SecureFolderFS.Sdk/ViewModels/Views/Root/VaultPreviewViewModel.cs Rename read-only property and update unlock call
src/Sdk/SecureFolderFS.Sdk/ViewModels/Views/Overlays/VaultItemInfoOverlayViewModel.cs Whitespace cleanup
src/Sdk/SecureFolderFS.Sdk/ViewModels/Views/Credentials/CredentialsResetViewModel.cs Invalidate cached credentials after auth modification
src/Sdk/SecureFolderFS.Sdk/ViewModels/Views/Credentials/CredentialsConfirmationViewModel.cs Invalidate cached credentials after auth modification; comment tweak
src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/Widgets/Health/HealthWidgetViewModel.cs Persist/restore health widget date + severity
src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/Storage/Browser/BrowserItemViewModel.cs Block move/copy/rename/delete commands when read-only
src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/Previewers/TextPreviewerViewModel.cs Track character count + cursor position
src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/LoginViewModel.cs Add saved-credentials flow + commands; cache key sequence on unlock
src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/Authentication/PersistedAuthenticationViewModel.cs New auth VM for “use saved credentials” step
src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/Authentication/AuthenticationViewModel.cs Document ProvideCredentials command contract
src/Sdk/SecureFolderFS.Sdk/EventArguments/VaultUnlockedEventArgs.cs Using order cleanup
src/Sdk/SecureFolderFS.Sdk/DataModels/HealthDataModel.cs New widget data model (scan date + severity)
src/Sdk/SecureFolderFS.Sdk/AppModels/PersistedCredentialsModel.cs New in-memory credentials cache model
src/Sdk/SecureFolderFS.Sdk.DeviceLink/ViewModels/CredentialViewModel.cs Remove unused using
src/Platforms/SecureFolderFS.Uno/Views/Vault/VaultOverviewPage.xaml.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Uno/Views/Vault/VaultLoginPage.xaml.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Uno/Views/Vault/VaultLoginPage.xaml Update login header text + wire saved-credential bindings
src/Platforms/SecureFolderFS.Uno/Views/Vault/VaultHealthPage.xaml.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Uno/ViewModels/YubiKey/YubiKeyViewModel.cs Update constants + secure store namespace usage
src/Platforms/SecureFolderFS.Uno/ViewModels/WindowsHello/WindowsHelloViewModel.cs Update constants + secure store namespace usage
src/Platforms/SecureFolderFS.Uno/ViewModels/DeviceLink/DeviceLinkViewModel.cs Remove old secure-store import; add Shared.SecureStore
src/Platforms/SecureFolderFS.Uno/UserControls/LoginOptions.xaml.cs Add DP bindings for saved-credential options/actions
src/Platforms/SecureFolderFS.Uno/UserControls/LoginOptions.xaml Add saved-credential UI actions in flyout
src/Platforms/SecureFolderFS.Uno/UserControls/LoginControl.xaml Add persisted-auth template + selector wiring
src/Platforms/SecureFolderFS.Uno/UserControls/Introduction/IntroductionControl.xaml.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Uno/UserControls/Introduction/FileSystemSlide.xaml.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Uno/UserControls/Introduction/AuthenticationSlide.xaml.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Uno/UserControls/InterfaceRoot/VaultPreviewRootControl.xaml Wire saved-credential bindings + rename read-only binding
src/Platforms/SecureFolderFS.Uno/UserControls/FeatureTile.xaml.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Uno/TemplateSelectors/LoginTemplateSelector.cs Add persisted-auth template selection
src/Platforms/SecureFolderFS.Uno/Platforms/Windows/WindowsWebDavFileSystem.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Uno/Platforms/Windows/ServiceImplementation/WindowsApplicationService.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Uno/Platforms/Windows/Helpers/WindowsLifecycleHelper.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Uno/Platforms/Windows/Helpers/WindowsBoundsManager.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Uno/Platforms/Desktop/ViewModels/MacOSBiometricsViewModel.cs Secure store namespace update; whitespace cleanup
src/Platforms/SecureFolderFS.Uno/Platforms/Desktop/ViewModels/MacOSBiometricsCreationViewModel.cs Secure store namespace update
src/Platforms/SecureFolderFS.Uno/Platforms/Desktop/SkiaWebDavFileSystem.MacOS.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Uno/PInvoke/UnsafeNative.Imports.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Uno/App.xaml.cs Whitespace cleanup
src/Platforms/SecureFolderFS.UI/ViewModels/Authentication/KeyFileViewModel.cs Update to Shared extensions + Shared secure store
src/Platforms/SecureFolderFS.UI/ValueConverters/BaseStringInterpolationConverter.cs Allow non-string values via ToString()
src/Platforms/SecureFolderFS.UI/Strings/en-US/Resources.resx Add strings for saved creds + text stats
src/Platforms/SecureFolderFS.UI/Storage/StorageProperties/RecycleBinItemSizeOfProperty.cs Whitespace cleanup
src/Platforms/SecureFolderFS.UI/Storage/RecycleBinFolder.cs Whitespace cleanup
src/Platforms/SecureFolderFS.UI/ServiceImplementation/VaultManagerService.cs Import cleanup (cryptography namespace)
src/Platforms/SecureFolderFS.Maui/Views/Vault/OverviewPage.xaml.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Maui/Views/Vault/OverviewPage.xaml Add read-only badge w/ platform icons
src/Platforms/SecureFolderFS.Maui/Views/Vault/LoginPage.xaml Add saved-credential UI + option container; layout updates
src/Platforms/SecureFolderFS.Maui/Views/Vault/BrowserPage.xaml.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Maui/Views/Vault/BrowserPage.xaml Bind browser control read-only state
src/Platforms/SecureFolderFS.Maui/Views/Modals/Vault/RecycleBinModalPage.xaml Fix localization parameter usage for toolbar text
src/Platforms/SecureFolderFS.Maui/Views/Modals/Vault/FilePreviewModalPage.xaml.cs Safer modal completion + reuse VLC instances; adjust repeat options
src/Platforms/SecureFolderFS.Maui/Views/Modals/Vault/FilePreviewModalPage.xaml Hide cast button; add editor cursor binding + footer stats UI
src/Platforms/SecureFolderFS.Maui/Views/Modals/Vault/BrowserSearchModalPage.xaml.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Maui/Views/Modals/PaymentModalPage.xaml.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Maui/Views/MainPage.xaml.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Maui/UserControls/Widgets/HealthWidget.xaml.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Maui/UserControls/Widgets/AggregatedDataWidget.xaml.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Maui/UserControls/LoginControl.xaml Add persisted-auth template + selector wiring
src/Platforms/SecureFolderFS.Maui/UserControls/HealthScanControl.xaml.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Maui/UserControls/CommandBarControl.xaml.cs Adjust margin when toolbar on top
src/Platforms/SecureFolderFS.Maui/UserControls/Browser/ItemProperty.xaml.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Maui/UserControls/Browser/BrowserControl.xaml.cs Add bindable IsReadOnly property
src/Platforms/SecureFolderFS.Maui/UserControls/Browser/BrowserControl.DragDrop.xaml.cs Disable drag/drop handlers when read-only
src/Platforms/SecureFolderFS.Maui/UserControls/AnimatedRevealLayout.cs Improve hide easing; measure reveal size reliably
src/Platforms/SecureFolderFS.Maui/TemplateSelectors/LoginTemplateSelector.cs Add persisted-auth template selection
src/Platforms/SecureFolderFS.Maui/Popups/CredentialsPopup.xaml.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Maui/Platforms/iOS/ViewModels/IOSBiometricViewModel.cs Update constants + secure store namespace usage
src/Platforms/SecureFolderFS.Maui/Platforms/iOS/ViewModels/IOSBiometricCreationViewModel.cs Secure store namespace update
src/Platforms/SecureFolderFS.Maui/Platforms/iOS/Storage/StorageProperties/IOSSizeOfProperty.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Maui/Platforms/iOS/Storage/StorageProperties/IOSLastModifiedAtProperty.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Maui/Platforms/iOS/Storage/IOSFolder.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Maui/Platforms/iOS/ServiceImplementation/IOSFileExplorerService.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Maui/Platforms/iOS/Handlers/CustomSliderHandler.cs Use static lambda to avoid capture
src/Platforms/SecureFolderFS.Maui/Platforms/Android/ViewModels/AndroidBiometricViewModel.cs Secure store namespace update
src/Platforms/SecureFolderFS.Maui/Platforms/Android/Storage/StorageProperties/AndroidLastModifiedAtProperty.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Maui/Platforms/Android/Storage/AndroidStorable.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Maui/Platforms/Android/Storage/AndroidFile.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Maui/Platforms/Android/ServiceImplementation/VaultForegroundService.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Maui/Platforms/Android/ServiceImplementation/AndroidVaultFileSystemService.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Maui/Platforms/Android/Helpers/DragThresholdTouchListener.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Maui/Platforms/Android/Helpers/AndroidLifecycleHelper.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Maui/Helpers/EasingHelpers.cs Expand single-line if for clarity
src/Platforms/SecureFolderFS.Cli/Program.cs Whitespace cleanup
src/Platforms/SecureFolderFS.Cli/CredentialReader.cs Use Shared secure store namespace
src/Platforms/SecureFolderFS.Cli/Commands/VaultUnmountCommand.cs Remove trailing whitespace lines
src/Platforms/SecureFolderFS.Cli/Commands/VaultRunCommand.cs Remove trailing whitespace lines
src/Platforms/SecureFolderFS.Cli/Commands/VaultMountCommand.cs Remove trailing whitespace lines
src/Platforms/SecureFolderFS.Cli/Commands/VaultInfoCommand.cs Remove trailing whitespace lines
src/Platforms/SecureFolderFS.Cli/Commands/CredsRemoveCommand.cs Remove trailing whitespace lines
src/Platforms/SecureFolderFS.Cli/Commands/CredsChangeCommand.cs Remove trailing whitespace lines
src/Platforms/SecureFolderFS.Cli/Commands/CredsAddCommand.cs Remove trailing whitespace lines
src/Core/SecureFolderFS.Core/VaultAccess/VaultParser.cs Using order cleanup
src/Core/SecureFolderFS.Core/Routines/Operational/UnlockRoutine.cs Update imports to new crypto/shared secure store split
src/Core/SecureFolderFS.Core/Routines/Operational/RecoverRoutine.cs Update imports to new crypto/shared secure store split
src/Core/SecureFolderFS.Core/Routines/Operational/ModifyCredentialsRoutine.cs Remove old secure-store import
src/Core/SecureFolderFS.Core/Routines/Operational/CreationRoutine.cs Update imports to new crypto/shared secure store split
src/Core/SecureFolderFS.Core/Models/SecurityWrapper.cs Using order cleanup
src/Core/SecureFolderFS.Core.Migration/AppModels/MigratorV2_V3.cs Update constants + secure store namespace usage
src/Core/SecureFolderFS.Core.Migration/AppModels/MigratorV1_V2.cs Update imports to new crypto/shared secure store split
src/Core/SecureFolderFS.Core.Cryptography/Security.cs Using order cleanup
src/Core/SecureFolderFS.Core.Cryptography/SecureFolderFS.Core.Cryptography.csproj Remove unused project reference to Storage
src/Core/SecureFolderFS.Core.Cryptography/NameCrypt/AesSivNameCrypt.cs Using order cleanup
src/Core/SecureFolderFS.Core.Cryptography/KeyPair.cs Move KeyPair namespace + use Shared secure store/extensions
src/Core/SecureFolderFS.Core.Cryptography/Helpers/CryptHelpers.cs Update imports to Shared secure store
src/Core/SecureFolderFS.Core.Cryptography/HeaderCrypt/XChaChaHeaderCrypt.cs Using order cleanup
src/Core/SecureFolderFS.Core.Cryptography/HeaderCrypt/NoHeaderCrypt.cs Remove unused secure-store import
src/Core/SecureFolderFS.Core.Cryptography/HeaderCrypt/BaseHeaderCrypt.cs Using order cleanup
src/Core/SecureFolderFS.Core.Cryptography/HeaderCrypt/AesGcmHeaderCrypt.cs Using order cleanup
src/Core/SecureFolderFS.Core.Cryptography/HeaderCrypt/AesCtrHmacHeaderCrypt.cs Using order cleanup
src/Core/SecureFolderFS.Core.Cryptography/ContentCrypt/AesCtrHmacContentCrypt.cs Using order cleanup

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/LoginViewModel.cs
Comment thread src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/LoginViewModel.cs Outdated
Comment thread src/Sdk/SecureFolderFS.Sdk/AppModels/PersistedCredentialsModel.cs
Comment thread src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/LoginViewModel.cs
@d2dyno1
Copy link
Copy Markdown
Member Author

d2dyno1 commented Apr 30, 2026

@copilot One of the tests in the CI is failing at random. Investigate why the problem occurred on this commit and fix the issue.

Copy link
Copy Markdown

Copilot AI commented Apr 30, 2026

@copilot One of the tests in the CI is failing at random. Investigate why the problem occurred on [this](https://github.com/securefolderfs-community/SecureFolderFS/pull/122/commits/00ef6...

Fixed the flaky cache stats test by switching to a synchronous progress implementation with thread-safe counters so cache-miss events aren’t dropped. Commit: 82ede12.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • crl.godaddy.com
    • Triggering command: /usr/bin/dotnet dotnet restore --no-dependencies /home/REDACTED/work/SecureFolderFS/SecureFolderFS/src/Platforms/SecureFolderFS.Uno/SecureFolderFS.Uno.csproj --packages /tmp/codeql-scratch-d52628fd4f0752cc/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-d52628fd4f0752cc/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-d52628fd4f0752cc/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
  • ocsp.godaddy.com
    • Triggering command: /usr/bin/dotnet dotnet restore --no-dependencies /home/REDACTED/work/SecureFolderFS/SecureFolderFS/src/Platforms/SecureFolderFS.Uno/SecureFolderFS.Uno.csproj --packages /tmp/codeql-scratch-d52628fd4f0752cc/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-d52628fd4f0752cc/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-d52628fd4f0752cc/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

@d2dyno1 d2dyno1 marked this pull request as ready for review April 30, 2026 21:18
@d2dyno1 d2dyno1 added approved The pull request has been reviewed and approved and removed approved The pull request has been reviewed and approved labels Apr 30, 2026
@d2dyno1 d2dyno1 requested a review from Copilot April 30, 2026 21:19
@d2dyno1 d2dyno1 changed the title MAUI quality control Added the option to save login session credentials Apr 30, 2026
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

This PR tightens MAUI/Uno UI behavior and platform services while adding session-level “saved credentials” login flow, read-only protections, and audio preview support.

Changes:

  • Add in-memory persisted credentials flow (new model + new login template) and wire it into login/reset/confirmation paths.
  • Extend preview system to support audio (new AudioPreviewerViewModel, updated carousel/template selector, MAUI modal playback handling).
  • Refactor vault credentials services (unlock-procedure formatting + platform implementations) and apply read-only guards across browser actions; includes dependency/package updates and cleanup.

Reviewed changes

Copilot reviewed 116 out of 155 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
tests/SecureFolderFS.Tests/ServiceImplementation/MockVaultCredentialsService.cs Update mock to new BaseVaultCredentialsService login/creation shape.
tests/SecureFolderFS.Tests/SecureFolderFS.Tests.csproj Bump NUnit/test SDK package versions.
tests/SecureFolderFS.Tests/FileSystemTests/FileSystemCacheTests.cs Improve test thread-safety and update API call usage.
src/Shared/SecureFolderFS.Shared/SecureStore/SecureKey.cs Move secure key implementation to Shared namespace + new P/Invoke wrapper usage.
src/Shared/SecureFolderFS.Shared/SecureStore/ManagedKey.cs Add ManagedKey.Empty sentinel and move to Shared secure-store namespace.
src/Shared/SecureFolderFS.Shared/SecureFolderFS.Shared.csproj Enable unsafe blocks for Shared (needed by secure memory ops).
src/Shared/SecureFolderFS.Shared/PInvoke/UnsafeNative.cs Consolidate/rename unsafe native API wrapper into Shared P/Invoke namespace.
src/Shared/SecureFolderFS.Shared/Extensions/KeyExtensions.cs Update extensions to new Shared secure-store namespace.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Views/Vault/VaultPropertiesViewModel.cs Use updated FromUnlockProcedureAsync signature to format security text.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Views/Vault/VaultLoginViewModel.cs Add DI for IVaultService and minor cleanup for login flow.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Views/Vault/BrowserViewModel.cs Block new/import item commands in read-only mode.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Views/Root/VaultPreviewViewModel.cs Rename/read-only flag wiring for unlock mode selection.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Views/Overlays/VaultItemInfoOverlayViewModel.cs Whitespace cleanup.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Views/Overlays/PreviewerOverlayViewModel.cs Include audio in carousel preview selection.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Views/Credentials/CredentialsResetViewModel.cs Clear persisted session credentials after credential reset.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Views/Credentials/CredentialsConfirmationViewModel.cs Clear persisted session credentials after credential confirmation; wording tweak.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/Widgets/Health/HealthWidgetViewModel.cs Persist health widget state as serialized model (date + severity).
src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/Storage/Browser/BrowserItemViewModel.cs Add “open externally” command; enforce read-only restrictions for mutating ops.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/Previewers/VideoPreviewerViewModel.cs Reorder InitAsync (no behavioral change).
src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/Previewers/TextPreviewerViewModel.cs Track character count and cursor position for UI display.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/Previewers/CarouselPreviewerViewModel.cs Add audio previewer support in carousel.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/Previewers/AudioPreviewerViewModel.cs New audio previewer VM using IMediaService.StreamAudioAsync.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/LoginViewModel.cs Add persisted-credentials login path, save/discard flow, and new UI-bound flags.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/Authentication/PersistedAuthenticationViewModel.cs New auth VM that emits persisted key material for unlock.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/Authentication/AuthenticationViewModel.cs Document ProvideCredentialsAsync command intent.
src/Sdk/SecureFolderFS.Sdk/Services/IVaultCredentialsService.cs Change FromUnlockProcedureAsync to include vaultFolder.
src/Sdk/SecureFolderFS.Sdk/Services/IShareService.cs Add OpenFileWithAsync API for “open in external app”.
src/Sdk/SecureFolderFS.Sdk/Services/IMediaService.cs Add StreamAudioAsync API.
src/Sdk/SecureFolderFS.Sdk/SecureFolderFS.Sdk.csproj Bump CommunityToolkit.Mvvm package version.
src/Sdk/SecureFolderFS.Sdk/EventArguments/VaultUnlockedEventArgs.cs Using-order cleanup.
src/Sdk/SecureFolderFS.Sdk/DataModels/HealthDataModel.cs New health widget persisted payload model.
src/Sdk/SecureFolderFS.Sdk/AppModels/PersistedCredentialsModel.cs New in-memory credential store that disposes replaced/removed keys.
src/Sdk/SecureFolderFS.Sdk.GoogleDrive/SecureFolderFS.Sdk.GoogleDrive.csproj Bump Google Drive SDK package version.
src/Sdk/SecureFolderFS.Sdk.Ftp/SecureFolderFS.Sdk.Ftp.csproj Bump FluentFTP package version.
src/Sdk/SecureFolderFS.Sdk.DeviceLink/ViewModels/CredentialViewModel.cs Remove unused using.
src/Sdk/SecureFolderFS.Sdk.DeviceLink/SecureFolderFS.Sdk.DeviceLink.csproj Bump CommunityToolkit.Mvvm version.
src/Sdk/SecureFolderFS.Sdk.Accounts/SecureFolderFS.Sdk.Accounts.csproj Bump CommunityToolkit.Mvvm version.
src/Platforms/SecureFolderFS.Uno/Views/Vault/VaultOverviewPage.xaml.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Uno/Views/Vault/VaultLoginPage.xaml.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Uno/Views/Vault/VaultLoginPage.xaml Bind lock heading + login options to persisted-credentials state/commands.
src/Platforms/SecureFolderFS.Uno/Views/Vault/VaultHealthPage.xaml.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Uno/ViewModels/YubiKey/YubiKeyViewModel.cs Update constants/secure-store namespace usage.
src/Platforms/SecureFolderFS.Uno/ViewModels/WindowsHello/WindowsHelloViewModel.cs Update constants/secure-store namespace usage and using order.
src/Platforms/SecureFolderFS.Uno/ViewModels/DeviceLink/DeviceLinkViewModel.cs Remove unused using; update secure-store namespace usage.
src/Platforms/SecureFolderFS.Uno/UserControls/LoginOptions.xaml.cs Add DPs for persisted-credentials toggles/commands in login options flyout.
src/Platforms/SecureFolderFS.Uno/UserControls/LoginOptions.xaml Add UI for discarding saved credentials + bind save-credentials option.
src/Platforms/SecureFolderFS.Uno/UserControls/LoginControl.xaml Add template for persisted authentication VM.
src/Platforms/SecureFolderFS.Uno/UserControls/Introduction/IntroductionControl.xaml.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Uno/UserControls/Introduction/FileSystemSlide.xaml.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Uno/UserControls/Introduction/AuthenticationSlide.xaml.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Uno/UserControls/InterfaceRoot/VaultPreviewRootControl.xaml Bind login options to persisted-credentials state and renamed read-only flag.
src/Platforms/SecureFolderFS.Uno/UserControls/FeatureTile.xaml.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Uno/TemplateSelectors/LoginTemplateSelector.cs Add template mapping for persisted authentication VM.
src/Platforms/SecureFolderFS.Uno/ServiceImplementation/UnoMediaService.cs Implement audio streaming API as not supported on Uno.
src/Platforms/SecureFolderFS.Uno/Platforms/Windows/WindowsWebDavFileSystem.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Uno/Platforms/Windows/ServiceImplementation/WindowsVaultCredentialsService.cs Migrate to new BaseVaultCredentialsService login override; update constants usage.
src/Platforms/SecureFolderFS.Uno/Platforms/Windows/ServiceImplementation/WindowsApplicationService.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Uno/Platforms/Windows/Helpers/WindowsLifecycleHelper.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Uno/Platforms/Windows/Helpers/WindowsBoundsManager.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Uno/Platforms/Desktop/ViewModels/MacOSBiometricsViewModel.cs Update secure-store namespace usage + whitespace cleanup.
src/Platforms/SecureFolderFS.Uno/Platforms/Desktop/ViewModels/MacOSBiometricsCreationViewModel.cs Update secure-store namespace usage.
src/Platforms/SecureFolderFS.Uno/Platforms/Desktop/SkiaWebDavFileSystem.MacOS.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Uno/Platforms/Desktop/ServiceImplementation/SkiaVaultCredentialsService.cs Migrate to new BaseVaultCredentialsService login override.
src/Platforms/SecureFolderFS.Uno/PInvoke/UnsafeNative.Imports.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Uno/App.xaml.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.UI/ViewModels/Authentication/KeyFileViewModel.cs Update shared extensions/secure-store namespaces.
src/Platforms/SecureFolderFS.UI/ValueConverters/BaseTypeNameBoolConverter.cs Make converter parameter parsing safer.
src/Platforms/SecureFolderFS.UI/ValueConverters/BaseStringInterpolationConverter.cs Allow interpolating non-string values via ToString().
src/Platforms/SecureFolderFS.UI/Strings/en-US/Resources.resx Add strings for persisted credentials, external open, and editor status text.
src/Platforms/SecureFolderFS.UI/Storage/StorageProperties/RecycleBinItemSizeOfProperty.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.UI/Storage/RecycleBinFolder.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.UI/ServiceImplementation/VaultService.cs Namespace/type cleanup for AppPlatformVaultOptions.
src/Platforms/SecureFolderFS.UI/ServiceImplementation/VaultManagerService.cs Update cryptography namespace import.
src/Platforms/SecureFolderFS.UI/ServiceImplementation/ResourceLocalizationService.cs Use current culture when fetching resource strings.
src/Platforms/SecureFolderFS.UI/ServiceImplementation/BaseVaultCredentialsService.cs Refactor login retrieval + unlock-procedure formatting; introduce protected login override.
src/Platforms/SecureFolderFS.Maui/Views/Vault/OverviewPage.xaml.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Maui/Views/Vault/OverviewPage.xaml Add read-only badge UI with platform icons.
src/Platforms/SecureFolderFS.Maui/Views/Vault/LoginPage.xaml Add persisted-credentials UX and bottom options container; bind new flags/commands.
src/Platforms/SecureFolderFS.Maui/Views/Vault/BrowserPage.xaml.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Maui/Views/Vault/BrowserPage.xaml Pass read-only state down to browser control.
src/Platforms/SecureFolderFS.Maui/Views/Modals/Vault/RecycleBinModalPage.xaml Fix localization converter parameter for toolbar text.
src/Platforms/SecureFolderFS.Maui/Views/Modals/Vault/FilePreviewModalPage.xaml.cs Add audio template support and extend VLC hookup to audio + reuse existing players.
src/Platforms/SecureFolderFS.Maui/Views/Modals/Vault/FilePreviewModalPage.xaml Add audio preview template; add editor cursor binding + status bar.
src/Platforms/SecureFolderFS.Maui/Views/Modals/Vault/BrowserSearchModalPage.xaml.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Maui/Views/Modals/PaymentModalPage.xaml.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Maui/Views/MainPage.xaml.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Maui/UserControls/Widgets/HealthWidget.xaml.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Maui/UserControls/Widgets/AggregatedDataWidget.xaml.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Maui/UserControls/LoginControl.xaml Add persisted authentication template for MAUI.
src/Platforms/SecureFolderFS.Maui/UserControls/HealthScanControl.xaml.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Maui/UserControls/CommandBarControl.xaml.cs Adjust margin when toolbar is on top.
src/Platforms/SecureFolderFS.Maui/UserControls/Browser/ItemProperty.xaml.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Maui/UserControls/Browser/BrowserControl.xaml.cs Add IsReadOnly bindable property.
src/Platforms/SecureFolderFS.Maui/UserControls/Browser/BrowserControl.xaml Add “Open in external app” context menu item.
src/Platforms/SecureFolderFS.Maui/UserControls/Browser/BrowserControl.DragDrop.xaml.cs Block drag/drop operations in read-only mode.
src/Platforms/SecureFolderFS.Maui/UserControls/AnimatedRevealLayout.cs Improve size measurement + easing for reveal animation.
src/Platforms/SecureFolderFS.Maui/TemplateSelectors/PreviewerTemplateSelector.cs Add audio previewer template selection.
src/Platforms/SecureFolderFS.Maui/TemplateSelectors/LoginTemplateSelector.cs Add persisted authentication template selection.
src/Platforms/SecureFolderFS.Maui/ServiceImplementation/MauiShareService.cs Remove fallback share service (platform services now expected).
src/Platforms/SecureFolderFS.Maui/ServiceImplementation/BaseMauiMediaService.cs Add audio streaming default implementation.
src/Platforms/SecureFolderFS.Maui/Resources/Styles/Converters.xaml Register TypeNameBoolConverter globally for MAUI.
src/Platforms/SecureFolderFS.Maui/Popups/CredentialsPopup.xaml.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Maui/Platforms/iOS/ViewModels/IOSBiometricViewModel.cs Update constants + secure-store namespace usage.
src/Platforms/SecureFolderFS.Maui/Platforms/iOS/ViewModels/IOSBiometricCreationViewModel.cs Update secure-store namespace usage.
src/Platforms/SecureFolderFS.Maui/Platforms/iOS/Storage/StorageProperties/IOSSizeOfProperty.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Maui/Platforms/iOS/Storage/StorageProperties/IOSLastModifiedAtProperty.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Maui/Platforms/iOS/Storage/IOSFolder.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Maui/Platforms/iOS/ServiceImplementation/IOSVaultCredentialsService.cs Migrate to new BaseVaultCredentialsService login override.
src/Platforms/SecureFolderFS.Maui/Platforms/iOS/ServiceImplementation/IOSShareService.cs Add OpenFileWithAsync as not supported on iOS (explicit).
src/Platforms/SecureFolderFS.Maui/Platforms/iOS/ServiceImplementation/IOSFileExplorerService.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Maui/Platforms/iOS/Handlers/CustomSliderHandler.cs Make renderer callback static to avoid capture.
src/Platforms/SecureFolderFS.Maui/Platforms/Android/ViewModels/AndroidBiometricViewModel.cs Update secure-store namespace usage.
src/Platforms/SecureFolderFS.Maui/Platforms/Android/Storage/StorageProperties/AndroidLastModifiedAtProperty.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Maui/Platforms/Android/Storage/AndroidStorable.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Maui/Platforms/Android/Storage/AndroidFile.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Maui/Platforms/Android/ServiceImplementation/VaultForegroundService.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Maui/Platforms/Android/ServiceImplementation/ShareContentProvider.cs Improve streaming robustness + timed registration cleanup for sharing/open-with.
src/Platforms/SecureFolderFS.Maui/Platforms/Android/ServiceImplementation/AndroidVaultFileSystemService.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Maui/Platforms/Android/ServiceImplementation/AndroidVaultCredentialsService.cs Migrate to new BaseVaultCredentialsService login override.
src/Platforms/SecureFolderFS.Maui/Platforms/Android/ServiceImplementation/AndroidShareService.cs Use provider-built content URI; add OpenFileWithAsync.
src/Platforms/SecureFolderFS.Maui/Platforms/Android/Helpers/DragThresholdTouchListener.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Maui/Platforms/Android/Helpers/AndroidLifecycleHelper.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Maui/Helpers/EasingHelpers.cs Minor formatting for readability.
src/Platforms/SecureFolderFS.Maui/Extensions/IocExtensions.cs Stop registering removed fallback MauiShareService.
src/Platforms/SecureFolderFS.Cli/Program.cs Whitespace cleanup.
src/Platforms/SecureFolderFS.Cli/CredentialReader.cs Update secure-store namespace usage.
src/Platforms/SecureFolderFS.Cli/Commands/VaultUnmountCommand.cs Remove trailing whitespace lines.
src/Platforms/SecureFolderFS.Cli/Commands/VaultRunCommand.cs Remove trailing whitespace lines.
src/Platforms/SecureFolderFS.Cli/Commands/VaultMountCommand.cs Remove trailing whitespace lines.
src/Platforms/SecureFolderFS.Cli/Commands/VaultInfoCommand.cs Remove trailing whitespace lines.
src/Platforms/SecureFolderFS.Cli/Commands/CredsRemoveCommand.cs Remove trailing whitespace lines.
src/Platforms/SecureFolderFS.Cli/Commands/CredsChangeCommand.cs Remove trailing whitespace lines.
src/Platforms/SecureFolderFS.Cli/Commands/CredsAddCommand.cs Remove trailing whitespace lines.
src/Platforms/SecureFolderFS.Cli/CliVaultCredentialsService.cs Update CLI credentials service to new BaseVaultCredentialsService login override.
src/Platforms/Directory.Packages.props Bump several platform package versions (CliFx, Sentry, LiveCharts, WinUI.TableView, etc.).
src/Core/SecureFolderFS.Core/VaultAccess/VaultParser.cs Remove old secure-store import and reorder usings.
src/Core/SecureFolderFS.Core/Routines/Operational/UnlockRoutine.cs Update cryptography/secure-store imports.
src/Core/SecureFolderFS.Core/Routines/Operational/RecoverRoutine.cs Update cryptography imports.
src/Core/SecureFolderFS.Core/Routines/Operational/ModifyCredentialsRoutine.cs Remove unused secure-store import.
src/Core/SecureFolderFS.Core/Routines/Operational/CreationRoutine.cs Update cryptography/secure-store imports and using order.
src/Core/SecureFolderFS.Core/Models/SecurityWrapper.cs Remove unused secure-store import and reorder system usings.
src/Core/SecureFolderFS.Core.WinFsp/SecureFolderFS.Core.WinFsp.csproj Bump winfsp.net package version.
src/Core/SecureFolderFS.Core.Migration/AppModels/MigratorV2_V3.cs Update constants/secure-store imports and using order.
src/Core/SecureFolderFS.Core.Migration/AppModels/MigratorV1_V2.cs Update cryptography/secure-store imports.
src/Core/SecureFolderFS.Core.Cryptography/Security.cs Remove secure-store import and reorder usings.
src/Core/SecureFolderFS.Core.Cryptography/SecureFolderFS.Core.Cryptography.csproj Update NSec.Cryptography package version and project references.
src/Core/SecureFolderFS.Core.Cryptography/NameCrypt/AesSivNameCrypt.cs Remove secure-store import and reorder usings.
src/Core/SecureFolderFS.Core.Cryptography/KeyPair.cs Move KeyPair into SecureFolderFS.Core.Cryptography and update imports.
src/Core/SecureFolderFS.Core.Cryptography/Helpers/CryptHelpers.cs Swap secure-store import to Shared secure-store.
src/Core/SecureFolderFS.Core.Cryptography/HeaderCrypt/XChaChaHeaderCrypt.cs Remove secure-store import and reorder usings.
src/Core/SecureFolderFS.Core.Cryptography/HeaderCrypt/NoHeaderCrypt.cs Remove secure-store import.
src/Core/SecureFolderFS.Core.Cryptography/HeaderCrypt/BaseHeaderCrypt.cs Remove unused imports and reorder usings.
src/Core/SecureFolderFS.Core.Cryptography/HeaderCrypt/AesGcmHeaderCrypt.cs Remove secure-store import and reorder usings.
src/Core/SecureFolderFS.Core.Cryptography/HeaderCrypt/AesCtrHmacHeaderCrypt.cs Remove secure-store import and reorder usings.
src/Core/SecureFolderFS.Core.Cryptography/ContentCrypt/AesCtrHmacContentCrypt.cs Remove secure-store import and reorder usings.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/LoginViewModel.cs
Comment thread src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/LoginViewModel.cs
@d2dyno1 d2dyno1 added the approved The pull request has been reviewed and approved label Apr 30, 2026
@d2dyno1 d2dyno1 merged commit d1fc8a1 into master Apr 30, 2026
13 checks passed
@d2dyno1 d2dyno1 deleted the imp_design branch April 30, 2026 21:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved The pull request has been reviewed and approved

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants