A privacy-focused matrix client
  • Rust 82%
  • Slint 16.6%
  • Nix 1.3%
  • Shell 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
rayyan 86b047bdde
All checks were successful
build / build-windows (push) Successful in 6m33s
test / test (push) Successful in 3m33s
build / build-linux (push) Successful in 6m19s
build / build-android (push) Successful in 8m46s
Merge pull request 'session-management' (#50) from session-management into master
Reviewed-on: #50
Reviewed-by: human489 <me@yahya-ahmad.com>
Reviewed-by: flaxeneel2 <me@flaxeneel2.net>
2026-10-13 22:11:18 +02:00
.cargo add an easy to use android build script 2026-07-23 18:59:46 +01:00
.forgejo/workflows split pipeline into multiple files for test vs build 2026-08-28 04:42:53 +01:00
.idea commit farming (jetbrains stuff) 2026-10-04 01:59:48 +01:00
.vscode fresh start for slint 2026-06-21 00:03:01 +01:00
android switch to gradle wrapper for android 2026-08-03 13:20:10 +01:00
scripts switch to gradle wrapper for android 2026-08-03 13:20:10 +01:00
src Fixed minor issues with ownership of user_id and redirect_uri 2026-10-13 20:32:32 +01:00
static Added separation between MIT and Lucide licenses 2026-10-09 23:45:43 +01:00
tests/unit Added timeout cancellation button for OAuth and updated tests 2026-10-11 18:29:19 +01:00
ui Added timeout cancellation button for OAuth and updated tests 2026-10-11 18:29:19 +01:00
.envrc nix 2026-06-25 13:45:33 +01:00
.gitignore Cleaned workspace.xml and removed random whitespace in .gitignore 2026-10-04 01:28:38 +01:00
build.rs fresh start for slint 2026-06-21 00:03:01 +01:00
Cargo.lock added webbrowser as a dependency so that android can open links in the browser ILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROIDILOVEANDROID 2026-10-10 01:43:21 +01:00
Cargo.toml update version to 0.2.0 2026-10-13 20:48:02 +01:00
common.nix ignore the thread_local macro expansion expanding into our code in the code coverage 2026-09-02 13:36:10 +01:00
flake.lock up to rust 1.96.1 2026-07-08 19:14:37 +01:00
flake.nix nix 2026-06-25 13:45:33 +01:00
LICENSE fresh start for slint 2026-06-21 00:03:01 +01:00
README.md Added timeout cancellation button for OAuth and updated tests 2026-10-11 18:29:19 +01:00
shell.nix up to rust 1.96.1 2026-07-08 19:14:37 +01:00

Echelon

A cross-platform matrix client focus-built for the gaming community.

Note

The main git is on https://git.flaxeneel2.net/streigen/echelon . Github is just a push mirror

Note

This branch contains the slint rewrite of the application. More details here

Contributing

The best way to contribute to us is by letting us know about any features you'd like to see in this app, or any bugs that you find. Currently pull requests are closed but we will work on opening that up once we have a stable core app.

Building

Pre requisites

  • Rust
  • Android studio with android SDK 36 and SDK 26. (if you plan on building for android)
  • Xcode (if you plan on building for macOS/iOS)

If you are on NixOS, you can use the provided shell.nix to get a development environment with all the necessary dependencies.

Run nix-shell shell.nix to enter the development environment.

Alternatively, you can use the provided direnv to automatically enable the environment when you cd into the project root.

Ensure this is inside your configuration.nix:

{
  # Allows the direnv manager to always be available
  programs.direnv = {
    enable = true;
    nix-direnv.enable = true;

    # This ensures the shell integration is loaded for bash/zsh
    enableBashIntegration = true;
    enableZshIntegration = true;
    enableFishIntegration = true;
  };
}

Then restart your terminal, and cd into the project directory and enable direnv by running direnv allow and the environment should work!

Development and Building for Desktop

To build the app, run:

cargo build

Development and Building for Android

Currently, the app supports from android sdk version 26-36 (so, android 8 (oreo) to android 16 (baklava)).

To ensure the functioning of the app, all builds of echelon must be tested on both versions.

Building for android

To build for android, we use Cargo NDK.

Run the following command:

./scripts/android-build.sh [--release|--release-compact] # (Default is debug)

If you are on nix, this is also available as android_build

Running the emulators

The nix shell comes with both emulators ready. To run them, you can run android_emulator_{latest,minimum} based on what you need.

Installing the app

Note

Your APK path might be different based on build type and arch, though you will find your final built APK under android/app/build/outputs/apk folder.

To install the app in the emulator/on your device, you need to first build the app and then run:

adb install -r android/app/build/outputs/apk/release/app-x86_64-release.apk

Debugging

Desktop

The application uses tracing for logging. You can control the log level using the RUST_LOG environment variable. The default log level is warn.

RUST_LOG=debug cargo run

Android

To debug the app on Android, you can use logcat to view the logs.

adb logcat -s 'RustStdoutStderr:* AndroidRuntime:E DEBUG:* *:F'

Slint

Why move away from tauri?

Tauri has been amazing to work with, with their mobile support being huge for us to make this app truly cross-platform.

However, during our development process our goals became more ambitious, with the majority of the team in favour of building with a native UI to maximise our resource efficiency.

Licensed Software

All software used can be found inside THIRD_PARTY_LICENSES.md, or if the URL is broken for some reason;

At static/THIRD_PARTY_LICENSES.md inside this repository.