Skip to content

Commit 83a0c04

Browse files
authored
Release 0.14.0-beta.1 (#231)
2 parents c739b8d + 4d779ac commit 83a0c04

208 files changed

Lines changed: 21239 additions & 4599 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.

CHANGELOG.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,57 @@ 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.14.0] - 2026-03-16
9+
10+
### Added
11+
12+
- XEP-0425: Message Moderation — moderators can retract other users' messages in MUC rooms, with moderator attribution and reason display
13+
- MUC room creation, configuration, and destruction support
14+
- MUC room user management: affiliation/role changes, kick, and ban
15+
- MUC hat management UI for room owners (XEP-0317): define, assign, and remove hats via ad-hoc commands
16+
- Per-room ignored user management with server-side storage (XEP-0223)
17+
- RSM pagination support for MUC room browsing
18+
- Contact management dropdown in the occupant room sidebar
19+
- Contact addition button in profile screen
20+
- Occupant context menu on right-click/long-press of nicknames in room messages
21+
- Suppress sound and desktop notifications when presence is Do Not Disturb
22+
- Open external links in Tauri webview popup instead of system browser
23+
- XEP-0054: vCard info display in contact popover (full name, organisation, email, country)
24+
- XEP-0054: vCard editing in profile settings — add, edit, and remove vCard fields (full name, company, email, country)
25+
- XEP-0054: vCard info display in contact profile view
26+
- Avatar lightbox overlay on click in message view
27+
- Full-screen occupant panel on small screens
28+
- Font size setting in appearance preferences
29+
- PEP-based conversation list synchronisation (ConversationSync module)
30+
- XEP-0202: Entity Time — display contact local time in chat header and contact popover
31+
32+
### Changed
33+
34+
- Improved mobile rendering layout
35+
- Context menus close on scroll for better UX
36+
- Reply arrow moved to avatar column in reply context for better visual alignment
37+
- Dropdown menus aligned to the left on small screens
38+
- Extracted reusable ModalShell, ConfirmDialog, and useNotificationPermission components
39+
40+
### Fixed
41+
42+
- Active room not moving to top of sidebar on new messages
43+
- New message marker lagging behind when switching conversations
44+
- Blank window in MUC rooms caused by stale ResizeObserver ref
45+
- Reactions UI disabled in rooms without stable occupant identity
46+
- Lazy loading pagination in room discovery
47+
- Ignored user filtering improved by cross-matching JIDs and occupant IDs
48+
- Notifications suppressed for replies quoting ignored users in MUC rooms
49+
- Native window theme syncing for 'system' mode in Tauri
50+
- Contacts sidebar button alignment
51+
- Navigation stack management to help on mobile
52+
- Chevron rotation logic in RoomHeader
53+
- Modals closing when click-dragging from inside to outside
54+
- Notification lastSeenMessageId not advancing on outgoing messages
55+
- Devices section rendering in UserInfoPopover
56+
- Fallback to occupant JID username when contact JID is unavailable
57+
- Owner showing as moderator in chat view
58+
859
## [0.13.3] - 2026-03-04
960

1061
### Added

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
- **Cross-platform** - Available on web and desktop (Tauri-based)
5959
- **Extensive XMPP Protocol Support** - 40+ XEPs implemented, including MAM, MUC, HTTP File Upload, message carbons, and reactions (and more to come)
6060
- **Built-in XMPP Console** - Debug interface for developers and power users
61-
- **Multi-user Chat** - Complete MUC support with roles, affiliations, @mentions, and bookmarks
61+
- **Multi-user Chat** - Complete MUC support with roles, affiliations, hats, @mentions, and bookmarks
6262
- **File Sharing** - HTTP uploads with thumbnails, progress indicators, and previews
6363
- **Real-time Messaging** - Typing indicators, message corrections, and delivery features
6464
- **Web Push Notifications** - Receive notifications even when the browser tab is closed (via Service Worker and VAPID)

RELEASE_NOTES.md

Lines changed: 41 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,53 @@
1-
## What's New in v0.13.3
1+
## What's New in v0.14.0-beta.1
22

33
### Added
44

5-
- MUC room member affiliation discovery for avatars, panel, and mentions
6-
- MUC message history authors included in mention autocomplete
7-
- Session persistence scoped by JID for multi-account isolation
8-
- XMPP Console log batching with increased entry limit
5+
- XEP-0425: Message Moderation — moderators can retract other users' messages in MUC rooms, with moderator attribution and reason display
6+
- MUC room creation, configuration, and destruction support
7+
- MUC room user management: affiliation/role changes, kick, and ban
8+
- MUC hat management UI for room owners (XEP-0317): define, assign, and remove hats via ad-hoc commands
9+
- Per-room ignored user management with server-side storage (XEP-0223)
10+
- RSM pagination support for MUC room browsing
11+
- Contact management dropdown in the occupant room sidebar
12+
- Contact addition button in profile screen
13+
- Occupant context menu on right-click/long-press of nicknames in room messages
14+
- Suppress sound and desktop notifications when presence is Do Not Disturb
15+
- Open external links in Tauri webview popup instead of system browser
16+
- XEP-0054: vCard info display in contact popover (full name, organisation, email, country)
17+
- XEP-0054: vCard editing in profile settings — add, edit, and remove vCard fields (full name, company, email, country)
18+
- XEP-0054: vCard info display in contact profile view
19+
- Avatar lightbox overlay on click in message view
20+
- Full-screen occupant panel on small screens
21+
- Font size setting in appearance preferences
22+
- PEP-based conversation list synchronisation (ConversationSync module)
23+
- XEP-0202: Entity Time — display contact local time in chat header and contact popover
924

1025
### Changed
1126

12-
- Windows installer defaults to passive install mode
13-
- Keyboard shortcut listener dependencies stabilized
14-
- Stanza-id references enforced in MUCs when available
27+
- Improved mobile rendering layout
28+
- Context menus close on scroll for better UX
29+
- Reply arrow moved to avatar column in reply context for better visual alignment
30+
- Dropdown menus aligned to the left on small screens
31+
- Extracted reusable ModalShell, ConfirmDialog, and useNotificationPermission components
1532

1633
### Fixed
1734

18-
- SM resumption now detects cache clear and triggers full sync
19-
- Roster subscription refusal no longer creates ghost entries
20-
- Message reactions normalized for consistent reactor identifiers
21-
- Viewport pending reports flushed on conversation switch to avoid stale states
22-
- Reply behavior uses client-generated IDs for chat messages (XEP-0461)
23-
- Unicode normalization improved for MUC nickname mention matching
24-
- Media URLs with special characters in path handled correctly
25-
- Linux keyring uses Secret Service backend for persistent credential storage
26-
- Linux WebKitGTK dmabuf renderer disabled to prevent Wayland crash
27-
- iOS safe area insets for camera cutout and home indicator (PWA)
28-
- Deep link async URI processing errors handled explicitly
29-
- Service worker install and audio notification guards hardened
30-
- Clear-storage event listener made unmount-safe
31-
- Flatpak runtime updated to GNOME 49
35+
- Active room not moving to top of sidebar on new messages
36+
- New message marker lagging behind when switching conversations
37+
- Blank window in MUC rooms caused by stale ResizeObserver ref
38+
- Reactions UI disabled in rooms without stable occupant identity
39+
- Lazy loading pagination in room discovery
40+
- Ignored user filtering improved by cross-matching JIDs and occupant IDs
41+
- Notifications suppressed for replies quoting ignored users in MUC rooms
42+
- Native window theme syncing for 'system' mode in Tauri
43+
- Contacts sidebar button alignment
44+
- Navigation stack management to help on mobile
45+
- Chevron rotation logic in RoomHeader
46+
- Modals closing when click-dragging from inside to outside
47+
- Notification lastSeenMessageId not advancing on outgoing messages
48+
- Devices section rendering in UserInfoPopover
49+
- Fallback to occupant JID username when contact JID is unavailable
50+
- Owner showing as moderator in chat view
3251

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

