Skip to content

Release v0.13.2#209

Merged
mremond merged 205 commits intomainfrom
release/0.13.2
Feb 19, 2026
Merged

Release v0.13.2#209
mremond merged 205 commits intomainfrom
release/0.13.2

Conversation

@mremond
Copy link
Member

@mremond mremond commented Feb 19, 2026

What's New in v0.13.2

Added

  • SDK: Connection state machine for more predictable connection lifecycle
  • --dangerous-insecure-tls CLI flag to disable TLS certificate verification
  • SDK diagnostic logging for user troubleshooting, with shortcut to access log file
  • Russian, Belarusian, Ukrainian, and Simplified Chinese translations (31 languages total)
  • Linux system tray support with close-to-tray functionality
  • Mod+Q full quit shortcut on Windows/Linux
  • SCRAM authentication mechanism support with browser polyfills and UI display
  • Windows drag and drop support

Changed

  • Beta release process for pre-release testing
  • Separated SM resumption and fresh session initialization paths
  • Optimized active conversation rendering with useChatActive hook
  • MAM guards to skip unnecessary operations during SM resumption
  • Improved connection fallback: proper WebSocket URL resolution and proxy restart
  • XMPP Console performance with useCallback/React.memo
  • Reduced MAM traffic on connect
  • Use system DNS as default with fallback to Tokio resolver

Fixed

  • Connection error handling with firewall hint for proxy mode failures
  • Harden shutdown/cleanup flow and add DNS timing logs
  • Proxy memory handling with buffer size limits and better stanza extraction
  • Reconnection logic and login display optimizations
  • Connection error message formatting
  • Multiple freeze conditions on reconnect after sleep/network change or server restart
  • SRV priority sorting and TLS SNI domain handling
  • Room avatar loss when occupant goes offline
  • Duplicate messages from IRC bridges in MAM queries
  • Avatar blob URL memory leak with deduplication pool
  • Status message updates while staying online
  • MUC nick preserved on reconnect short-circuit
  • Linux logout lockups on proxy disconnect
  • Non-fatal errors now keep reconnecting with capped backoff
  • WebSocket protocol header compliance (RFC 7395) preventing browser rejection on Windows
  • Try all SRV record endpoints on connection failure instead of only the first
  • macOS reconnect reliability during sleep and focus events
  • Flatpak build updated for system tray support

…n initialization paths.

- Splitter sideEffects by functional areas.
…c issues

- Debounce SM ack (<a/>) responses to reduce excessive network traffic during high-volume activity.
- Fix ackQueue crash issue caused by empty outbound queue after page reload.
- Introduced `useChatActive` for lightweight active conversation state and actions.
- Updated `ChatView` to use `useChatActive` instead of `useChat` to prevent unnecessary re-renders.
- Exported `useChatActive` in index files to make it available for reuse.
- Introduced `useChatActive` for lightweight active conversation state and actions.
- Updated `ChatView` to use `useChatActive` instead of `useChat` to prevent unnecessary re-renders.
- Exported `useChatActive` in index files to make it available for reuse.
…longside `Contact` and remove unused presence logic in `ChatView`.
RPM rejects hyphens in Version field, causing beta releases to fail.
Split prerelease into Version + Release fields (e.g. 0.13.2 + 0.1.beta.1).
Convert hyphens to tildes for Debian (~beta.1 sorts correctly as pre-release).
Update rename script regex patterns to match both stable and prerelease filenames.
…ereleases

MSI requires numeric-only version identifiers. Convert prerelease versions
(e.g. 0.13.2-beta.1 → 0.13.2.1) in tauri.conf.json before building on
Windows and macOS. Only applied when the tag is detected as a prerelease.
…r for deb

Tauri v2 validates version from both tauri.conf.json and Cargo.toml, so
patch both for prerelease builds. Use # as sed delimiter for debian
changelog to avoid potential conflicts with version string characters.
The is_prerelease output from create-release job may not propagate
correctly to downstream jobs. Remove the if condition and handle
stable vs prerelease inline with a bash check instead.
Tauri v2 requires strict semver (X.Y.Z) — both prerelease suffixes
(0.13.2-beta.1) and 4-segment versions (0.13.2.1) are rejected.

- prepare-release.js: write base version into tauri.conf.json and
  Cargo.toml, keeping full prerelease in package.json files
- release.yml: all 4 build jobs now strip to base version consistently;
  added missing patch step for both Linux builds
Bash 5+ applies tilde expansion to the replacement string in
${var//-/~}, turning ~ into $HOME (/home/runner on CI).
Use sed 's/-/~/g' to safely convert hyphens to tildes for Debian
version formatting.
…tors

This covers:

- Creating useRoomActive() hook for RoomView (mirrors existing useChatActive() pattern)
- Updating SDK room/chat selectors and store methods to iterate roomEntities/roomMeta/conversationMeta instead of combined maps
- Replacing heavy useEvents()/useAdmin() hooks in Sidebar with focused store selectors
This covers:

- New render stability test suite (8 test files) proving hooks like useChatActive/useRoomActive isolate components from background store updates
- Memoization of store selectors (joinedRooms, allRooms, sortedContacts, etc.) by Map reference identity — reduces repeated calls from O(n log n) to O(1)
- Fix app test setup: global mock for renderLoopDetector, add useRosterStore to ChatView/ChatHeader test mocks.
…k -> proxy) and log WS miss

- Tauri/proxy path now does a fast XEP-0156 check and skips default wss://<domain>/ws fallback.
- Web/no-proxy path keeps default WebSocket fallback.
- Login resolution now prefers embedded well-known WebSocket URLs first.
- Added explicit log when XEP-0156 has no endpoint and fallback switches to proxy.
…hide/show

Work around tao CSD bug (tauri#11856) where client-side decoration
hit-test regions become stale after a hide→show cycle, making titlebar
buttons and webview clicks unresponsive.  Briefly toggle fullscreen
after show() to force GTK to recalculate decorations, then restore
the saved window state.  Also emit a tray-restore-focus event so the
frontend can call getCurrentWebview().setFocus() to hand input focus
to the WebKit widget.
…to comply with RFC 7395 and prevent browser rejection, especially on Windows.
…nstead of only the first

Previously, resolve_xmpp_server returned only the highest-priority SRV
record from each type (_xmpps-client, _xmpp-client). If that endpoint
was unreachable (e.g., firewalled port), the connection failed entirely.

Now all SRV records are collected and tried in priority order. The proxy
falls through to the next endpoint on TCP or TLS failure, with clear
per-attempt logging and a combined error message when all fail.
…r, including mechanism tracking and UI display
…r, including mechanism tracking and UI display
@mremond mremond merged commit b65be9a into main Feb 19, 2026
1 check passed
@mremond mremond deleted the release/0.13.2 branch February 19, 2026 14:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant