• v2.2.4 4ed7d94754

    DinoX v2.2.4
    All checks were successful
    Build / Validate Manual Selection (push) Has been skipped
    Build / Release Preflight (push) Successful in 3m30s
    Build / Mirror AppImage Runtimes (push) Has been skipped
    Build / Core Build (push) Successful in 44m17s
    Build / Build AppImage (push) Successful in 1h6m53s
    Build / Build Flatpak (push) Successful in 1h24m31s
    Stable

    Ralf released this 2026-08-09 20:48:20 +02:00 | 13 commits to master since this release

    DinoX v2.2.4

    Modern XMPP client with extended features.

    What's New

    Highlights

    • First opt-in video-call effect and an extensible effects foundation: One-to-one video calls now offer an optional grayscale effect backed by a capability-driven, worker-isolated effects pipeline. Effects remain off by default. This release establishes the UI, lifecycle, native ABI and IPC foundation for more effects; background blur, replacement and face accessories are not part of 2.2.4 yet.
    • More efficient and responsive video calls: Bounded latest-frame-wins delivery, coalesced worker wakeups, a one-frame effect mailbox, reusable frame buffers and bounded teardown prevent stale video work from accumulating, reduce avoidable CPU and memory pressure, and keep calls responsive while effects are switched.
    • Durable legacy OMEMO sessions across restarts: Ratchet sessions, pre-keys and device identities now use checked, fail-closed persistence and transactional recovery. Tested clean restarts and abrupt process termination no longer require sending a message first before new encrypted messages can be decrypted.

    Added

    • Video-effect controls and diagnostics: The call window exposes supported outgoing-camera effects and keeps the local preview aligned with the processed frame sent to the peer. Revision-bound state and bounded diagnostics make later effect implementations possible without moving frame processing into GTK or the main DinoX process.
    • OMEMO device-key review: When a known device presents a changed identity key, DinoX keeps it blocked and offers a direct, factual review action instead of silently accepting the replacement.

    Changed

    • Isolated video-effect processing: Effect work runs inside the external Google/libwebrtc worker on a dedicated bounded executor. The normal effects-off path does not start an effect thread or allocate effect-owned frame buffers.
    • Pinned media runtimes: Linux and Windows package paths now require the immutable Google/libwebrtc ABI 36 / IPC 6 runtime used by the effects pipeline, and the Windows builder accepts the canonical vendor archive layout.
    • Pinned legacy OMEMO dependency: Normal Linux source builds, Flatpak and Windows builds use the verified libomemo-c 0.5.1 baseline while OMEMO 2 remains disabled in stable builds.

    Fixed

    • Audio after a previous video call: Reinitializing the shared Google/libwebrtc audio device now installs the new VoiceEngine transport correctly, so a later call no longer starts with zero captured or decoded audio after an earlier video session was closed.
    • Video-frame backlog and post-toggle stutter: Preview and received-video shared-memory delivery now replaces unread real-time frames and reuses an already pending wakeup instead of accumulating stale frame events.
    • Video-effect lifecycle cleanup: Rapid effect changes, call teardown, worker failure and slow optional processing now have bounded cancellation, generation fencing and resource cleanup without blocking the GTK main thread.
    • OMEMO database consistency: Session, pre-key and signed-pre-key callbacks now propagate database failures to libomemo; authenticated identity and session transitions roll back to the previous valid state on failure, and acknowledged ratchet updates use full SQLite durability.
    • OMEMO reconnect and archive safety: Account connections and MAM catch-up wait for a ready encrypted store, abort safely if readiness is lost, and no longer advance archive state through an unavailable OMEMO store.
    • OMEMO identity-change safety: Malformed or unauthenticated pre-key messages and invalid bundles can no longer replace a working session or identity before cryptographic validation; account removal also clears persisted and in-memory OMEMO state consistently.
    • Windows libwebrtc rebuilds: Corrected runtime rebuild gates and archive normalization so the documented clean Windows distribution build consumes the same effects-capable runtime layout as Linux packaging.

    Installation

    Ubuntu 24.04 / Linux Mint 22 (.deb)

    sha256sum -c dinox_2.2.4_*.deb.sha256
    sudo apt install ./dinox_2.2.4_*.deb
    

    AppImage

    sha256sum -c DinoX-2.2.4-*.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.4-x86_64.flatpak.sha256
    # Required runtimes are resolved automatically from the bundle metadata.
    flatpak install --user ./dinox-2.2.4-x86_64.flatpak
    flatpak run im.dinox.dinox
    

    Build from Source

    (
    set -e
    tar xf dinox-2.2.4.tar.gz
    cd dinox-2.2.4
    # Install the normal distribution development packages from docs/internal/BUILD.md.
    test "$(uname -m)" = x86_64
    bash scripts/prepare-linux-source-build-deps.sh
    export DINOX_LIBWEBRTC_RUNTIME_ROOT=$PWD/.vendor-deps/libwebrtc-m150-linux-x86_64-runtime
    export DINOX_LOCAL_LIBOMEMO_C_ROOT=$PWD/.vendor-deps/linux-source-deps
    export PKG_CONFIG_PATH=$DINOX_LOCAL_LIBOMEMO_C_ROOT/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}
    ./scripts/check-libwebrtc-linux-runtime.sh "$DINOX_LIBWEBRTC_RUNTIME_ROOT"
    meson setup --wipe --prefix=/usr build -Dlocal-libomemo-c-root="$DINOX_LOCAL_LIBOMEMO_C_ROOT" -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