SUPPORTED_XEPS.md

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ This document lists the XMPP Extension Protocols (XEPs) and related RFCs impleme
2020
| [XEP-0156](https://xmpp.org/extensions/xep-0156.html) | Discovering Alternative XMPP Connection Methods | ✅ Implemented | Auto-discovers WebSocket endpoint via host-meta (HTTPS-only for security) |
2121
| [XEP-0198](https://xmpp.org/extensions/xep-0198.html) | Stream Management | ✅ Implemented | Session resumption, message delivery reliability, ack tracking |
2222
| [XEP-0199](https://xmpp.org/extensions/xep-0199.html) | XMPP Ping | ✅ Implemented | Responds to server/contact pings, uses ping for connection liveness checks |
23+
| [XEP-0202](https://xmpp.org/extensions/xep-0202.html) | Entity Time | ✅ Implemented | Responds to queries; queries contacts and displays local time in chat header and contact popover |
2324
| [XEP-0280](https://xmpp.org/extensions/xep-0280.html) | Message Carbons | ✅ Implemented | Sync messages across multiple connected clients |
2425
| [XEP-0368](https://xmpp.org/extensions/xep-0368.html) | SRV Records for XMPP over TLS | ✅ Implemented | Desktop: SRV lookup for `_xmpps-client._tcp` (direct TLS) and `_xmpp-client._tcp` (STARTTLS) via Rust proxy |
2526

@@ -59,6 +60,7 @@ This document lists the XMPP Extension Protocols (XEPs) and related RFCs impleme
5960
| [XEP-0461](https://xmpp.org/extensions/xep-0461.html) | Message Replies | ✅ Implemented | Reply-to with quoted preview and fallback body |
6061
| [XEP-0308](https://xmpp.org/extensions/xep-0308.html) | Last Message Correction | ✅ Implemented | Edit last sent message with validation |
6162
| [XEP-0424](https://xmpp.org/extensions/xep-0424.html) | Message Retraction | ✅ Implemented | Delete own messages with sender verification |
63+
| [XEP-0425](https://xmpp.org/extensions/xep-0425.html) | Message Moderation | ✅ Implemented | Moderators can retract other users' messages in MUC rooms, with reason display |
6264
| [XEP-0363](https://xmpp.org/extensions/xep-0363.html) | HTTP File Upload | ✅ Implemented | File upload with drag-and-drop, progress indicator, automatic service discovery |
6365
| [XEP-0066](https://xmpp.org/extensions/xep-0066.html) | Out of Band Data | ✅ Implemented | File URL sharing with thumbnails |
6466
| [XEP-0245](https://xmpp.org/extensions/xep-0245.html) | The /me Command | ✅ Implemented | Action messages displayed in italic with sender name |
@@ -76,15 +78,15 @@ This document lists the XMPP Extension Protocols (XEPs) and related RFCs impleme
7678
|-------------------------------------------------------|-----------------------------------------------|---------------|----------------------------------------------------------------------------------------------------------------------|
7779
| [XEP-0060](https://xmpp.org/extensions/xep-0060.html) | Publish-Subscribe | ✅ Implemented | PubSub event handling for avatars, nicknames, bookmarks, and settings |
7880
| [XEP-0163](https://xmpp.org/extensions/xep-0163.html) | Personal Eventing Protocol | ✅ Implemented | PEP notifications for avatars (XEP-0084), nicknames (XEP-0172), bookmarks (XEP-0402), appearance settings (XEP-0223) |
79-
| [XEP-0223](https://xmpp.org/extensions/xep-0223.html) | Persistent Storage of Private Data via PubSub | ✅ Implemented | Theme/appearance settings sync across devices |
81+
| [XEP-0223](https://xmpp.org/extensions/xep-0223.html) | Persistent Storage of Private Data via PubSub | ✅ Implemented | Private PEP storage for appearance settings, conversation list sync, and per-room ignored users |
8082

8183
## Multi-User Chat (MUC)
8284

8385
| XEP | Name | Status | Notes |
8486
|-------------------------------------------------------|-----------------------------|---------------|-------------------------------------------------------------------------------------------------------------|
8587
| [XEP-0045](https://xmpp.org/extensions/xep-0045.html) | Multi-User Chat | ✅ Implemented | Join/leave rooms, messaging, occupant list with presence tooltips, roles/affiliations, mediated invitations |
86-
| [XEP-0054](https://xmpp.org/extensions/xep-0054.html) | vCard-temp | ✅ Implemented | Room avatar retrieval and display |
87-
| [XEP-0317](https://xmpp.org/extensions/xep-0317.html) | Hats | ✅ Implemented | Custom role tags displayed as colored badges in occupant panel and messages |
88+
| [XEP-0054](https://xmpp.org/extensions/xep-0054.html) | vCard-temp | ✅ Implemented | Room avatar retrieval and display, contact vCard info in popover (full name, org, email, country) |
89+
| [XEP-0317](https://xmpp.org/extensions/xep-0317.html) | Hats | ✅ Implemented | Custom role badges in occupant panel and messages, hat management UI (define, assign, unassign via ad-hoc commands) |
8890
| [XEP-0392](https://xmpp.org/extensions/xep-0392.html) | Consistent Color Generation | ✅ Implemented | Deterministic colors for avatars, nicknames, and hat badges based on identifier |
8991
| [XEP-0249](https://xmpp.org/extensions/xep-0249.html) | Direct MUC Invitations | ✅ Implemented | Receive room invitations with Accept/Decline in Events view |
9092
| [XEP-0372](https://xmpp.org/extensions/xep-0372.html) | References | ✅ Implemented | @mention notifications with position-based highlighting |
@@ -116,12 +118,28 @@ The following XEPs are planned for future implementation:
116118

117119
## Custom Extensions
118120

119-
Fluux also uses custom extensions in the `urn:xmpp:fluux:0` namespace:
121+
Fluux uses custom extensions across several namespaces:
122+
123+
### Bookmark Extensions (`urn:xmpp:fluux:0`)
120124

121125
- **Room notification preferences**: Stored in XEP-0402 bookmark extensions to enable per-room notification settings (mentions only vs. all messages)
122-
- **@all mentions**: Room-wide mention indicator for notifying all participants
126+
- **@all mentions**: Room-wide mention indicator (`urn:fluux:mentions:0`) for notifying all participants
123127
- **Quick chat marker**: `<quickchat xmlns="urn:xmpp:fluux:0"/>` element included in MUC invitations to indicate the room is a temporary quick chat (non-persistent, auto-destroys when empty)
124128

129+
### Private PEP Storage (XEP-0223)
130+
131+
| Namespace | Purpose |
132+
|--------------------------------------|--------------------------------------------------------------------------------------------------------------------|
133+
| `urn:xmpp:fluux:appearance:0` | Theme and appearance settings sync across devices |
134+
| `urn:xmpp:fluux:conversations:0` | Conversation list sync (active and archived 1:1 conversations) with debounced publishing and merge-on-reconnect |
135+
| `urn:xmpp:fluux:ignored-users:0` | Per-room ignored users list, stored as one PEP item per room |
136+
137+
### Other
138+
139+
| Namespace | Purpose |
140+
|--------------------------|-------------------------------------------------------------------|
141+
| `urn:fluux:easter-egg:0` | Easter egg animations triggered by specific message content |
142+
125143
## ejabberd Business Edition Extensions
126144

127145
Fluux supports the following proprietary extensions from ejabberd Business Edition:

apps/fluux/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@xmpp/fluux",
3-
"version": "0.13.3",
3+
"version": "0.14.0-beta.1",
44
"private": true,
55
"type": "module",
66
"scripts": {

apps/fluux/src-tauri/Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

apps/fluux/src-tauri/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "fluux"
3-
version = "0.13.3"
3+
version = "0.14.0"
44
description = "A powerful, productive messaging client that's pleasant to use."
55
authors = ["ProcessOne"]
66
license = "AGPL-3.0-or-later"

apps/fluux/src-tauri/capabilities/default.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
"core:window:allow-set-focus",
2121
"core:window:allow-set-theme",
2222
"core:webview:allow-webview-position",
23+
"core:webview:allow-create-webview-window",
24+
"core:window:allow-create",
2325
"shell:allow-open",
2426
"opener:default",
2527
"os:default",
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"default":{"identifier":"default","description":"Default capabilities for the XMPP client","local":true,"windows":["main"],"permissions":["core:default","core:path:default","core:window:allow-start-dragging","core:window:allow-close","core:window:allow-destroy","core:window:allow-is-fullscreen","core:window:allow-is-maximized","core:window:allow-is-minimized","core:window:allow-minimize","core:window:allow-maximize","core:window:allow-unmaximize","core:window:allow-show","core:window:allow-hide","core:window:allow-set-focus","core:window:allow-set-theme","core:webview:allow-webview-position","shell:allow-open","opener:default","os:default","core:window:allow-set-badge-count","notification:default","notification:allow-is-permission-granted","notification:allow-request-permission","notification:allow-notify","notification:allow-show","notification:allow-register-listener","notification:allow-register-action-types","notification:allow-remove-active","window-state:default","fs:allow-temp-write-recursive",{"identifier":"fs:allow-read-file","allow":[{"path":"**/*"}]},"deep-link:default","dialog:allow-save","updater:default","process:allow-restart",{"identifier":"http:default","allow":[{"url":"https://*"},{"url":"https://*:*/**"}]},"http:allow-fetch-read-body","http:allow-fetch-cancel"]}}
1+
{"default":{"identifier":"default","description":"Default capabilities for the XMPP client","local":true,"windows":["main"],"permissions":["core:default","core:path:default","core:window:allow-start-dragging","core:window:allow-close","core:window:allow-destroy","core:window:allow-is-fullscreen","core:window:allow-is-maximized","core:window:allow-is-minimized","core:window:allow-minimize","core:window:allow-maximize","core:window:allow-unmaximize","core:window:allow-show","core:window:allow-hide","core:window:allow-set-focus","core:window:allow-set-theme","core:webview:allow-webview-position","core:webview:allow-create-webview-window","core:window:allow-create","shell:allow-open","opener:default","os:default","core:window:allow-set-badge-count","notification:default","notification:allow-is-permission-granted","notification:allow-request-permission","notification:allow-notify","notification:allow-show","notification:allow-register-listener","notification:allow-register-action-types","notification:allow-remove-active","window-state:default","fs:allow-temp-write-recursive",{"identifier":"fs:allow-read-file","allow":[{"path":"**/*"}]},"deep-link:default","dialog:allow-save","updater:default","process:allow-restart",{"identifier":"http:default","allow":[{"url":"https://*"},{"url":"https://*:*/**"}]},"http:allow-fetch-read-body","http:allow-fetch-cancel"]}}

0 commit comments

Comments
 (0)