Skip to content
This repository was archived by the owner on Jun 4, 2026. It is now read-only.

Releases: rallep71/dinox

DinoX moved to Forgejo

04 Jun 16:56

Choose a tag to compare

DinoX has moved from GitHub to Forgejo.

This GitHub repository is now only a historical archive. New source code, packages, issues and pull requests are maintained here:

Please use the Forgejo release page for DinoX 2.0.0 and later packages.

DinoX v1.1.8.1

04 Apr 14:00

Choose a tag to compare

DinoX v1.1.8.1

Modern XMPP client with extended features.

What's New

Fixed

  • Call Termination: Fixed a crash that occurred when terminating a call.
  • Video Compatibility: Improved video encoding compatibility for calls.
  • UI Improvements: Fixed various UI bugs including conversation list selection issues and edge cases.

Installation

Flatpak (Linux)

# 1. Install the GNOME runtime (required, one-time setup)
flatpak install flathub org.gnome.Platform//48

# 2. Install DinoX (replace ARCH with x86_64 or aarch64)
flatpak install dinox-1.1.8.0-ARCH.flatpak

AppImage (Linux)

Download the .AppImage file, make it executable and run:

chmod +x DinoX-*.AppImage
./DinoX-*.AppImage

Windows

Download and extract the .zip file. Run dinox.exe from the extracted folder.
Note: Windows builds are experimental. See the README for details.

Build from Source

1. Install system dependencies (Debian/Ubuntu):

sudo apt install build-essential meson ninja-build valac \
  libgtk-4-dev libadwaita-1-dev libglib2.0-dev libgee-0.8-dev \
  libsqlcipher-dev libsecret-1-dev libicu-dev libdbusmenu-glib-dev libgcrypt20-dev \
  libgpgme-dev libqrencode-dev libsoup-3.0-dev libgstreamer1.0-dev \
  libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev \
  libnice-dev libgnutls28-dev libsrtp2-dev libgeoclue-2-dev \
  gstreamer1.0-plugins-good gstreamer1.0-pipewire cmake wget

2. Build custom dependencies (webrtc-audio-processing 2.1, libnice 0.1.23, libomemo-c -- not available or too old in distro repos):

# Automated (builds all three):
./scripts/ci-build-deps.sh

3. Build DinoX:

tar xf dinox-1.1.8.0.tar.gz
cd dinox-1.1.8.0
meson setup build
ninja -C build
./build/main/dinox

DinoX v1.1.8.0

26 Mar 17:19

Choose a tag to compare

DinoX v1.1.8.0

Modern XMPP client with extended features.

What's New

Fixed — Windows Database Reset

  • Race condition in database reset: On Windows, two separate batch files (delete DBs + restart dinox.exe) ran in parallel with the same ~2s delay — dinox.exe often restarted before files were deleted, making the reset appear to do nothing (all old OMEMO keys and messages still present)
  • Fix: Delete + restart combined into a single sequential batch file: wait for process exit → delete all DB files → then restart dinox.exe
  • Factory reset fixed too: Same race condition pattern fixed for factory reset on Windows

Fixed — Build & CI

  • AppImage build fix: Removed --no-net flag from appimagetool — the "continuous" release (commit 5735cc5, 2023-03-08) does not support this option, causing both x86_64 and aarch64 CI builds to fail with Option parsing failed: Unknown option --no-net

Stats

  • 2 commits, 2 files changed
  • Critical Windows bug fix: database/factory reset now works reliably
  • CI fix: AppImage builds restored

Installation

Flatpak (Linux)

# 1. Install the GNOME runtime (required, one-time setup)
flatpak install flathub org.gnome.Platform//48

# 2. Install DinoX (replace ARCH with x86_64 or aarch64)
flatpak install dinox-1.1.8.0-ARCH.flatpak

AppImage (Linux)

Download the .AppImage file, make it executable and run:

chmod +x DinoX-*.AppImage
./DinoX-*.AppImage

Windows

Download and extract the .zip file. Run dinox.exe from the extracted folder.
Note: Windows builds are experimental. See the README for details.

Build from Source

1. Install system dependencies (Debian/Ubuntu):

sudo apt install build-essential meson ninja-build valac \
  libgtk-4-dev libadwaita-1-dev libglib2.0-dev libgee-0.8-dev \
  libsqlcipher-dev libsecret-1-dev libicu-dev libdbusmenu-glib-dev libgcrypt20-dev \
  libgpgme-dev libqrencode-dev libsoup-3.0-dev libgstreamer1.0-dev \
  libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev \
  libnice-dev libgnutls28-dev libsrtp2-dev libgeoclue-2-dev \
  gstreamer1.0-plugins-good gstreamer1.0-pipewire cmake wget

2. Build custom dependencies (webrtc-audio-processing 2.1, libnice 0.1.23, libomemo-c -- not available or too old in distro repos):

# Automated (builds all three):
./scripts/ci-build-deps.sh

3. Build DinoX:

tar xf dinox-1.1.8.0.tar.gz
cd dinox-1.1.8.0
meson setup build
ninja -C build
./build/main/dinox

DinoX v1.1.7.9

26 Mar 16:35

Choose a tag to compare

DinoX v1.1.7.9

Modern XMPP client with extended features.

What's New

Added — Windows Sound Notifications

  • Cross-platform sound notifications: Windows now uses GStreamer playbin with bundled WAV files (GResource); Linux libcanberra path completely unchanged
  • 4 notification sounds: message.wav, incoming-call.wav, outgoing-ringback.wav, alert.wav — embedded as GResource, played via resource:// URIs
  • 3 independent playbin channels: Message, ringtone, and ringback can play concurrently without interrupting each other
  • MQTT CRITICAL alert sound: Alert playbin in MQTT plugin plays alert.wav on CRITICAL priority messages
  • Toast audio silenced: Windows Toast notifications now use silent="true" — sound comes from GStreamer plugin instead of broken ms-winsoundevent

Performance — Windows Video Message Recording

  • GStreamer MF warm-up thread: Background thread at startup pre-loads Media Foundation DLLs (mfvideosrc, mfh264enc, wasapi2src, avenc_aac, mp4mux) — first video recording starts in ~2s instead of ~8s
  • Faster video message thumbnails: Improved thumbnail display speed

Fixed — Windows Distribution

  • Missing GStreamer gio plugin: Added to update_dist.sh — required for resource:// URI playback of bundled sounds
  • Video bitrate optimized: 1500→800 kbps for mobile-friendly video messages, receive REMB 256→800

Fixed — Build & CI

  • AppImage build: Added --no-net to appimagetool — decouples AppImage build from website availability
  • README images: Restored appdata screenshots in docs/

Cleanup

  • Debug warnings removed: All TIMING warnings from video_recorder.vala (18 warnings) and voice_processor_native.cpp g_warningg_debug
  • Diagnostic warnings→debug(): All remaining diagnostic warning() calls converted to debug() across RTP and video recording

Stats

  • 7 commits, ~15 files changed
  • Major new feature: Windows sound notifications via GStreamer
  • Major performance improvement: MF DLL pre-warming (~6s faster first video recording)
  • Windows distribution fix: gio plugin for resource:// URI support

Installation

Flatpak (Linux)

# 1. Install the GNOME runtime (required, one-time setup)
flatpak install flathub org.gnome.Platform//48

# 2. Install DinoX (replace ARCH with x86_64 or aarch64)
flatpak install dinox-1.1.7.9-ARCH.flatpak

AppImage (Linux)

Download the .AppImage file, make it executable and run:

chmod +x DinoX-*.AppImage
./DinoX-*.AppImage

Windows

Download and extract the .zip file. Run dinox.exe from the extracted folder.
Note: Windows builds are experimental. See the README for details.

Build from Source

1. Install system dependencies (Debian/Ubuntu):

sudo apt install build-essential meson ninja-build valac \
  libgtk-4-dev libadwaita-1-dev libglib2.0-dev libgee-0.8-dev \
  libsqlcipher-dev libsecret-1-dev libicu-dev libdbusmenu-glib-dev libgcrypt20-dev \
  libgpgme-dev libqrencode-dev libsoup-3.0-dev libgstreamer1.0-dev \
  libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev \
  libnice-dev libgnutls28-dev libsrtp2-dev libgeoclue-2-dev \
  gstreamer1.0-plugins-good gstreamer1.0-pipewire cmake wget

2. Build custom dependencies (webrtc-audio-processing 2.1, libnice 0.1.23, libomemo-c -- not available or too old in distro repos):

# Automated (builds all three):
./scripts/ci-build-deps.sh

3. Build DinoX:

tar xf dinox-1.1.7.9.tar.gz
cd dinox-1.1.7.9
meson setup build
ninja -C build
./build/main/dinox

DinoX v1.1.7.8

25 Mar 07:51

Choose a tag to compare

DinoX v1.1.7.8

Modern XMPP client with extended features.

What's New

Added — Audio/Video Device Settings

  • Preferences page for audio/video devices: New "Audio & Video" tab in Preferences with persistent device selection for microphone, speaker, and camera — survives app restarts
  • Device deduplication: Filters duplicate audio/video devices on Windows where WASAPI2 and legacy APIs expose the same hardware under different names
  • DINOX_LOG_FILE environment variable: Set this on Windows to redirect all debug logging to a file without modifying shell environment

Fixed — Audio/Video Calls (Windows)

  • Audio send broken: Decoupling queue added in create() prevents audio pipeline stall; device element leak in destroy() fixed
  • WASAPI2 S16LE capsfilter: Audio capsfilter must specify format=S16LE explicitly for WASAPI2 compatibility on Windows
  • audioresample in all playback paths: Added audioresample to voice message and call playback pipelines — fixes sample rate mismatch with WASAPI2
  • VoiceProcessor skipped on Windows: WASAPI2 already handles AEC/NS/AGC — running DinoX VoiceProcessor on top caused double-processing artifacts
  • Audio crackling reduced: rtpbin latency 100→150ms, Opus bitrate 24→48kbps, FEC status logging
  • Video send bitrate: Initial 256→1500 kbps, floor 128→256 kbps — fixes REMB chicken-and-egg problem where receiver never sends REMB until it gets video
  • mfh264enc NV12 format: Windows Media Foundation H.264 encoder now receives correct pixel format
  • CRT invalid-parameter-handler crash: Suppressed MSVC CRT dialog at startup via IAT-patch of GLib's MessageBoxW
  • Explicit WASAPI2/MF sources: Voice/video messages use wasapi2src/mfh264enc directly on Windows instead of auto-detection

Fixed — Audio/Video Calls (Linux)

  • TOCTOU race in deep_copy_buffer_probe: DMA-BUF memory pinned during copy to prevent PipeWire SIGSEGV from recycled shared memory
  • pipewiresrc EINVAL (-22): Source-side capsfilter with device-negotiated caps fixes PipeWire rejection of range-based caps
  • Video buffer deep copy: C pad probe replaces invalid copy-buffers queue property — prevents SIGSEGV from recycled PipeWire shared memory
  • Video recorder fixed caps: Uses 640×480@30fps instead of ranges to prevent backwards caps propagation to pipewiresrc

Fixed — Audio/Video Calls (Both Platforms)

  • Video call stability: Multiple SIGSEGV fixes in call state sync, Jingle correctness, senders negotiation, teardown race
  • Video message stop recording: EOS via blocking pad probes — stop_recording now ~70ms instead of 3–20s timeout
  • H.264 encoder caching: Probe timeout reduced from 2s→500ms, encoder element cached for reuse
  • Video message quality: Reduced to 640×480@24fps with add-borders to prevent stretching
  • Voice message click eliminated: Smooth ramp-up for recording start
  • Comprehensive null-dereference guards: RTP pipeline guards for device changes during active calls
  • Diagnostic timers removed: Timer callbacks causing SIGSEGV on pipeline teardown eliminated

Performance — GStreamer Pipeline Linking

  • TEMPLATE_CAPS: Skip expensive CAPS queries during pipeline linking
  • NO_RECONFIGURE link flags: Prevent post-link caps cascade
  • PadLinkCheck.NOTHING: Explicit pad names bypass all caps queries — Windows pipeline setup significantly faster

Fixed — SOCKS5 Proxy / Tor

  • SOCKS5 proxy overhaul: Tor/SOCKS5 coexistence fixed, HTTP proxy bypass corrected

Fixed — OMEMO

  • Partial MUC delivery: Allow OMEMO message delivery when some MUC participants are unreachable instead of failing the entire send

Fixed — Windows Stability

  • Panic wipe / DB reset: Batch launch broken on Windows portable — fixed
  • GStreamer plugin list: Clean plugin dir before copy, remove deprecated directsound, add missing plugins (videotestsrc, audiotestsrc, audiomixer, videoflip, audiorate, level, wavenc)
  • Shell pipe/redirect preserved: Console attach no longer breaks pipe and redirect operators
  • devices_changed null guard: Prevent crash when monitor reports null media device

Changed — Windows CI

  • gst-plugins-ugly: Added to CI packages (x264, voaac codecs)
  • cantarell-fonts: Added to CI packages (Adwaita font fallback)

Stats

  • 62 commits, 43 files changed across RTP/calls, GStreamer, Windows platform, OMEMO, proxy
  • Major new feature: Audio/Video device preferences with persistent selection
  • Major performance improvement: GStreamer pipeline linking (TEMPLATE_CAPS, NO_RECONFIGURE)
  • 20+ crash fixes (SIGSEGV, null dereference, race conditions)

Installation

Flatpak (Linux)

# 1. Install the GNOME runtime (required, one-time setup)
flatpak install flathub org.gnome.Platform//48

# 2. Install DinoX (replace ARCH with x86_64 or aarch64)
flatpak install dinox-1.1.7.8-ARCH.flatpak

AppImage (Linux)

Download the .AppImage file, make it executable and run:

chmod +x DinoX-*.AppImage
./DinoX-*.AppImage

Windows

Download and extract the .zip file. Run dinox.exe from the extracted folder.
Note: Windows builds are experimental. See the README for details.

Build from Source

1. Install system dependencies (Debian/Ubuntu):

sudo apt install build-essential meson ninja-build valac \
  libgtk-4-dev libadwaita-1-dev libglib2.0-dev libgee-0.8-dev \
  libsqlcipher-dev libsecret-1-dev libicu-dev libdbusmenu-glib-dev libgcrypt20-dev \
  libgpgme-dev libqrencode-dev libsoup-3.0-dev libgstreamer1.0-dev \
  libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev \
  libnice-dev libgnutls28-dev libsrtp2-dev libgeoclue-2-dev \
  gstreamer1.0-plugins-good gstreamer1.0-pipewire cmake wget

2. Build custom dependencies (webrtc-audio-processing 2.1, libnice 0.1.23, libomemo-c -- not available or too old in distro repos):

# Automated (builds all three):
./scripts/ci-build-deps.sh

3. Build DinoX:

tar xf dinox-1.1.7.8.tar.gz
cd dinox-1.1.7.8
meson setup build
ninja -C build
./build/main/dinox

DinoX v1.1.7.7

18 Mar 17:21

Choose a tag to compare

DinoX v1.1.7.7

Modern XMPP client with extended features.

What's New

