What's New in v0.16.1
Added
- macOS: clicking a notification now opens the exact conversation it belongs to (native notification routing)
- Desktop: relaunching the app focuses the already-running window instead of opening a second instance
- Linux: quit when the window is closed if the system tray is unavailable, so the app can always be reopened
- Login screen validates JID format locally before attempting to connect
- Enhanced freeze-triage diagnostic probes in fluux.log for troubleshooting
Changed
- Group chats: skip member-list discovery for rooms that forbid affiliation lists, reducing traffic and avoiding errors
- Group chats: occupant avatar updates coalesced on room join to reduce re-renders
- Empty state screens use consistent icons from the icon rail
Fixed
- Group chat history: closed catch-up gaps that could silently drop a stretch of messages after long offline periods, with a "load missing messages" marker to recover them (also applied to 1:1 history)
- Connections: race IPv4 and IPv6 addresses (Happy Eyeballs) so a broken IPv6 route no longer stalls connecting
- OpenPGP: publish your public-key fingerprint in upper-case as required by XEP-0373, improving cross-client key discovery
- Presence pills shown in grey while reconnecting instead of disappearing
- Encrypted reactions no longer surface as a blank conversation preview
- Show a "decrypting…" placeholder while the encryption plugin is still loading instead of a blank message
- Opening a contact profile no longer bounces back to the conversation
- Link-preview images retried once before being hidden
- Stream Management: keep sm in stream features unless it was negotiated inline, fixing some reconnection cases
- Desktop: downloading an image now uses the native save dialog
- About dialog width reduced
- Reconnection details (spinner, retry countdown, cancel) moved back to the sidebar status area — the top connection banner made the UI jump on unstable connections
- OpenPGP: fingerprint case normalized in peer-verification trust checks (green lock now reliable across clients)
- MUC occupant avatar preserved across presence updates
- Desktop: system proxy bypassed for loopback XMPP bridge hop to prevent connection failures
- Whisper: allow continuing a whispered conversation from its conversation frame
- Whisper menu action uses correct verb form across all locales
- Reply-quote bubble uses the same sender color as the original message
- Message list: fixed undefined React key on certain message rows
- Reply-quote previews render as nested vertical bars instead of raw quote markers
- Composer resize scroll correction coalesced into animation frame for smoother behavior
- Content ResizeObserver correctly created on same-commit mounts
- Image attachment placeholder reserved in error state to prevent layout shift
- MAM: bodiless encrypted messages from archive surfaced instead of dropped
- MAM: backward-pagination cursor corrected for scroll-up history loading