Skip to content

v0.2.10

Choose a tag to compare

@goccx goccx released this 01 Nov 13:30
· 9 commits to main since this release

Gotify Desktop v0.2.10

Fixes & Performance Improvements (macOS 12–15+)

  • Zero Old-Message Ghosting & Persistent NSTableView Reuse (InboxView):
    • Frame T0 immediately hides the message list (opacity(0)) and displays .loading (ProgressView) so old messages from the previous category never linger on screen.
    • Kept a single persistent MessageListView (NSTableView) mounted inside ReadingCanvas across category switches (removing whole-table .id(page) teardown and avoiding 100 -> 0 -> 100 row deletion/re-insertion), preserving the NSHostingView cell reuse pool on macOS 12.
    • Set tableView.rowHeight = 84 so AppKit's usesAutomaticRowHeights estimates ~10 visible rows per viewport instead of 50+ rows on macOS 12.
  • Row Rendering & Visibility Coalescing:
    • Coalesced SwiftUI .onAppear / .onDisappear visibility callbacks on @MainActor into a single batched actor update per frame.
    • Precomputed GotifyMessage.listSummary as plain text (String) and removed per-row TimelineView instances and redundant tooltip tracking areas.
  • Window Close & Status Bar Lifecycle Preserved:
    • Clicking the red close button (X) hides the main window and switches NSApp to .accessory policy (hiding the Dock icon), while reopening from the status bar or kAEReopenApplication restores .regular policy.

SHA-256 Checksums

  • GotifyDesktop-macOS-arm64.dmg: 859484f8b41783e24ba93343d25f487df394a67aa75cb7b1d1142f807c443df2
  • GotifyDesktop-macOS-amd64.dmg: ca6534b46ed0bac21e335566806a912c67044a5796bbcf8485e00fc3d2905557