Fixed — Audio/Video Calls (Linux + Windows)

  • CRITICAL: Echo probe null dereference (voice_processor.vala): echo_probe.delay called when echo_probe == null in start() → SIGSEGV. Now uses safe conditional: int initial_delay = echo_probe != null ? echo_probe.delay : 200;
  • CRITICAL: SRTP crypto_session destroy race (stream.vala): crypto_session = null was set BEFORE recv_rtp.end_of_stream(), causing incoming packets to hit null SRTP decryptor. Moved nulling AFTER EOS.
  • CRITICAL: on_send_rtp_eos/on_send_rtcp_eos null crash (stream.vala): EOS callbacks could fire after send_rtp/send_rtcp was already nulled. Added null guards.
  • HIGH: Video caps.get_size() crash (video_widget.vala): input_caps_changed() called caps.get_size() without checking for 0 → out-of-bounds access. Added size check.
  • HIGH: EOS timeout too short (audio_recorder.vala): 500ms EOS timeout was insufficient for MP4 faststart file rewrite on slow storage → truncated voice messages. Increased to 3000ms.
  • Windows: Missing H.264 encoder (video_recorder.vala): Windows Media Foundation mfh264enc added as first H.264 encoder in fallback chain (before VAAPI/VA/x264/avenc/openh264).
  • GStreamer pipeline stability (plugin.vala, codec_util.vala): pause() kept as safe no-op; pad probe added in update_rescale_caps() to prevent capsfilter race.

Fixed — SOCKS5 Proxy / Tor (Linux + Windows)

  • CRITICAL: Tor DNS anonymity leak (stream_connect.vala): SRV DNS lookups were performed locally BEFORE connecting through Tor proxy — ISP DNS sees which XMPP server user contacts. Fix: skip SRV lookups when proxy_type == "tor", connect directly to domain:5222/domain:443 through the Tor circuit.
  • CRITICAL: is_transitioning permanent deadlock (tor_manager.vala): If start_tor()/stop_tor() threw an exception, is_transitioning flag was never reset → Tor could never be toggled again. Fixed with try-finally in set_enabled(), set_bridges(), update_use_bridges(), update_firewall_ports().
  • HIGH: lyrebird.exe zombie processes (tor_controller.vala): Windows only — lyrebird.exe (pluggable transport bridge) was not killed on Tor restart, accumulating zombie processes holding ports. Added taskkill /F /IM lyrebird.exe to the zombie killer in start().

Changed — Logging

  • Quieter startup: Demoted 39× message() calls to debug() in main.vala, application.vala, muc_manager.vala — reduces noise in normal operation while keeping full diagnostics at debug level.

Fixed — URL Display

  • Body-only URLs: Incoming messages containing only a URL in the body were displayed as broken file transfer offers instead of clickable text links.

Changed — Documentation

  • README updates: startup instructions, SmartScreen removal, geolocation limitation, PipeWire migration plan

Stats

  • 11 files changed across 4 subsystems (RTP/calls, Tor/proxy, XMPP core, UI)
  • 6 AV bugs fixed (3 CRITICAL, 2 HIGH, 1 Windows-specific)
  • 3 proxy bugs fixed (2 CRITICAL, 1 HIGH)
  • Major security fix: Tor DNS leak prevention

Installation

Flatpak (Linux)

# 1. Install the GNOME runtime (required, one-time setup)
flatpak install flathub org.gnome.Platform//48

# 2. Install DinoX (replace ARCH with x86_64 or aarch64)
flatpak install dinox-1.1.7.7-ARCH.flatpak

AppImage (Linux)

Download the .AppImage file, make it executable and run:

chmod +x DinoX-*.AppImage
./DinoX-*.AppImage

Windows

Download and extract the .zip file. Run dinox.exe from the extracted folder.
Note: Windows builds are experimental. See the README for details.

Build from Source

1. Install system dependencies (Debian/Ubuntu):

sudo apt install build-essential meson ninja-build valac \
  libgtk-4-dev libadwaita-1-dev libglib2.0-dev libgee-0.8-dev \
  libsqlcipher-dev libsecret-1-dev libicu-dev libdbusmenu-glib-dev libgcrypt20-dev \
  libgpgme-dev libqrencode-dev libsoup-3.0-dev libgstreamer1.0-dev \
  libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev \
  libnice-dev libgnutls28-dev libsrtp2-dev libgeoclue-2-dev \
  gstreamer1.0-plugins-good gstreamer1.0-pipewire cmake wget

2. Build custom dependencies (webrtc-audio-processing 2.1, libnice 0.1.23, libomemo-c -- not available or too old in distro repos):

# Automated (builds all three):
./scripts/ci-build-deps.sh

3. Build DinoX:

