Themes, window memory, and stability updates

Added theme switching and window state memory, while improving localization, purchase info, external opening, deletion retries, and background reliability.

Added

  • Added app theme switching with system, light, and dark display modes.
  • Added window state memory so Picser can preserve window size and sidebar visibility after reopening.

Changed

  • Improved language switching so settings, keyboard shortcuts, and related interface text refresh immediately after changing the app language.
  • Improved the subscription dialog by restoring the native close button and restructuring the “Restore Purchase / Refresh Receipt” area for clearer actions.
  • Improved purchase information display so subscription and lifetime purchase names are easier to distinguish.
  • Updated the Terms of Use and Privacy Policy links to the official website URLs.

Fixed

  • Fixed the About page not refreshing its text after switching languages.
  • Fixed unstable window reuse and foreground activation when opening external files, with Picser now trying to reuse the current main window.
  • Fixed deletion retries not preserving the previous deletion mode and orphan tag handling options after a batch deletion failure.
  • Fixed tag database migration stability when migrations run repeatedly or are interrupted, reducing upgrade failure risk.

Performance

  • Optimized image zoom container refreshes by quantizing viewport size changes, reducing unnecessary view updates and improving large-image browsing smoothness.
  • Optimized concurrent drag-and-drop opening and ordering recovery to reduce data races and improve batch import stability.
  • Optimized image disk cache metadata writes to reduce background overhead.
  • Optimized purchase entitlement persistence and keychain writes to reduce unnecessary state churn.