Skip to content

Commit b65be9a

Browse files
authored
Release v0.13.2 (#209)
2 parents eef2623 + 76386ae commit b65be9a

212 files changed

Lines changed: 36344 additions & 21782 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/release.yml

Lines changed: 94 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,21 @@ jobs:
108108
echo "$NOTES" >> $GITHUB_OUTPUT
109109
echo "EOF" >> $GITHUB_OUTPUT
110110
111+
- name: Patch version for Tauri semver compatibility
112+
run: |
113+
# Tauri v2 requires strict semver (X.Y.Z) — prerelease suffixes are rejected
114+
# Strip prerelease suffix: 0.13.2-beta.1 → 0.13.2
115+
# For stable versions (no hyphen), this is a no-op
116+
VERSION="${RELEASE_TAG#v}"
117+
if [[ "$VERSION" == *-* ]]; then
118+
BASE_VERSION="${VERSION%%-*}"
119+
echo "Patching version for Tauri build: $VERSION → $BASE_VERSION"
120+
sed -i '' "s|\"version\": \".*\"|\"version\": \"$BASE_VERSION\"|" apps/fluux/src-tauri/tauri.conf.json
121+
sed -i '' "s|^version = \".*\"|version = \"$BASE_VERSION\"|" apps/fluux/src-tauri/Cargo.toml
122+
else
123+
echo "Stable version $VERSION — no patching needed"
124+
fi
125+
111126
- name: Build Tauri app
112127
uses: tauri-apps/tauri-action@v0
113128
env:
@@ -176,6 +191,22 @@ jobs:
176191
echo "$NOTES" >> $GITHUB_OUTPUT
177192
echo "EOF" >> $GITHUB_OUTPUT
178193
194+
- name: Patch version for Tauri semver compatibility
195+
shell: bash
196+
run: |
197+
# Tauri v2 requires strict semver (X.Y.Z) — prerelease suffixes are rejected
198+
# Strip prerelease suffix: 0.13.2-beta.1 → 0.13.2
199+
# For stable versions (no hyphen), this is a no-op
200+
VERSION="${RELEASE_TAG#v}"
201+
if [[ "$VERSION" == *-* ]]; then
202+
BASE_VERSION="${VERSION%%-*}"
203+
echo "Patching version for Tauri build: $VERSION → $BASE_VERSION"
204+
sed -i "s|\"version\": \".*\"|\"version\": \"$BASE_VERSION\"|" apps/fluux/src-tauri/tauri.conf.json
205+
sed -i "s|^version = \".*\"|version = \"$BASE_VERSION\"|" apps/fluux/src-tauri/Cargo.toml
206+
else
207+
echo "Stable version $VERSION — no patching needed"
208+
fi
209+
179210
- name: Build Tauri app
180211
uses: tauri-apps/tauri-action@v0
181212
env:
@@ -255,6 +286,7 @@ jobs:
255286
uses: actions/checkout@v4
256287
with:
257288
ref: ${{ env.RELEASE_TAG }}
289+
submodules: true
258290

259291
- name: Install Linux dependencies
260292
run: |
@@ -303,6 +335,21 @@ jobs:
303335
echo "$NOTES" >> $GITHUB_OUTPUT
304336
echo "EOF" >> $GITHUB_OUTPUT
305337
338+
- name: Patch version for Tauri semver compatibility
339+
run: |
340+
# Tauri v2 requires strict semver (X.Y.Z) — prerelease suffixes are rejected
341+
# Strip prerelease suffix: 0.13.2-beta.1 → 0.13.2
342+
# For stable versions (no hyphen), this is a no-op
343+
VERSION="${RELEASE_TAG#v}"
344+
if [[ "$VERSION" == *-* ]]; then
345+
BASE_VERSION="${VERSION%%-*}"
346+
echo "Patching version for Tauri build: $VERSION → $BASE_VERSION"
347+
sed -i "s|\"version\": \".*\"|\"version\": \"$BASE_VERSION\"|" apps/fluux/src-tauri/tauri.conf.json
348+
sed -i "s|^version = \".*\"|version = \"$BASE_VERSION\"|" apps/fluux/src-tauri/Cargo.toml
349+
else
350+
echo "Stable version $VERSION — no patching needed"
351+
fi
352+
306353
- name: Build Tauri binary
307354
run: |
308355
cd apps/fluux
@@ -326,7 +373,7 @@ jobs:
326373
# Copy desktop file and icons
327374
cp packaging/debian/fluux-messenger.desktop tarball-staging/fluux-messenger/
328375
cp apps/fluux/src-tauri/icons/128x128.png tarball-staging/fluux-messenger/fluux-messenger.png
329-
cp apps/fluux/src-tauri/icons/icon.png tarball-staging/fluux-messenger/fluux-messenger-256.png
376+
cp apps/fluux/src-tauri/icons/256x256.png tarball-staging/fluux-messenger/fluux-messenger-256.png
330377
331378
# Create tarball
332379
mkdir -p dist
@@ -350,8 +397,12 @@ jobs:
350397
export FLUUX_BINARY="apps/fluux/src-tauri/target/release/fluux"
351398
352399
# Update debian/changelog version from release tag
400+
# Convert pre-release for Debian (~ sorts before release, so 0.13.2~beta.1 < 0.13.2)
401+
# Note: cannot use ${VERSION//-/~} because bash 5+ applies tilde expansion
402+
# to the replacement string, turning ~ into $HOME
353403
VERSION="${RELEASE_TAG#v}"
354-
sed -i "1s/([^)]*)/($VERSION-1)/" debian/changelog
404+
DEB_VERSION=$(echo "$VERSION" | sed 's/-/~/g')
405+
sed -i "1s#([^)]*)#($DEB_VERSION-1)#" debian/changelog
355406
356407
# Build the .deb package (-d skips build dependency check since we use pre-built binary)
357408
dpkg-buildpackage -d -uc -us -b
@@ -383,9 +434,10 @@ jobs:
383434
cp apps/fluux/src-tauri/target/release/fluux flatpak-build/fluux-messenger
384435
cp packaging/debian/fluux-messenger.desktop flatpak-build/
385436
cp apps/fluux/src-tauri/icons/128x128.png flatpak-build/fluux-messenger.png
386-
cp apps/fluux/src-tauri/icons/icon.png flatpak-build/fluux-messenger-256.png
437+
cp apps/fluux/src-tauri/icons/256x256.png flatpak-build/fluux-messenger-256.png
387438
cp packaging/flatpak/com.processone.fluux.metainfo.xml flatpak-build/
388439
cp packaging/flatpak/com.processone.fluux.yaml flatpak-build/
440+
cp -r packaging/flatpak/shared-modules flatpak-build/
389441
390442
# Build Flatpak
391443
cd flatpak-build
@@ -465,6 +517,21 @@ jobs:
465517
- name: Build SDK
466518
run: npm run build:sdk
467519

520+
- name: Patch version for Tauri semver compatibility
521+
run: |
522+
# Tauri v2 requires strict semver (X.Y.Z) — prerelease suffixes are rejected
523+
# Strip prerelease suffix: 0.13.2-beta.1 → 0.13.2
524+
# For stable versions (no hyphen), this is a no-op
525+
VERSION="${RELEASE_TAG#v}"
526+
if [[ "$VERSION" == *-* ]]; then
527+
BASE_VERSION="${VERSION%%-*}"
528+
echo "Patching version for Tauri build: $VERSION → $BASE_VERSION"
529+
sed -i "s|\"version\": \".*\"|\"version\": \"$BASE_VERSION\"|" apps/fluux/src-tauri/tauri.conf.json
530+
sed -i "s|^version = \".*\"|version = \"$BASE_VERSION\"|" apps/fluux/src-tauri/Cargo.toml
531+
else
532+
echo "Stable version $VERSION — no patching needed"
533+
fi
534+
468535
- name: Build Tauri binary
469536
run: |
470537
cd apps/fluux
@@ -477,23 +544,37 @@ jobs:
477544
run: |
478545
VERSION="${RELEASE_TAG#v}"
479546
547+
# Convert pre-release version for RPM (hyphens not allowed in Version field)
548+
# 0.13.2-beta.1 → RPM_VERSION=0.13.2, RPM_RELEASE=0.1.beta.1
549+
# 0.13.2 → RPM_VERSION=0.13.2, RPM_RELEASE=1
550+
if [[ "$VERSION" == *-* ]]; then
551+
RPM_VERSION="${VERSION%%-*}"
552+
RPM_PRERELEASE="${VERSION#*-}"
553+
RPM_RELEASE="0.1.${RPM_PRERELEASE//-/.}"
554+
else
555+
RPM_VERSION="$VERSION"
556+
RPM_RELEASE="1"
557+
fi
558+
480559
# Setup RPM build directories
481560
mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
482561
483-
# Create source tarball for rpmbuild
484-
mkdir -p "fluux-messenger-${VERSION}"
485-
cp apps/fluux/src-tauri/target/release/fluux "fluux-messenger-${VERSION}/fluux-messenger"
486-
cp packaging/debian/fluux-messenger.desktop "fluux-messenger-${VERSION}/"
487-
mkdir -p "fluux-messenger-${VERSION}/icons"
488-
cp apps/fluux/src-tauri/icons/32x32.png "fluux-messenger-${VERSION}/icons/"
489-
cp apps/fluux/src-tauri/icons/128x128.png "fluux-messenger-${VERSION}/icons/"
490-
cp apps/fluux/src-tauri/icons/icon.png "fluux-messenger-${VERSION}/icons/256x256.png"
562+
# Create source tarball for rpmbuild (directory name must match %{version} in spec)
563+
mkdir -p "fluux-messenger-${RPM_VERSION}"
564+
cp apps/fluux/src-tauri/target/release/fluux "fluux-messenger-${RPM_VERSION}/fluux-messenger"
565+
cp packaging/debian/fluux-messenger.desktop "fluux-messenger-${RPM_VERSION}/"
566+
mkdir -p "fluux-messenger-${RPM_VERSION}/icons"
567+
cp apps/fluux/src-tauri/icons/32x32.png "fluux-messenger-${RPM_VERSION}/icons/"
568+
cp apps/fluux/src-tauri/icons/64x64.png "fluux-messenger-${RPM_VERSION}/icons/"
569+
cp apps/fluux/src-tauri/icons/128x128.png "fluux-messenger-${RPM_VERSION}/icons/"
570+
cp apps/fluux/src-tauri/icons/256x256.png "fluux-messenger-${RPM_VERSION}/icons/"
491571
492-
tar czvf ~/rpmbuild/SOURCES/fluux-messenger-${VERSION}.tar.gz "fluux-messenger-${VERSION}"
572+
tar czvf ~/rpmbuild/SOURCES/fluux-messenger-${RPM_VERSION}.tar.gz "fluux-messenger-${RPM_VERSION}"
493573
494574
# Copy and update spec file
495575
cp packaging/rpm/fluux-messenger.spec ~/rpmbuild/SPECS/
496-
sed -i "s/^Version:.*/Version: ${VERSION}/" ~/rpmbuild/SPECS/fluux-messenger.spec
576+
sed -i "s/^Version:.*/Version: ${RPM_VERSION}/" ~/rpmbuild/SPECS/fluux-messenger.spec
577+
sed -i "s/^Release:.*/Release: ${RPM_RELEASE}%{?dist}/" ~/rpmbuild/SPECS/fluux-messenger.spec
497578
498579
# Build RPM
499580
rpmbuild -bb ~/rpmbuild/SPECS/fluux-messenger.spec --target ${{ matrix.rpm_arch }}

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "packaging/flatpak/shared-modules"]
2+
path = packaging/flatpak/shared-modules
3+
url = https://github.com/flathub/shared-modules.git

CHANGELOG.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,51 @@ All notable changes to Fluux Messenger are documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [0.13.2] - 2026-02-19
9+
10+
### Added
11+
12+
- SDK: Connection state machine for more predictable connection lifecycle
13+
- `--dangerous-insecure-tls` CLI flag to disable TLS certificate verification
14+
- SDK diagnostic logging for user troubleshooting, with shortcut to access log file
15+
- Russian, Belarusian, Ukrainian, and Simplified Chinese translations (31 languages total)
16+
- Linux system tray support with close-to-tray functionality
17+
- Mod+Q full quit shortcut on Windows/Linux
18+
- SCRAM authentication mechanism support with browser polyfills and UI display
19+
- Windows drag and drop support
20+
21+
### Changed
22+
23+
- Beta release process for pre-release testing
24+
- Separated SM resumption and fresh session initialization paths
25+
- Optimized active conversation rendering with `useChatActive` hook
26+
- MAM guards to skip unnecessary operations during SM resumption
27+
- Improved connection fallback: proper WebSocket URL resolution and proxy restart
28+
- XMPP Console performance with `useCallback`/`React.memo`
29+
- Reduced MAM traffic on connect
30+
- Use system DNS as default with fallback to Tokio resolver
31+
32+
### Fixed
33+
34+
- Connection error handling with firewall hint for proxy mode failures
35+
- harden shutdown/cleanup flow and add DNS timing logs
36+
- Proxy memory handling with buffer size limits and better stanza extraction
37+
- Reconnection logic and login display optimizations
38+
- Connection error message formatting
39+
- Multiple freeze conditions on reconnect after sleep/network change or server restart
40+
- SRV priority sorting and TLS SNI domain handling
41+
- Room avatar loss when occupant goes offline
42+
- Duplicate messages from IRC bridges in MAM queries
43+
- Avatar blob URL memory leak with deduplication pool
44+
- Status message updates while staying online
45+
- MUC nick preserved on reconnect short-circuit
46+
- Linux logout lockups on proxy disconnect
47+
- Non-fatal errors now keep reconnecting with capped backoff
48+
- WebSocket protocol header compliance (RFC 7395) preventing browser rejection on Windows
49+
- Try all SRV record endpoints on connection failure instead of only the first
50+
- macOS reconnect reliability during sleep and focus events
51+
- Flatpak build updated for system tray support
52+
853
## [0.13.1] - 2026-02-13
954