tar xf dinox-1.1.7.7.tar.gz
cd dinox-1.1.7.7
meson setup build
ninja -C build
./build/main/dinox

DinoX v1.1.7.6

17 Mar 20:14

Choose a tag to compare

DinoX v1.1.7.6

Modern XMPP client with extended features.

What's New

Fixed — Windows: Font Rendering

  • gtk-font-name: Was never set → GTK4 default "Sans 10" → fontconfig without alias rules resolved to random fonts (Microsoft Sans Serif). Now explicitly set to "Segoe UI 10" in Gtk.Settings and settings.ini.
  • gtk-hint-font-metrics: Enabled (was false by default) → forces pixel-aligned glyph positioning for sharper text rendering.
  • fontconfig fonts.conf: Generated in update_dist.sh with proper alias mappings: Sans→Segoe UI, monospace→Consolas, serif→Times New Roman, system-ui→Segoe UI. Plus font rendering defaults (antialias, hinting, hintslight, rgb, lcddefault).
  • Avatar letters: Used generic "Sans" font family which resolved badly on Windows. Now uses "Segoe UI" on Windows via #if WINDOWS conditional.

Fixed — Windows: GDK Surface Assertions

  • gdk_surface_get_device_position: assertion 'GDK_IS_SURFACE (surface)' failed: Added get_realized() guards at 6 critical code paths where motion events fired on widgets whose GDK surface was already destroyed (conversation switch, window close):
    • conversation_view.vala: update_highlight()pick() (primary crash source), on_leave_notify_event()
    • chat_text_view.vala: queue_resize_if_needed() timeout
    • chat_input/view.vala: highlight_state_description() timeout
    • file_image_widget.vala: motion leave handler
    • video_player_widget.vala: motion leave handler

Fixed — Windows: Systray Context Menu

  • Owner-drawn GDI painting removed: The right-click menu used MF_OWNERDRAW with raw Win32 GDI calls (Ellipse(), DEFAULT_GUI_FONT, GetSysColor()) — looked like Windows 98.
  • Native MF_STRING rendering: Now uses plain MF_STRING menu items that Windows 10/11 renders natively with Segoe UI, ClearType, DPI scaling, and theme-aware colors (light/dark mode support).
  • Colored emoji indicators: Status circles provided by Unicode emoji (🟢🟠🔴⚪) already embedded in labels by systray_windows.vala — no more custom GDI circle painting.

Fixed — Windows: Portable ZIP / CI Build

  • GDK-Pixbuf loaders: Copied to wrong path (dist/lib/ instead of dist/lib/gdk-pixbuf-2.0/) — image loading broken in portable builds.
  • loaders.cache: Had MSYS2 absolute paths (/mingw64/lib/...) — regenerated with gdk-pixbuf-query-loaders for portable relative paths.
  • Missing CI packages: glib-networking (GIO TLS backend!), hicolor-icon-theme, adwaita-icon-theme were only transitively installed — now explicitly listed in windows-build.yml.
  • MQTT plugin: Added -Dplugin-mqtt=enabled to CI meson setup and all build documentation.

Fixed — Windows: Window Buttons + Prior Font Pass

  • CSD window buttons: Positioned on the left side (Windows convention) via headerbar-close-button-position setting.
  • Xft font settings: Initial hinting/antialiasing settings in settings.ini (later superseded by the comprehensive font fix above).

Fixed — Windows: Icon Discovery

  • hicolor index.theme: System hicolor-icon-theme index.theme was being overwritten by our sparse icon directory listing. Now preserves the system file so GTK4 icon discovery works correctly.

Fixed — MUC Reactions After Restart

  • Broken reactions in group chats: After app restart or reconnect, reactions (XEP-0444) on MUC messages were silently dropped because the occupant→JID mapping was lost. Fixed the stanza-id lookup path.

Fixed — Encryption/Mark Icons After Avatar Refactor

  • Missing icons: Encryption lock and delivery mark icons disappeared after the avatar defer refactor. Fixed icon loading path.

