github rgdevment/CopyPaste v2.2.5

latest releases: v2.5.0, v2.4.1, v2.4.0...
one month ago
  • Replaced the fragile compile-time STORE_BUILD flag with a runtime FFI call to
    GetCurrentPackageFullName (kernel32). The app now detects at startup whether it
    is running as an MSIX (Microsoft Store) package or a standalone installer.

  • Bootstrap log now includes the install type, full package name, resolved data path
    and acrylic status: msix=true|false, package=..., base=..., acrylicInit=...

  • Added WinKnownFolders.localAppData() - resolves %LOCALAPPDATA% via
    SHGetKnownFolderPath (shell32) instead of reading the environment variable.
    Works correctly in edge cases where the env var is absent (services, scheduled tasks).

  • StorageConfig.create() now accepts a windowsLocalAppDataResolver parameter so
    the resolution strategy is fully injectable and testable.

  • Removed the PowerShell-based StartupTask registration (~1.5 s overhead, AV friction).

  • MSIX builds now declare the startup task in the manifest (Enabled="true") and, when
    the user toggles the setting in-app, open ms-settings:startupapps via
    explorer.exe so Windows handles enablement - consistent with Microsoft's 2026
    Store guidelines.

  • Fixed a critical issue where new installs on Windows started with the main window
    hidden. Users who installed via the Microsoft Store and clicked the app icon saw
    nothing because the window remained hidden during the entire initialisation sequence.

  • showOnStart now includes Windows for first-run and onboarding scenarios.

  • Gate-mode window (enterGateMode) now sets skipTaskbar=false so the onboarding
    window is always reachable via the taskbar and Alt+Tab even if tray init fails.

  • New CrashLogger service writes a persistent crash.log to the app data folder
    on every unhandled error or startup failure, even before AppLogger is ready.

  • Log entries include: UTC timestamp, OS name/version, Dart version, context label,
    error message and stack trace.

  • Automatic PII redaction at write time: USERPROFILE/HOME path, username
    segments (\Users<user>, /Users/, /home/) and email addresses
    are replaced with , and before anything is written.

  • File is capped at 512 KB; older content is cleared automatically when the limit
    is reached.

  • main() is now wrapped in runZonedGuarded + FlutterError.onError +
    PlatformDispatcher.onError, all routing to CrashLogger.report.

  • A 10-second watchdog timer in _initShell() calls _forceVisibleFallback() if
    shell initialisation hangs, making the app window visible as a recovery path.

  • exportLogs now bundles crash.log (if present) inside the exported zip.

  • All log and crash file content is passed through CrashLogger.redact before being
    added to the archive - submitted reports contain no usernames, home paths or emails.

  • PRIVACY.md updated: new Crash Log section, crash.log added to all per-platform
    storage tables, export section reflects redaction, "Does NOT do" list updated.

  • README.md updated: export description and bug-reporting guide mention crash.log
    and automatic PII redaction.

  • New crash_logger_test.dart - 35 tests covering initialize, report, file rotation,
    overridePath, redaction (HOME, username, email, no false-positives).

  • support_service_test.dart - 7 new tests: crash.log included/excluded in zip,
    count excludes crash.log, redaction applied to logs and crash.log, non-sensitive
    content preserved.

  • storage_config_test.dart - 2 new tests: resolver used on Windows, ignored on
    other platforms.

  • Additional tests for search functionality and backup restoration callbacks.

Full Changelog: v2.2.4...v2.2.5

Don't miss a new CopyPaste release

NewReleases is sending notifications on new releases.