-
DinoX v2.2.2
StableSome checks failedBuild / Validate Manual Selection (push) Has been skippedBuild / Release Preflight (push) Successful in 58sBuild / Mirror AppImage Runtimes (push) Has been skippedBuild / Core Build (push) Successful in 44m54sBuild / Build AppImage (push) Failing after 1h10m53sBuild / Build Flatpak (push) Has been skippedreleased this
2026-07-30 12:38:59 +02:00 | 1 commits to master since this releaseDinoX v2.2.2
Modern XMPP client with extended features.
What's New
Highlights
- Google/libwebrtc media engine: DinoX now uses an isolated Google/libwebrtc M150 worker for Jingle/JMI audio and video calls on Linux and Windows. Native device handling, mute and camera controls, VP8 video, ICE/STUN/TURN, and call teardown no longer depend on the former GStreamer RTP/WebRTC call backend.
- Voice and video messages on the new capture stack: Microphone and camera capture now run through the same isolated libwebrtc engine. Linux uses FFmpeg and Windows uses Media Foundation for encoding and muxing, while GStreamer remains responsible for media-file demuxing, decoding, playback, previews, and metadata.
- Major MUC administration and member-state overhaul: Room configuration, affiliations, roles, moderation, kicks, bans, Hats, JID visibility, mediated invitations, moderated-room voice requests, avatars, and live member grouping now share one lifecycle-aware server-backed state path.
- Production-ready release packaging: Debian, AppImage, Flatpak, and the canonical portable Windows build now validate the complete plugin, Google/libwebrtc, helper-program, translation, runtime, and license closure before an artifact is accepted.
Added
- Google/libwebrtc device controls and diagnostics: Audio/video settings can enumerate and test libwebrtc microphones, cameras, and speakers and expose separate call and media-message device choices.
- Moderated-room voice-request chat flow: Visitors can request permission to speak directly from the chat input, while moderators receive a persistent in-chat approval or rejection action instead of relying on a short-lived desktop notification.
- MUC occupant reducer and worker: Immutable, account- and room-scoped occupant snapshots now reconcile presence, affiliations, roles, Hats, real-JID visibility, and avatar state before the member list is updated.
- Canonical Windows build, validation, and ZIP tools: The documented Windows flow now creates a fresh portable
dist/, verifies every packaged plugin and runtime dependency, inventories bundled licenses, and produces a checked ZIP plus SHA-256 file.
Changed
- Large-room and roster responsiveness: Virtualized contact and roster models, batched occupant commits, bounded member presentation, prioritized visible-room autojoin, and background cache-only avatar loading keep large rooms and contact lists responsive.
- MUC close, leave, and bookmark semantics: Closing a room, leaving it temporarily, and leaving permanently now update the conversation, live room state, and bookmark consistently without stale rejoin continuations.
- Reconnect and MUC recovery: Reconnect, MAM catch-up, server-administration discovery, presence snapshots, room configuration, and member-list activation are fenced to the current stream and recover without requiring a DinoX restart.
- Portable Windows runtime: Windows packages now support non-ASCII checkout and runtime paths, use a frozen validated dependency baseline, and include all required GnuPG, Tor, Lyrebird, Google/libwebrtc, GStreamer, font, icon, schema, and translation data.
- Linux package production profile: Deb, AppImage, and Flatpak builds use the pinned Google/libwebrtc runtime, keep the legacy RTP call plugin disabled, separate small binary artifacts from source-compliance sidecars, and fail closed on incomplete media or license inventories.
Fixed
- OMEMO sessions during archive replay: Old undecryptable MAM pre-key messages no longer replace current device identities or destroy working OMEMO sessions, preventing later live messages from requiring an outgoing message before decryption resumes.
- MQTT topic bridges: Bridge subscriptions are reconciled immediately after rule changes, MQTT wildcards follow protocol semantics, and retained-message deduplication no longer suppresses explicit bridge delivery.
- Concurrent file transfers: HTTP, Jingle, sticker, and account-scoped transfer traffic no longer share cancellable request state that could let one transfer close or cancel another.
- Conversation-switch memory growth: Repeated switching between large chats no longer retains obsolete media rows, message widgets, signal owners, and deferred UI work indefinitely.
- MUC role and visitor grouping: Muted occupants move into the visitor section immediately and return to their assigned role after voice is restored; live role, affiliation, Hat, and visibility changes now refresh the correct member-list section.
- MUC invitations: Room invitation controls now follow the server's mediated-invitation and
occupants_may_invitepolicy instead of presenting a misleading client-only restriction. - Packaged media lifecycle: Audio/video calls and media-message recording shut down their libwebrtc worker sessions cleanly in Deb, AppImage, Flatpak, and Windows package layouts.
- Windows OpenPGP key lookup: The portable package includes
dirmngr.exe, starts and reaches it through an isolated GnuPG home, requests helper shutdown throughgpgconf, and fails the distribution build if GnuPG helpers or dependencies are incomplete. - UI lifecycle warnings and stale callbacks: Contact dialogs, MUC member popovers, conversation details, message rows, media widgets, and preference pages now disconnect account- and widget-scoped callbacks before their owners disappear.
- Provider-directory refresh: Provider data refreshes in the background without delaying the add-account dialog.
Installation
Ubuntu 24.04 / Linux Mint 22 (.deb)
sha256sum -c dinox_2.2.2_*.deb.sha256 sudo apt install ./dinox_2.2.2_*.debAppImage
sha256sum -c DinoX-2.2.2-*.AppImage.sha256 chmod +x DinoX-*.AppImage ./DinoX-*.AppImageThe matching
.AppImage.sources.tar.xzfile is a separate compliance download.
It is not required to install or run DinoX.Flatpak
sha256sum -c dinox-2.2.2-x86_64.flatpak.sha256 # Required runtimes are resolved automatically from the bundle metadata. flatpak install --user ./dinox-2.2.2-x86_64.flatpak flatpak run im.dinox.dinoxBuild from Source
( set -e tar xf dinox-2.2.2.tar.gz cd dinox-2.2.2 # Install the normal distribution development packages from docs/internal/BUILD.md. test "$(uname -m)" = x86_64 mkdir -p .vendor-deps curl --proto '=https' --tlsv1.2 --fail --location --show-error https://git.dinox.im/dinoxim/dinox/releases/download/vendor-deps/libwebrtc-m150-linux-x86_64-runtime.tar.gz -o .vendor-deps/libwebrtc-m150-linux-x86_64-runtime.tar.gz printf '%s %s\n' de6241a78b33d9b324d9315e874bc6dc484d2d8726f899b9f5011eceb32af9e6 .vendor-deps/libwebrtc-m150-linux-x86_64-runtime.tar.gz | sha256sum -c - rm -rf .vendor-deps/libwebrtc-m150-linux-x86_64-runtime tar -xzf .vendor-deps/libwebrtc-m150-linux-x86_64-runtime.tar.gz -C .vendor-deps export DINOX_LIBWEBRTC_RUNTIME_ROOT=$PWD/.vendor-deps/libwebrtc-m150-linux-x86_64-runtime ./scripts/check-libwebrtc-linux-runtime.sh "$DINOX_LIBWEBRTC_RUNTIME_ROOT" meson setup --wipe --prefix=/usr build -Dplugin-mqtt=enabled -Dplugin-rtp=disabled -Dplugin-google-webrtc=enabled -Dgoogle-libwebrtc-wrapper=enabled -Dgoogle-libwebrtc-runtime-root="$DINOX_LIBWEBRTC_RUNTIME_ROOT" -Dgoogle-libwebrtc-test-oracle=false -Dlocation-sharing=enabled -Dplugin-http-files=enabled -Dplugin-ice=enabled -Dplugin-omemo=enabled -Dplugin-openpgp=enabled -Dplugin-notification-sound=enabled ./scripts/build.sh ./build/main/dinox --version DINOX_TOR_ALLOW_SYSTEM_FALLBACK=1 ./build/main/dinox )Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
1 download