• v2.2.2 9e5cc8df95

    DinoX v2.2.2
    Some checks failed
    Build / Validate Manual Selection (push) Has been skipped
    Build / Release Preflight (push) Successful in 58s
    Build / Mirror AppImage Runtimes (push) Has been skipped
    Build / Core Build (push) Successful in 44m54s
    Build / Build AppImage (push) Failing after 1h10m53s
    Build / Build Flatpak (push) Has been skipped
    Stable

    Ralf released this 2026-07-30 12:38:59 +02:00 | 1 commits to master since this release

    DinoX 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_invite policy 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 through gpgconf, 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_*.deb
    

    AppImage

    sha256sum -c DinoX-2.2.2-*.AppImage.sha256
    chmod +x DinoX-*.AppImage
    ./DinoX-*.AppImage
    

    The matching .AppImage.sources.tar.xz file 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.dinox
    

    Build 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