Skip to content

Finalize Release Candidate 1#107

Draft
d2dyno1 wants to merge 87 commits intomasterfrom
f_rc1
Draft

Finalize Release Candidate 1#107
d2dyno1 wants to merge 87 commits intomasterfrom
f_rc1

Conversation

@d2dyno1
Copy link
Copy Markdown
Member

@d2dyno1 d2dyno1 commented Mar 26, 2026

No description provided.

@d2dyno1 d2dyno1 marked this pull request as ready for review March 26, 2026 20:32
@d2dyno1 d2dyno1 marked this pull request as draft March 26, 2026 20:33
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

“Finalize Release Candidate 1” is a broad stabilization/feature-completion PR spanning Shared/Sdk/Core + Uno/Maui platform layers. It introduces a new logging setup, refactors thumbnail/image stream handling, updates onboarding/wizard UI, and includes cryptography backend updates.

Changes:

  • Add logging infrastructure (debug output + optional file logging) and DI/source-generator support for ILogger injection.
  • Refactor thumbnail and image-stream plumbing (new IImageStream wrapper shape, thumbnail cache keying, UI thumbnail rendering updates).
  • Update multiple UX flows across Uno/Maui (introduction slides, wizard pages, health widgets) and bump several package dependencies.

Reviewed changes