Fixed — Build Warnings

  • abseil-cpp >= 20250814: New absl::Nullable/absl::Nonnull annotations broke webrtc-audio-processing v2.1 build. CI now patches them out.
  • Various: Unused variable, const annotations, critical build warnings resolved across platforms.

Changed — Documentation

  • WINDOWS_BUILD.md / WINDOWS_BUILD_EN.md: Added -Dplugin-mqtt=enabled to all meson setup commands, mandatory clean rebuild instructions.
  • Obsolete files: Removed windowsbuild.txt (superseded by comprehensive docs).

Stats

  • 80+ commits, 50+ files changed
  • Major areas: font rendering (8 files), systray modernization (1 file, -136 lines), CI hardening (2 files), GDK stability (5 files), icon fixes (3 files), MUC reactions (2 files)

Installation

Flatpak (Linux)

# 1. Install the GNOME runtime (required, one-time setup)
flatpak install flathub org.gnome.Platform//48

# 2. Install DinoX (replace ARCH with x86_64 or aarch64)
flatpak install dinox-1.1.7.6-ARCH.flatpak

AppImage (Linux)

Download the .AppImage file, make it executable and run:

chmod +x DinoX-*.AppImage
./DinoX-*.AppImage

Windows

Download and extract the .zip file. Run dinox.exe from the extracted folder.
Note: Windows builds are experimental. See the README for details.

Build from Source

1. Install system dependencies (Debian/Ubuntu):

sudo apt install build-essential meson ninja-build valac \
  libgtk-4-dev libadwaita-1-dev libglib2.0-dev libgee-0.8-dev \
  libsqlcipher-dev libsecret-1-dev libicu-dev libdbusmenu-glib-dev libgcrypt20-dev \
  libgpgme-dev libqrencode-dev libsoup-3.0-dev libgstreamer1.0-dev \
  libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev \
  libnice-dev libgnutls28-dev libsrtp2-dev libgeoclue-2-dev \
  gstreamer1.0-plugins-good gstreamer1.0-pipewire cmake wget

2. Build custom dependencies (webrtc-audio-processing 2.1, libnice 0.1.23, libomemo-c -- not available or too old in distro repos):

# Automated (builds all three):
./scripts/ci-build-deps.sh

3. Build DinoX:

tar xf dinox-1.1.7.6.tar.gz
cd dinox-1.1.7.6
meson setup build
ninja -C build
./build/main/dinox

Vendored Dependencies

15 Mar 12:18

Choose a tag to compare

Vendored Dependencies Pre-release
Pre-release

Third-party source tarballs mirrored here for CI reliability. freedesktop.org blocks GitHub Actions runners.

DinoX v1.1.7.5

14 Mar 23:30

Choose a tag to compare

DinoX v1.1.7.5

Modern XMPP client with extended features.

What's New

