Skip to content

Latest commit

 

History

History
154 lines (119 loc) · 20.3 KB

File metadata and controls

154 lines (119 loc) · 20.3 KB

Supported XEPs

This document lists the XMPP Extension Protocols (XEPs) and related RFCs implemented in Fluux.

IETF RFCs

RFC Name Status Notes
RFC 6120 XMPP Core ✅ Implemented TCP binding with STARTTLS, direct TLS, SASL authentication, XML streams, stanzas. Web uses xmpp.js over WebSocket; desktop also supports native TCP
RFC 6121 XMPP IM ✅ Implemented Instant messaging, presence, roster management
RFC 7622 XMPP Address Format ✅ Implemented JID parsing and validation
RFC 7395 XMPP over WebSocket ✅ Implemented WebSocket transport for browser connectivity. Desktop Rust proxy bridges WebSocket (RFC 7395) framing to native TCP (RFC 6120) framing
RFC 5122 XMPP URI Scheme ✅ Implemented Deep linking support for xmpp: URIs - opens conversations and joins rooms from external links
RFC 7590 Use of TLS in XMPP ✅ Implemented WSS for WebSocket connections, direct TLS and STARTTLS for native TCP connections (desktop), HTTPS for XEP-0156 discovery

Connection & Stream

XEP Name Status Notes
XEP-0156 Discovering Alternative XMPP Connection Methods ✅ Implemented Auto-discovers WebSocket endpoint via host-meta (HTTPS-only for security)
XEP-0198 Stream Management ✅ Implemented Session resumption, message delivery reliability, ack tracking
XEP-0199 XMPP Ping ✅ Implemented Responds to server/contact pings, uses ping for connection liveness checks
XEP-0202 Entity Time ✅ Implemented Responds to queries; queries contacts and displays local time in chat header and contact popover
XEP-0280 Message Carbons ✅ Implemented Sync messages across multiple connected clients
XEP-0368 SRV Records for XMPP over TLS ✅ Implemented Desktop: SRV lookup for _xmpps-client._tcp (direct TLS) and _xmpp-client._tcp (STARTTLS) via Rust proxy
XEP-0388 Extensible SASL Profile (SASL2) ✅ Implemented Modern authentication with inline features (bind2, FAST). Falls back to SASL1 if server doesn't support it
XEP-0484 Fast Authentication Streamlining Tokens (FAST) ✅ Implemented Token-based reconnection without password (web: 14-day localStorage persistence, HT-SHA-256-NONE mechanism)

Service Discovery

XEP Name Status Notes
XEP-0030 Service Discovery ✅ Implemented disco#info queries, server feature discovery on connect
XEP-0059 Result Set Management ✅ Implemented Pagination for MAM queries
XEP-0115 Entity Capabilities ✅ Implemented Feature discovery, capability hash, PEP notifications, client identification from caps node with device tooltips

Account & Registration

XEP Name Status Notes
XEP-0077 In-Band Registration ✅ Implemented Password change from profile view

Roster & Presence

XEP Name Status Notes
XEP-0084 User Avatar ✅ Implemented PEP-based avatar display, publishing (256×256 JPEG with crop/resize), and removal
XEP-0153 vCard-Based Avatars ✅ Implemented Legacy avatar support with SHA-1 hash caching
XEP-0172 User Nickname ✅ Implemented Publish, retrieve, and clear own nickname via PEP
XEP-0191 Blocking Command ✅ Implemented Block/unblock JIDs, fetch blocklist, push notifications
XEP-0012 Last Activity ✅ Implemented Lazy query of offline contact last activity with caching, negative caching, and auto-invalidation on presence
XEP-0319 Last User Interaction in Presence ✅ Implemented Idle time display and publishing

Messaging

XEP Name Status Notes
XEP-0085 Chat State Notifications ✅ Implemented Typing indicators for 1:1 and MUC (throttled for rooms < 30 occupants)
XEP-0359 Unique and Stable Stanza IDs ✅ Implemented Message deduplication using stanza-id and origin-id
XEP-0393 Message Styling ✅ Implemented Bold, italic, strikethrough, monospace, block quotes
XEP-0428 Fallback Indication ✅ Implemented Used with message replies for client compatibility
XEP-0444 Message Reactions ✅ Implemented Emoji reactions on messages in 1:1 and MUC
XEP-0461 Message Replies ✅ Implemented Reply-to with quoted preview and fallback body
XEP-0308 Last Message Correction ✅ Implemented Edit last sent message with validation
XEP-0424 Message Retraction ✅ Implemented Delete own messages with sender verification
XEP-0425 Message Moderation ✅ Implemented Moderators can retract other users' messages in MUC rooms, with reason display
XEP-0363 HTTP File Upload ✅ Implemented File upload with drag-and-drop, progress indicator, automatic service discovery
XEP-0066 Out of Band Data ✅ Implemented File URL sharing with thumbnails
XEP-0245 The /me Command ✅ Implemented Action messages displayed in italic with sender name
XEP-0264 Jingle Content Thumbnails ✅ Implemented Thumbnail element (urn:xmpp:thumbs:1) used with OOB file sharing — no Jingle dependency
XEP-0446 File Metadata Element ✅ Implemented Original image/video dimensions for proper layout reservation
XEP-0422 Message Fastening ✅ Implemented Link previews with OGP metadata attached to messages
XEP-0203 Delayed Delivery ✅ Implemented Offline message timestamps
XEP-0297 Stanza Forwarding ✅ Implemented Used by Message Carbons
XEP-0313 Message Archive Management ✅ Implemented History fetch for 1:1 chats and MUC rooms with scroll-up lazy loading, IndexedDB caching with MAM fallback, RSM pagination
XEP-0334 Message Processing Hints ✅ Implemented <no-store/> hint for transient messages (Quick Chat rooms), chat states and reactions

PubSub & PEP

XEP Name Status Notes
XEP-0060 Publish-Subscribe ✅ Implemented PubSub event handling for avatars, nicknames, bookmarks, and settings
XEP-0163 Personal Eventing Protocol ✅ Implemented PEP notifications for avatars (XEP-0084), nicknames (XEP-0172), bookmarks (XEP-0402), appearance settings (XEP-0223)
XEP-0223 Persistent Storage of Private Data via PubSub ✅ Implemented Private PEP storage for appearance settings, conversation list sync, and per-room ignored users

Multi-User Chat (MUC)

XEP Name Status Notes
XEP-0045 Multi-User Chat ✅ Implemented Join/leave rooms, messaging, occupant list with presence tooltips, roles/affiliations, mediated invitations
XEP-0054 vCard-temp ✅ Implemented Room avatar retrieval and display, contact vCard info in popover (full name, org, email, country)
XEP-0317 Hats ✅ Implemented Custom role badges in occupant panel and messages, hat management UI (define, assign, unassign via ad-hoc commands)
XEP-0392 Consistent Color Generation ✅ Implemented Deterministic colors for avatars, nicknames, and hat badges based on identifier
XEP-0249 Direct MUC Invitations ✅ Implemented Receive room invitations with Accept/Decline in Events view
XEP-0372 References ✅ Implemented @mention notifications with position-based highlighting
XEP-0398 User Avatar to vCard-Based Avatars Conversion ✅ Implemented MUC occupant avatars via vCard conversion
XEP-0402 PEP Native Bookmarks ✅ Implemented Room bookmarks with autojoin, custom extensions for notification preferences
XEP-0421 Anonymous Unique Occupant Identifiers ✅ Implemented Stable occupant identifiers for anonymous MUC rooms

Administration

XEP Name Status Notes
XEP-0004 Data Forms ✅ Implemented Dynamic form rendering for admin commands
XEP-0050 Ad-Hoc Commands ✅ Implemented Command execution with multi-step flows
XEP-0133 Service Administration ✅ Implemented Admin panel for user management, server stats, announcements

Project Information

XEP Name Status Notes
XEP-0453 DOAP Usage in XMPP ✅ Implemented Machine-readable project description with supported XEPs (fluux-messenger.doap)

Planned XEPs

The following XEPs are planned for future implementation:

XEP Name Category
XEP-0184 Message Delivery Receipts Messaging
XEP-0333 Chat Markers Messaging
XEP-0384 OMEMO Encryption Security

Custom Extensions

Fluux uses custom extensions across several namespaces:

Bookmark Extensions (urn:xmpp:fluux:0)

  • Room notification preferences: Stored in XEP-0402 bookmark extensions to enable per-room notification settings (mentions only vs. all messages)
  • @all mentions: Room-wide mention indicator (urn:fluux:mentions:0) for notifying all participants
  • 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)

Private PEP Storage (XEP-0223)

Namespace Purpose
urn:xmpp:fluux:appearance:0 Theme and appearance settings sync across devices
urn:xmpp:fluux:conversations:0 Conversation list sync (active and archived 1:1 conversations) with debounced publishing and merge-on-reconnect
urn:xmpp:fluux:ignored-users:0 Per-room ignored users list, stored as one PEP item per room

Other

Namespace Purpose
urn:fluux:easter-egg:0 Easter egg animations triggered by specific message content

ejabberd Business Edition Extensions

Fluux supports the following proprietary extensions from ejabberd Business Edition:

Extension Namespace Status Notes
Web Push (VAPID) p1:push / p1:push:webpush ✅ Implemented VAPID service discovery, browser push subscription via W3C Push API, registration with XMPP server. Enables OS-level notifications when the browser tab is closed (web only, not Tauri)