1055
### Added

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
| Language Settings | Login Screen | Theme System |
4444
|-------------------|---|-------------|
4545
| <a href="assets/readme/languages.png"><img src="assets/readme/languages.png" width="250" style="border-radius: 8px;" alt="Language Settings"/></a> | <a href="assets/readme/login.png"><img src="assets/readme/login.png" width="250" style="border-radius: 8px;" alt="Login Screen"/></a> | <a href="assets/readme/split.png"><img src="assets/readme/split.png" width="250" style="border-radius: 8px;" alt="Theme System"/></a> |
46-
| *27 languages including all EU official languages* | *Simple Login Interface* | *Light and dark themes, more to come* |
46+
| *31 languages including all EU official languages* | *Simple Login Interface* | *Light and dark themes, more to come* |
4747

4848
| Admin Server Commands | Chat Rooms Management | Users Management |
4949
|----------------------|-----------------------|------------------|
@@ -63,7 +63,7 @@
6363
- **Real-time Messaging** - Typing indicators, message corrections, and delivery features
6464
- **Offline Support** - IndexedDB storage with automatic sync on reconnect
6565
- **Theme System** - Light/dark themes synchronized across devices
66-
- **Internationalization** - 26 languages including complete EU coverage (Bulgarian, Croatian, Czech, Danish, Dutch, English, Estonian, Finnish, French, German, Greek, Hungarian, Icelandic, Irish, Italian, Latvian, Lithuanian, Maltese, Norwegian, Polish, Portuguese, Romanian, Slovak, Slovenian, Spanish, Swedish)
66+
- **Internationalization** - 31 languages including complete EU coverage (Belarusian, Bulgarian, Catalan, Chinese (Simplified), Croatian, Czech, Danish, Dutch, English, Estonian, Finnish, French, German, Greek, Hungarian, Icelandic, Irish, Italian, Latvian, Lithuanian, Maltese, Norwegian, Polish, Portuguese, Romanian, Russian, Slovak, Slovenian, Spanish, Swedish, Ukrainian)
6767
- **Self-hostable** - Connect to any XMPP server, no vendor lock-in
6868
- **Open Source** - AGPL-3.0 licensed
6969