Fixed — Windows: App Still Exits After Unlock (GitHub #18 — continued)

  • hold()/release() safety net: v1.1.7.4 reordered activate-before-close but the app STILL exits silently on Windows. Added this.hold() at the start and this.release() at the end of the entire finish_post_unlock() transition — this guarantees GApplication use_count never reaches 0, regardless of Win32 message pump re-entry or window lifecycle timing.
  • Strategic debug messages: Added message() calls throughout finish_post_unlock() and the activate handler so Windows users can provide exact diagnostic output showing where execution stops.

Installation

Flatpak (Linux)

# 1. Install the GNOME runtime (required, one-time setup)
flatpak install flathub org.gnome.Platform//48

# 2. Install DinoX (replace ARCH with x86_64 or aarch64)
flatpak install dinox-1.1.7.5-ARCH.flatpak

AppImage (Linux)

Download the .AppImage file, make it executable and run:

chmod +x DinoX-*.AppImage
./DinoX-*.AppImage

Windows

Download and extract the .zip file. Run dinox.exe from the extracted folder.
Note: Windows builds are experimental. See the README for details.

Build from Source

1. Install system dependencies (Debian/Ubuntu):

sudo apt install build-essential meson ninja-build valac \
  libgtk-4-dev libadwaita-1-dev libglib2.0-dev libgee-0.8-dev \
  libsqlcipher-dev libsecret-1-dev libicu-dev libdbusmenu-glib-dev libgcrypt20-dev \
  libgpgme-dev libqrencode-dev libsoup-3.0-dev libgstreamer1.0-dev \
  libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev \
  libnice-dev libgnutls28-dev libsrtp2-dev libgeoclue-2-dev \
  gstreamer1.0-plugins-good gstreamer1.0-pipewire cmake wget

2. Build custom dependencies (webrtc-audio-processing 2.1, libnice 0.1.23, libomemo-c -- not available or too old in distro repos):

# Automated (builds all three):
./scripts/ci-build-deps.sh

3. Build DinoX:

tar xf dinox-1.1.7.5.tar.gz
cd dinox-1.1.7.5
meson setup build
ninja -C build
./build/main/dinox

DinoX v1.1.7.4

14 Mar 22:42

Choose a tag to compare

DinoX v1.1.7.4

Modern XMPP client with extended features.

What's New

Fixed — Windows: App Exits After Unlock (GitHub #18)

  • GApplication lifecycle race: The v1.1.7.2 fix (hold()/release() around close→activate) was insufficient — on GDK-Win32, unlock_parent.close() synchronously destroys the window and re-enters the Win32 message pump, terminating the main loop before activate() can create the MainWindow. Fix: call activate() FIRST (creates MainWindow while unlock_parent is still alive), THEN unlock_parent.close(). Removed hold()/release() entirely — GApplication always has ≥1 window, no use_count=0 gap.
  • libevent DLL naming: MSYS2 renamed libevent-2-1-7.dlllibevent-7.dll in newer versions. update_dist.sh now lists both naming variants (libevent-7.dll, libevent_core-7.dll, libevent_extra-7.dll).

Fixed — Build (All Distros with GCC 13+)

  • webrtc-audio-processing v2.1: trace_event.h uses uint8_t/uintptr_t without #include <cstdint> — fails on GCC 13+ (openSUSE Tumbleweed, Fedora 39+, Ubuntu 24.04+, Arch). ci-build-deps.sh now auto-patches the header before building.

Fixed — Documentation (openSUSE)

  • BUILD.md: Added libomemo-c-devel to zypper install list
  • BUILD.md: Updated note — ci-build-deps.sh overrides with fixed fork from rallep71/libomemo-c
  • BUILD.md: Added libcanberra-devel install example + build-from-source alternative

Installation

Flatpak (Linux)

# 1. Install the GNOME runtime (required, one-time setup)
flatpak install flathub org.gnome.Platform//48

# 2. Install DinoX (replace ARCH with x86_64 or aarch64)
flatpak install dinox-1.1.7.4-ARCH.flatpak

AppImage (Linux)

Download the .AppImage file, make it executable and run:

chmod +x DinoX-*.AppImage
./DinoX-*.AppImage

Windows

Download and extract the .zip file. Run dinox.exe from the extracted folder.
Note: Windows builds are experimental. See the README for details.

Build from Source

1. Install system dependencies (Debian/Ubuntu):

sudo apt install build-essential meson ninja-build valac \
  libgtk-4-dev libadwaita-1-dev libglib2.0-dev libgee-0.8-dev \
  libsqlcipher-dev libsecret-1-dev libicu-dev libdbusmenu-glib-dev libgcrypt20-dev \
  libgpgme-dev libqrencode-dev libsoup-3.0-dev libgstreamer1.0-dev \
  libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev \
  libnice-dev libgnutls28-dev libsrtp2-dev libgeoclue-2-dev \
  gstreamer1.0-plugins-good gstreamer1.0-pipewire cmake wget

2. Build custom dependencies (webrtc-audio-processing 2.1, libnice 0.1.23, libomemo-c -- not available or too old in distro repos):

# Automated (builds all three):
./scripts/ci-build-deps.sh

3. Build DinoX:

tar xf dinox-1.1.7.4.tar.gz
cd dinox-1.1.7.4
meson setup build
ninja -C build
./build/main/dinox