Copilot reviewed 169 out of 186 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
tests/SecureFolderFS.Tests/ServiceImplementation/MockFileExplorerService.cs Persist saved bytes for later “picked” file stream in tests.
tests/SecureFolderFS.Tests/SecureFolderFS.Tests.csproj Bump DI package version.
tests/SecureFolderFS.Tests/GlobalSetup.cs Swap localization service to mock for tests.
targetframework-override.props Remove target framework override props file.
src/Shared/SecureFolderFS.SourceGenerator/SecureFolderFS.SourceGenerator.csproj Retarget generator to netstandard2.0.
src/Shared/SecureFolderFS.SourceGenerator/InjectGenerator.cs Special-case ILogger injection generation.
src/Shared/SecureFolderFS.SourceGenerator/Helpers/SourceGeneratorHelpers.cs Add generator helper to build logger factory expression.
src/Shared/SecureFolderFS.Shared/SecureFolderFS.Shared.csproj Add logging package; bump DI abstractions version.
src/Shared/SecureFolderFS.Shared/Models/StreamImageModel.cs Refactor to Inner stream wrapper model.
src/Shared/SecureFolderFS.Shared/Logging/LoggingBuilderExtensions.cs Add ILoggingBuilder extensions for custom providers.
src/Shared/SecureFolderFS.Shared/Logging/FileOutputLoggerProvider.cs Add file logger provider.
src/Shared/SecureFolderFS.Shared/Logging/FileOutputLogger.cs Add file logger implementation.
src/Shared/SecureFolderFS.Shared/Logging/DebugOutputLoggerProvider.cs Add debug output logger provider.
src/Shared/SecureFolderFS.Shared/Logging/DebugOutputLogger.cs Add debug output logger implementation.
src/Shared/SecureFolderFS.Shared/Extensions/WrapperExtensions.cs Add wrapper lookup by runtime type name.
src/Shared/SecureFolderFS.Shared/Extensions/LoggingExtensions.cs Add perf timing helpers for ILogger.
src/Shared/SecureFolderFS.Shared/Extensions/DictionaryExtensions.cs Add dictionary GetAs helper.
src/Shared/SecureFolderFS.Shared/DI.cs Add GetLogger<T>() helpers on DI wrapper.
src/Shared/SecureFolderFS.Shared/ComponentModel/IImageStream.cs Redefine IImageStream as IWrapper<Stream>.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Views/Wizard/DataSources/PickerSourceWizardViewModel.cs Move datasource strings to observable properties.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Views/Wizard/DataSources/BaseDataSourceWizardViewModel.cs Add observable datasource name/description.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Views/Wizard/DataSources/AccountSourceWizardViewModel.cs Adjust null guards using datasource name.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Views/Vault/VaultPropertiesViewModel.cs Remove unused navigator fields.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Views/Vault/VaultHealthViewModel.Scanning.cs Pass cancellation token into folder picker.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Views/Vault/BrowserViewModel.cs Ensure new items get async init.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Views/Overlays/PropertiesOverlayViewModel.cs Add plaintext/ciphertext path display/copy.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Views/Overlays/IntroductionOverlayViewModel.cs Restore preferred filesystem selection.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Views/Host/MainHostViewModel.cs Gate device link flow behind IAP check.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/Widgets/Data/GraphsWidgetViewModel.cs Rename graph constants usage.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/Widgets/Data/GraphControlViewModel.cs Rename graph constants usage.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/Widgets/Data/AggregatedDataWidgetViewModel.cs Add read/write activity flags + refresh tick logic.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/Storage/Browser/SearchBrowserItemViewModel.cs Switch thumbnail cache to explicit cache keys.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/Storage/Browser/FolderViewModel.cs Add last-modified init + perf logging.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/Storage/Browser/FileViewModel.cs Deduplicate concurrent init; set size/modified; cache key usage.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/Storage/Browser/BrowserItemViewModel.cs Add size/last-modified observable properties.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/Components/PickerOptionViewModel.cs Move Icon up into base picker option VM.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/Components/ItemInstallationViewModel.cs Remove duplicated Icon property.
src/Sdk/SecureFolderFS.Sdk/ViewModels/Controls/Components/FileSystemItemViewModel.cs Remove duplicated Icon property.
src/Sdk/SecureFolderFS.Sdk/Services/Settings/IAppSettings.cs Remove beta notification flag from settings interface.
src/Sdk/SecureFolderFS.Sdk/Services/IVaultService.cs Fix interface member modifiers/docstring.
src/Sdk/SecureFolderFS.Sdk/Constants.cs Rename graph constants + add aggregated data constants.
src/Sdk/SecureFolderFS.Sdk/AppModels/ThumbnailCacheModel.cs Change cache API to use explicit cache keys; tweak max entries.
src/Sdk/SecureFolderFS.Sdk.GoogleDrive/SecureFolderFS.Sdk.GoogleDrive.csproj Bump Google Drive API package.
src/Sdk/SecureFolderFS.Sdk.Ftp/SecureFolderFS.Sdk.Ftp.csproj Bump FluentFTP package.
src/Platforms/SecureFolderFS.Uno/Views/VaultWizard/MainWizardPage.xaml.cs Remove unused button field.
src/Platforms/SecureFolderFS.Uno/ViewModels/DeviceLink/DeviceLinkLoginViewModel.cs Remove unused using.
src/Platforms/SecureFolderFS.Uno/ValueConverters/ImageToSourceConverter.cs Add converter for IImage variants to XAML ImageSource.
src/Platforms/SecureFolderFS.Uno/UserControls/Introduction/IntroductionControl.xaml.cs Add slide init/animations and lifecycle cleanup.
src/Platforms/SecureFolderFS.Uno/UserControls/Introduction/IntroductionControl.xaml Rework introduction slides layout + platform handling.
src/Platforms/SecureFolderFS.Uno/UserControls/Introduction/FileSystemSlide.xaml.cs Extract filesystem selection logic into separate control.
src/Platforms/SecureFolderFS.Uno/UserControls/Introduction/FileSystemSlide.xaml New slide UI for filesystem selection.
src/Platforms/SecureFolderFS.Uno/UserControls/Introduction/FeatureSlide.xaml.cs Replace image+slot with left/right slots.
src/Platforms/SecureFolderFS.Uno/UserControls/Introduction/FeatureSlide.xaml Update to left/right slot content controls.
src/Platforms/SecureFolderFS.Uno/UserControls/Introduction/EncryptedFileSlide.xaml Add Skia-based encryption slide.
src/Platforms/SecureFolderFS.Uno/UserControls/Introduction/AuthenticationSlide.xaml.cs Add staged auth animation logic.
src/Platforms/SecureFolderFS.Uno/UserControls/Introduction/AuthenticationSlide.xaml Add auth slide visual layout.
src/Platforms/SecureFolderFS.Uno/UserControls/InterfaceRoot/MainWindowRootControl.xaml.cs Add null guards for App/ViewModel access.
src/Platforms/SecureFolderFS.Uno/UserControls/InterfaceRoot/MainWindowRootControl.xaml Simplify x:Bind modes.
src/Platforms/SecureFolderFS.Uno/UserControls/InterfaceHost/MainAppHostControl.xaml.cs Remove beta teaching tip plumbing; null-safe title compare.
src/Platforms/SecureFolderFS.Uno/UserControls/InterfaceHost/MainAppHostControl.xaml Remove TeachingTip UI.
src/Platforms/SecureFolderFS.Uno/UserControls/BackButtonTitleControl.xaml.cs Make click event nullable.
src/Platforms/SecureFolderFS.Uno/ServiceImplementation/UnoStorageService.cs Adjust platform compile flags + fully qualify ApplicationData.
src/Platforms/SecureFolderFS.Uno/ServiceImplementation/UnoMediaService.cs Remove dead/experimental code path.
src/Platforms/SecureFolderFS.Uno/ResourceDictionaries/ImageResources.xaml Add platform-aware image styles for onboarding assets.
src/Platforms/SecureFolderFS.Uno/ResourceDictionaries/ConverterResources.xaml Register ImageToSourceConverter.
src/Platforms/SecureFolderFS.Uno/Platforms/Desktop/SkiaWebDavFileSystem.MacOS.cs Fix incorrect cref target.
src/Platforms/SecureFolderFS.Uno/Platforms/Desktop/ServiceImplementation/SkiaSystemService.MacOS.cs Fix detach observer condition on event removal.
src/Platforms/SecureFolderFS.Uno/Platforms/Desktop/Helpers/MacOsWindowHelper.cs Rename helper + add CenterWindow.
src/Platforms/SecureFolderFS.Uno/PInvoke/UnsafeNative.Imports.cs Add objc_msgSend void import.
src/Platforms/SecureFolderFS.Uno/Helpers/ImagingHelpers.cs Remove unused imaging helper.
src/Platforms/SecureFolderFS.Uno/Dialogs/SettingsDialog.xaml.cs Simplify null checks and navigation setup.
src/Platforms/SecureFolderFS.Uno/Dialogs/RecycleBinDialog.xaml Simplify x:Bind command parameter modes.
src/Platforms/SecureFolderFS.Uno/Dialogs/LicensesDialog.xaml Set OneWay bindings + expandable license UI.
src/Platforms/SecureFolderFS.Uno/App.xaml.cs Add default titlebar null-case + macOS window centering.
src/Platforms/SecureFolderFS.UI/Strings/en-US/Resources.resx Add strings for path/encrypted path + wizard descriptions.
src/Platforms/SecureFolderFS.UI/Storage/RecycleBinFolder.cs Harden recycle bin enumeration via no-failure helper.
src/Platforms/SecureFolderFS.UI/ServiceImplementation/Settings/AppSettings.cs Remove beta notification persisted setting.
src/Platforms/SecureFolderFS.UI/ServiceImplementation/BaseVaultCredentialsService.cs Exclude Android from Base4K encoding option.
src/Platforms/SecureFolderFS.UI/Helpers/BaseLifecycleHelper.cs Add logging registration + debug/release log levels.
src/Platforms/SecureFolderFS.UI/Constants.cs Adjust thumbnail size/quality constants.
src/Platforms/SecureFolderFS.UI/Assets/Licenses/WebDavClient LICENSE Add license text.
src/Platforms/SecureFolderFS.UI/Assets/Licenses/SkiaSharp LICENSE Add license text.
src/Platforms/SecureFolderFS.UI/Assets/Licenses/Sentry LICENSE Update license metadata/content.
src/Platforms/SecureFolderFS.UI/Assets/Licenses/RFC3394 LICENSE Add license text.
src/Platforms/SecureFolderFS.UI/Assets/Licenses/PluginSegmentedControlMaui LICENSE Add license text.
src/Platforms/SecureFolderFS.UI/Assets/Licenses/PluginMauiBottomSheet LICENSE Add license text.
src/Platforms/SecureFolderFS.UI/Assets/Licenses/OwlCoreStorage LICENSE Add license text.
src/Platforms/SecureFolderFS.UI/Assets/Licenses/Octokit LICENSE Add license text.
src/Platforms/SecureFolderFS.UI/Assets/Licenses/NSec LICENSE Update copyright year/formatting.
src/Platforms/SecureFolderFS.UI/Assets/Licenses/MimeTypeMapOfficial LICENSE Add license text.
src/Platforms/SecureFolderFS.UI/Assets/Licenses/MicrosoftMaui LICENSE Add license text.
src/Platforms/SecureFolderFS.UI/Assets/Licenses/MauiIcons LICENSE Update license metadata/content.
src/Platforms/SecureFolderFS.UI/Assets/Licenses/IconPacksMaterial LICENSE Update license metadata/content.
src/Platforms/SecureFolderFS.UI/Assets/Licenses/GoogleApiDotnetClient LICENSE Add license text.
src/Platforms/SecureFolderFS.UI/Assets/Licenses/FluentFTP LICENSE Add license text.
src/Platforms/SecureFolderFS.UI/Assets/Licenses/DropboxSdkDotnet LICENSE Add license text.
src/Platforms/SecureFolderFS.UI/Assets/Licenses/Dotnet LICENSE Add license text.
src/Platforms/SecureFolderFS.UI/Assets/Licenses/ContextMenuContainer LICENSE Update license metadata/content.
src/Platforms/SecureFolderFS.UI/Assets/Licenses/CommunityToolkit LICENSE Update license metadata/content.
src/Platforms/SecureFolderFS.UI/Assets/Licenses/CommunityTookitMaui LICENSE Add license text.
src/Platforms/SecureFolderFS.UI/Assets/Licenses/Base4K LICENSE Add license text.
src/Platforms/SecureFolderFS.UI/Assets/Licenses/AndroidLibraries LICENSE Add license text.
src/Platforms/SecureFolderFS.UI/Assets/Licenses/AcrylicViewMaui LICENSE Update license metadata/content.
src/Platforms/SecureFolderFS.Maui/Views/Vault/OverviewPage.xaml.cs Dispose health widget on page disappear.
src/Platforms/SecureFolderFS.Maui/Views/Vault/OverviewPage.xaml Hook health widget loaded; add read/write activity bindings; UI spacing tweaks.
src/Platforms/SecureFolderFS.Maui/Views/Vault/HealthPage.xaml.cs Dispose scan control; use ExecuteAsync for scan command.
src/Platforms/SecureFolderFS.Maui/Views/Vault/HealthPage.xaml Replace old scan button with new scan control; layout updates.
src/Platforms/SecureFolderFS.Maui/Views/Modals/Wizard/RecoveryWizardPage.xaml Simplify iOS-specific margins.
src/Platforms/SecureFolderFS.Maui/Views/Modals/Wizard/PickerSourceWizardPage.xaml Layout tweaks + fix resource binding typo.
src/Platforms/SecureFolderFS.Maui/Views/Modals/Wizard/MainWizardPage.xaml New wizard option cards + localized intro string.
src/Platforms/SecureFolderFS.Maui/Views/Modals/Wizard/CredentialsWizardPage.xaml Simplify iOS-specific margins.
src/Platforms/SecureFolderFS.Maui/Views/Modals/Wizard/AccountListSourceWizardPage.xaml Simplify iOS-specific margins.
src/Platforms/SecureFolderFS.Maui/Views/Modals/Wizard/AccountCreationWizardPage.xaml Remove iOS-specific margin.
src/Platforms/SecureFolderFS.Maui/Views/Modals/Vault/RecycleBinModalPage.xaml Switch thumbnail host to Image + aspect converter.
src/Platforms/SecureFolderFS.Maui/Views/Modals/Vault/BrowserSearchModalPage.xaml Switch thumbnail host to Image + aspect converter.
src/Platforms/SecureFolderFS.Maui/Views/Modals/Settings/SettingsPage.xaml Make immersive; redesign header; tweak styling/backplates.
src/Platforms/SecureFolderFS.Maui/Views/Modals/PaymentModalPage.xaml.cs Remove unused close button handler.
src/Platforms/SecureFolderFS.Maui/Views/Modals/PaymentModalPage.xaml Make immersive; adjust header layout.
src/Platforms/SecureFolderFS.Maui/Views/Modals/BaseModalPage.xaml Add iOS immersive margin trigger; remove unused converter resource.
src/Platforms/SecureFolderFS.Maui/Views/MainPage.xaml Rename device link command + platform-specific FAB grid.
src/Platforms/SecureFolderFS.Maui/Views/IntroductionPage.xaml Add iOS platform placeholder grid.
src/Platforms/SecureFolderFS.Maui/ValueConverters/VisibilityToColumnSpanConverter.cs Remove unused converter.
src/Platforms/SecureFolderFS.Maui/ValueConverters/ThumbnailToAspectConverter.cs Add converter to choose aspect based on thumbnail presence.
src/Platforms/SecureFolderFS.Maui/ValueConverters/ImageToSourceConverter.cs Update to new ImageStreamSource type.
src/Platforms/SecureFolderFS.Maui/ValueConverters/FileIconConverter.cs Refactor to return ImageSource + integrate new stream wrappers.
src/Platforms/SecureFolderFS.Maui/UserControls/Widgets/HealthWidget.xaml.cs Make widget disposable + add progressing state.
src/Platforms/SecureFolderFS.Maui/UserControls/Widgets/HealthWidget.xaml Replace layout with new scan control + icon slot.
src/Platforms/SecureFolderFS.Maui/UserControls/Widgets/AggregatedDataWidget.xaml.cs Add read/write activity bindings with fade animation.
src/Platforms/SecureFolderFS.Maui/UserControls/Widgets/AggregatedDataWidget.xaml Redesign cards + add activity indicators.
src/Platforms/SecureFolderFS.Maui/UserControls/Options/OptionsContainer.xaml.cs Replace transparency flag with backplate toggle.
src/Platforms/SecureFolderFS.Maui/UserControls/Options/OptionsContainer.xaml Apply trigger-based backplate removal.
src/Platforms/SecureFolderFS.Maui/UserControls/HealthScanControl.xaml.cs Add shimmer/gradient scan control.
src/Platforms/SecureFolderFS.Maui/UserControls/HealthScanControl.xaml New scan control template with touch behavior.
src/Platforms/SecureFolderFS.Maui/UserControls/Browser/ItemProperty.xaml.cs Add subtitle truncation option.
src/Platforms/SecureFolderFS.Maui/UserControls/Browser/ItemProperty.xaml Bind truncation mode for subtitle label.
src/Platforms/SecureFolderFS.Maui/UserControls/Browser/BrowserControl.xaml.cs Reset thumbnail CTS on ItemsSource change.
src/Platforms/SecureFolderFS.Maui/UserControls/Browser/BrowserControl.xaml Update list/grid item visuals + show modified/size metadata.
src/Platforms/SecureFolderFS.Maui/UserControls/Browser/BrowserControl.Rendering.xaml.cs Generalize init enqueue to IAsyncInitialize.
src/Platforms/SecureFolderFS.Maui/Sheets/ViewOptionsSheet.xaml Use ProvideBackplate instead of removed property.
src/Platforms/SecureFolderFS.Maui/ServiceImplementation/BaseMauiMediaService.cs Return ImageStreamSource for read image file.
src/Platforms/SecureFolderFS.Maui/Resources/Styles/Converters.xaml Register new converters.
src/Platforms/SecureFolderFS.Maui/Popups/PropertiesPopup.xaml Add path/encrypted-path properties + thumbnail aspect handling.
src/Platforms/SecureFolderFS.Maui/Platforms/iOS/ServiceImplementation/IOSVaultFileSystemService.cs Use theme color lookup for icon tint.
src/Platforms/SecureFolderFS.Maui/Platforms/iOS/ServiceImplementation/IOSMediaService.cs Use CGImageSource thumbnailing + async video thumb generation.
src/Platforms/SecureFolderFS.Maui/Platforms/Android/ServiceImplementation/AndroidVaultFileSystemService.cs Use theme color lookup for icon tint.
src/Platforms/SecureFolderFS.Maui/Platforms/Android/ServiceImplementation/AndroidMediaService.cs Wrap generated thumbnails in ImageStreamSource.
src/Platforms/SecureFolderFS.Maui/AppModels/ImageStreamSource.cs New IImageStream implementation with Inner stream.
src/Platforms/SecureFolderFS.Maui/AppModels/ImageStream.cs Remove old stream image model.
src/Platforms/Directory.Packages.props Bump AcrylicView + AndroidX DocumentFile versions.
src/Core/SecureFolderFS.Core.FileSystem/Helpers/Health/HealthHelpers.Name.cs Update ciphertext filename cache after repair.
src/Core/SecureFolderFS.Core.FileSystem/Helpers/Health/HealthHelpers.Directory.cs Minor comment grammar.
src/Core/SecureFolderFS.Core.Cryptography/NameCrypt/AesSivNameCrypt.cs Switch name encryption implementation to AesSiv256.
src/Core/SecureFolderFS.Core.Cryptography/HeaderCrypt/AesGcmHeaderCrypt.cs Switch header encryption to AesGcm256.
src/Core/SecureFolderFS.Core.Cryptography/HeaderCrypt/AesCtrHmacHeaderCrypt.cs Switch to AesCtr256 implementation.
src/Core/SecureFolderFS.Core.Cryptography/ContentCrypt/AesGcmContentCrypt.cs Switch content encryption to AesGcm256.
src/Core/SecureFolderFS.Core.Cryptography/ContentCrypt/AesCtrHmacContentCrypt.cs Switch to AesCtr256 implementation.
src/Core/SecureFolderFS.Core.Cryptography/Cipher/AesSiv256.cs Rename/define AES-SIV wrapper class.
src/Core/SecureFolderFS.Core.Cryptography/Cipher/AesGcm256.cs Rename AES-GCM helper class.
src/Core/SecureFolderFS.Core.Cryptography/Cipher/AesCtr256.cs Rename AES-CTR helper class.
solution-config.props Remove local solution build override props.
README.md Update asset paths to .github/assets.
.gitattributes Remove repository attributes file.

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

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

Copilot reviewed 248 out of 265 changed files in this pull request and generated 3 comments.


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

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.

2 participants