RELEASE_NOTES.md

Lines changed: 35 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,47 @@
1-
## What's New in v0.13.1
1+
## What's New in v0.13.2
22

33
### Added
44

5-
- Enhanced logging and diagnostics for connection troubleshooting
6-
- Tracing for keychain, idle detection, link preview, and startup operations
5+
- SDK: Connection state machine for more predictable connection lifecycle
6+
- `--dangerous-insecure-tls` CLI flag to disable TLS certificate verification
7+
- SDK diagnostic logging for user troubleshooting, with shortcut to access log file
8+
- Russian, Belarusian, Ukrainian, and Simplified Chinese translations (31 languages total)
9+
- Linux system tray support with close-to-tray functionality
10+
- Mod+Q full quit shortcut on Windows/Linux
11+
- SCRAM authentication mechanism support with browser polyfills and UI display
12+
- Windows drag and drop support
713

814
### Changed
915

10-
- Improved XMPP proxy robustness and TCP streaming error handling
11-
- Streamlined avatar restoration logic
16+
- Beta release process for pre-release testing
17+
- Separated SM resumption and fresh session initialization paths
18+
- Optimized active conversation rendering with `useChatActive` hook
19+
- MAM guards to skip unnecessary operations during SM resumption
20+
- Improved connection fallback: proper WebSocket URL resolution and proxy restart
21+
- XMPP Console performance with `useCallback`/`React.memo`
22+
- Reduced MAM traffic on connect
23+
- Use system DNS as default with fallback to Tokio resolver
1224

