No description
  • Kotlin 98.6%
  • Python 0.7%
  • Shell 0.5%
Find a file
Christoph Wolff 452b7598ea Hide public rooms in closed mode
A closed-mode server does not federate and has no public rooms, as on
iOS. v26.10.0 adds Element's switch for it,
SessionEnterpriseService.arePublicRoomsDisabledByHomeserver(), and our
DefaultSessionEnterpriseService now returns the session's closed mode
there instead of false. Creating a room or space then offers no
"Public" (ConfigureRoomPresenter, which also creates spaces), and the
Security & privacy screen of a room or space no "Anyone"
(SecurityAndPrivacyState), except on a room that is already public, so
its state stays visible. "Ask to join" (Labs, off by default) stays, as
on iOS. Servers without closed mode, and servers whose mode is not
known, keep Element's options.

DefaultSessionEnterpriseServiceTest covers closed mode, encryption off
without closed mode and an unknown mode; its module's tests now use the
server encryption fakes. OPENMESSENGER.md describes the gate in the
closed-mode row, now named "silent device confirmation and no public
rooms", and lists the edits.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 13:26:26 +02:00
.forgejo/workflows Document the fork and keep Element's licence notices 2026-10-14 17:56:46 +02:00
.github Merge Element X Android v26.10.0 2026-10-21 12:47:52 +02:00
.idea Fix compilation warnings after Kotlin 2.4.20 and KSP 2.3.12 upgrade 2026-10-01 16:45:18 +02:00
.maestro Fix Maestro logout test when the device is the only session 2026-10-16 09:21:26 +02:00
annotations Update ContributesNodeProcessor so that generated classes follow naming convention 2026-08-24 11:31:22 +02:00
app Merge Element X Android v26.10.0 2026-10-21 12:47:52 +02:00
appconfig Merge Element X Android v26.10.0 2026-10-21 12:47:52 +02:00
appicon Replace Element's icon, logo and onboarding artwork 2026-10-14 17:56:46 +02:00
appnav Closed mode: share into another account without its verification step 2026-10-21 13:26:26 +02:00
codegen Fix compilation warnings after Kotlin 2.4.20 and KSP 2.3.12 upgrade 2026-10-01 16:45:18 +02:00
docs Update docs/nightly_build.md 2026-09-15 17:26:18 +03:00
enterprise@5c06c0f1e4 Update enterprise submodule to latest main 2026-10-09 08:30:21 +00:00
fastlane/metadata/android/en-US Adding fastlane file for version 26.10.0 2026-10-16 11:54:53 +02:00
features Hide public rooms in closed mode 2026-10-21 13:26:26 +02:00
gradle Update element-call-android to 0.1.0-rc.8 and the Rust SDK to 26.10.15 2026-10-15 22:25:54 +02:00
libraries Silent identity: checked against sdk-android 26.10.15 2026-10-21 12:47:53 +02:00
openmessenger Start screen: no "Create account", no default server, own welcome text 2026-10-16 08:06:03 +02:00
plugins Merge Element X Android v26.10.0 2026-10-21 12:47:52 +02:00
screenshots Sync Strings from Localazy 2026-10-12 00:37:35 +00:00
services Update Matrix Rust SDK to 26.10.14-nightly (#7930) 2026-10-15 16:47:56 +02:00
tests Merge Element X Android v26.10.0 2026-10-21 12:47:52 +02:00
tools Setting version for the release 26.10.0 2026-10-16 11:51:28 +02:00
.editorconfig Restore no-unused-imports behaviour for ktlintFormat 2025-12-04 10:18:19 +01:00
.gitattributes Document the fork and keep Element's licence notices 2026-10-14 17:56:46 +02:00
.gitignore Fix warning about deprecated Gradle keepRules.file API (#7498) 2026-08-21 13:23:34 +00:00
.gitmodules Add git@github.com:element-hq/element-android-enterprise.git as a git module. 2024-06-26 11:58:42 +02:00
AGENTS.md Add consign when AI adds new states for screenshot. 2026-10-06 09:05:28 +02:00
AUTHORS.md Organization renaming: replace all https://github.com/vector-im by https://github.com/element-hq 2023-12-13 09:40:07 +01:00
build.gradle.kts Merge pull request #7700 from element-hq/renovate/kotlin 2026-10-05 15:21:42 +02:00
CHANGES.md Fix aaptDump.txt and changelog 2026-09-29 22:03:13 +02:00
CLAUDE.md Create AGENTS.md 2026-03-25 12:19:26 +01:00
CODEOWNERS Update CODEOWNERS after organization renaming 2023-12-12 13:54:32 +01:00
CONTRIBUTING.md Add Stefan's etiquette to the project. (#6909) 2026-05-29 15:59:54 +02:00
gradle.properties Stop rewriting screenshots that did not meaningfully change 2026-10-01 15:46:28 +02:00
gradlew Update Gradle Wrapper from 9.5.1 to 9.6.1 2026-07-17 13:59:33 +00:00
gradlew.bat Update Gradle Wrapper from 9.7.1 to 9.8.0 2026-09-25 00:45:46 +00:00
LICENSE Copy licence from https://www.gnu.org/licenses/agpl-3.0.txt 2024-09-06 16:39:00 +02:00
LICENSE-COMMERCIAL New LICENSE-COMMERCIAL file 2025-01-07 09:59:50 +01:00
NOTICE.md Sync step 6: refresh the native call's bundled versions 2026-10-21 12:47:54 +02:00
OPENMESSENGER.md Hide public rooms in closed mode 2026-10-21 13:26:26 +02:00
README.md Document the fork and keep Element's licence notices 2026-10-14 17:56:46 +02:00
SECURITY.md Document the fork and keep Element's licence notices 2026-10-14 17:56:46 +02:00
settings.gradle.kts Merge Element X Android v26.10.0 2026-10-21 12:47:52 +02:00

openMessenger for Android

openMessenger for Android is a Matrix messenger by UnityStack for Android 7.0 and later. It is a fork of Element X Android and uses the Matrix Rust SDK.

How this fork differs from Element X Android and how upstream releases are merged: OPENMESSENGER.md.

Status

Only debug builds of the fdroid flavour are made so far; nothing has been released yet. That flavour has no Google services; push notifications need a UnifiedPush distributor app on the device. Firebase push, release signing and store releases come later (see OPENMESSENGER.md).

Prerequisites

  • JDK 21. The build does not download one; Gradle runs on the JDK that JAVA_HOME points to.

  • The Android SDK (the command-line tools are enough) with platform-tools, platforms;android-37.0 and build-tools;36.0.0. For the emulator, also emulator and a system image, e.g. system-images;android-36;default;arm64-v8a on Apple silicon. Set ANDROID_HOME to the SDK, or write sdk.dir=<path to the SDK> into local.properties.

  • A git clone: the build reads the git revision, so a source archive does not build. Do not initialise submodules: enterprise is Element's private repository. The Git LFS files (screenshots and test assets) are not needed to build the app:

    GIT_LFS_SKIP_SMUDGE=1 git clone https://git.unitystack.org/UnityStack/openmessenger-android.git
    

More on the development environment: docs/_developer_onboarding.md and CONTRIBUTING.md (from Element X Android).

Build

With an emulator running or a device connected:

export JAVA_HOME=<path to JDK 21>
./gradlew :app:installFdroidDebug
adb shell am start -n eu.openmessenger.android.debug/io.element.android.x.MainActivity

On Windows, use gradlew.bat. The app appears as "openMessenger dbg". Debug builds are signed with the debug key in app/signature/, so no secrets or signing setup are needed.

To build only the APK, for one ABI (arm64-v8a for the emulator on Apple silicon, x86_64 on Intel and AMD machines):

./gradlew :app:assembleFdroidDebug -Pandroid.injected.build.abi=arm64-v8a

The APK is then app/build/intermediates/apk/fdroid/debug/app-fdroid-arm64-v8a-debug.apk. Without -Pandroid.injected.build.abi, Gradle builds an APK for each of the four ABIs plus a universal one, in app/build/outputs/apk/fdroid/debug/. The first build downloads Gradle and all dependencies (about 4 GB in ~/.gradle) and takes about 20 minutes.

Build the fdroid flavour only: the gplay flavour, which ./gradlew assembleDebug also builds, contains Element's Firebase configuration (see OPENMESSENGER.md).

Security

See SECURITY.md.

Licence

AGPL-3.0-only, see LICENSE. openMessenger for Android is based on Element X Android, copyright Element Creations Ltd and New Vector Ltd. Details, including the copyright of UnityStack's modifications: NOTICE.md.