Skip to content

v0.2.19

Latest

Choose a tag to compare

@goccx goccx released this 01 Nov 18:24

Performance & Stability (macOS 12+)

  • Zero-T0-Teardown Sidebar Switching (InboxView): Keep displayPage bound to readyPage on Frame T0 (isTransitioning == true) while hiding the underlying MessageListView via .opacity(0) and presenting ProgressView overlay. Frame T0 no longer unmounts or diffs the previous 100-row NSTableView inside mouseDown.
  • Defer Uncached Table Swap Until REST Completion (InboxView): When switching to an uncached category, keep readyPage unchanged while the .loading overlay is shown until loadMessages returns, so clicking across uncached categories performs zero intermediate NSTableView teardowns or rebuilds.
  • Settle-Guarded & Scroll-Driven Incremental Row Mounting (MessageListView): Mount the initial 15-row viewport (< 3ms), expand immediately if the user scrolls near the bottom of mounted rows, and wait a 100ms settle interval before expanding off-screen rows in 20-row slices so rapid sidebar navigation only ever tears down 15 rows (< 2ms).
  • Deterministic Load Cancellation (GotifySessionController): Immediately reset a cancelled page load's .loading state on MessageStore before starting the next page load, preventing async Alamofire cancellation from racing with rapid A -> B -> A reselection.
  • Pre-Resolved Localization Bundles (Localized) & Static Icon Fallback (GotifyApplicationIcon): Retain "en" and "zh-Hans" Bundle instances as static constants and skip LazyImage (@StateObject FetchImage) when url == nil.

Checksums (SHA-256)

  • GotifyDesktop-macOS-arm64.dmg: 0071392e25a7578351501e989b08bd9a04fa026b4b8622d6f56e65f4573bf91e
  • GotifyDesktop-macOS-amd64.dmg: ffdbdc659ca195d8d29a7674153f3c8959557c4b27a99f300f4bc9124af579da