1325
### Fixed
1426

15-
- Memory and CPU leaks on connection loss
16-
- SRV flip and double-connect on reconnect after sleep
17-
- Background MAM catchup after reconnection
18-
- New message marker rewinding to earlier position
19-
- Room sorting after connection
20-
- Occupant avatar negative cache handling
21-
- Stuck tooltips on rapid hover
22-
- Room members sidebar state lost across view switches
23-
- HTTP upload discovery on server domain
24-
- Pointer cursor missing on interactive buttons
25-
- Windows code signing
27+
- Connection error handling with firewall hint for proxy mode failures
28+
- harden shutdown/cleanup flow and add DNS timing logs
29+
- Proxy memory handling with buffer size limits and better stanza extraction
30+
- Reconnection logic and login display optimizations
31+
- Connection error message formatting
32+
- Multiple freeze conditions on reconnect after sleep/network change or server restart
33+
- SRV priority sorting and TLS SNI domain handling
34+
- Room avatar loss when occupant goes offline
35+
- Duplicate messages from IRC bridges in MAM queries
36+
- Avatar blob URL memory leak with deduplication pool
37+
- Status message updates while staying online
38+
- MUC nick preserved on reconnect short-circuit
39+
- Linux logout lockups on proxy disconnect
40+
- Non-fatal errors now keep reconnecting with capped backoff
41+
- WebSocket protocol header compliance (RFC 7395) preventing browser rejection on Windows
42+
- Try all SRV record endpoints on connection failure instead of only the first
43+
- macOS reconnect reliability during sleep and focus events
44+
- Flatpak build updated for system tray support
2645

2746
---
2847
[Full Changelog](https://github.com/processone/fluux-messenger/blob/main/CHANGELOG.md)

apps/fluux/index.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
2424
</head>
2525
<body>
26+
<!-- process.nextTick shim for browserify-era SCRAM-SHA-1 crypto deps -->
27+
<script>globalThis.process=globalThis.process||{};process.nextTick=process.nextTick||(function(cb){var a=Array.prototype.slice.call(arguments,1);queueMicrotask(function(){cb.apply(null,a)})});</script>
2628
<div id="root"></div>
2729
<script type="module" src="/src/main.tsx"></script>
2830
</body>

apps/fluux/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@xmpp/fluux",
3-
"version": "0.13.1",
3+
"version": "0.13.2",
44
"private": true,
55
"type": "module",
66
"scripts": {
@@ -16,7 +16,7 @@
1616
"clean": "rm -rf dist",
1717
"clean:all": "rm -rf dist node_modules src-tauri/target",
1818
"tauri": "tauri",
19-
"tauri:dev": "tauri dev",
19+
"tauri:dev": "tauri dev -- -- --verbose",
2020
"tauri:build": "./scripts/tauri-build.sh"
2121
},
2222
"dependencies": {

0 commit comments

Comments
 (0)