-
DinoX v2.2.4
StableAll checks were successfulBuild / Validate Manual Selection (push) Has been skippedBuild / Release Preflight (push) Successful in 3m30sBuild / Mirror AppImage Runtimes (push) Has been skippedBuild / Core Build (push) Successful in 44m17sBuild / Build AppImage (push) Successful in 1h6m53sBuild / Build Flatpak (push) Successful in 1h24m31sreleased this
2026-08-09 20:48:20 +02:00 | 13 commits to master since this releaseDinoX 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_*.debAppImage
sha256sum -c DinoX-2.2.4-*.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.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.dinoxBuild 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
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads