Matrix client based on Element Android X in the tradition of the original NexusTalk for Android which was based on the now deprecated Element Android codebase.
Similarly to Element X, this NexusTalk Android rewrite should still be considered beta, as it lacks some functionality which one might expect from a fully-featured chat app, compared to the old NexusTalk implementation.
An overview over changes compared to Element X can be found here.
If you want to translate NexusTalk, translation access details will be provided soon.
Translations that concern upstream Element code are best contributed directly to Element, who currently manage translations on localazy.
In general, building works the same as for Element X or any common Android project. Just import into Android Studio and make sure you have all the required SDKs ready.
To develop changes in our matrix-rich-text-editor fork:
- Clone the repo
- Bump the version number to some future version that doesn't exist yet
using
./update_version 1.2.3where1.2.3is your chosen version number. By not re-using any existing version number you can make sure you're using your local build if the build of NexusTalk succeeds. - Publish the wysiwyg by running
make androidin its directory. (Make sure you haveJAVA_HOME,ANDROID_NDK_HOMEand all the build dependencies setup)
- Modify
settings.gradle.ktsto insertmavenLocal()into thedependencyResolutionManagement {}block. - Change the version number of
wysiwygingradle/libs.versions.tomlto match the one you published locally.
Generally, contributions are welcome!
Note that in order to ease upstream merges, we want to leave the smallest footprint possible on Element's sources
when implementing original features or patching Element's behaviour.
In particular (may change a bit while the project is still in alpha):
- Put code into additional files (
chat.nexustalk.*package names) if reasonable- Prefer
nexustalk/libmodule if it doesn't depend on element modules (except maybe strings) - Prefer
nexustalk/componentsmodule if it depend on some of Element's Design/UI components but nothing else - Otherwise, prefer element module where it makes most sense (or create a new module for bigger features, maybe)
- Prefer
- Put NexusTalk-specific drawables and other xml resources that override upstream resources into the
scbuild flavor- This way, we can use the same name and avoid merge conflicts
- Compare e.g.
libraries/designsystem: we define the flavorscand thus put drawables in thescinstead ofmaindirectory. For new modules that do not feature ascflavor yet, copy over the requiredbuild.gradle.ktscontent from a module that does.
- Put NexusTalk-specific strings into
nexustalk/lib- Never touch upstream strings! If we want to change Element's strings, we'll either want a script that patches them,
so we can restore upstream strings before upstream merges and re-do our changes automatically after the merge,
or alternative put it into an
scbuild flavor, if we do not need to touch multiple translations.
- Never touch upstream strings! If we want to change Element's strings, we'll either want a script that patches them,
so we can restore upstream strings before upstream merges and re-do our changes automatically after the merge,
or alternative put it into an
- Don't worry too much about code style if violating it can ease upstream merges
- When putting upstream code into a new block (e.g., putting it in an
if-statement), don't indent the upstream code, but rather add comments like// Wrong indention for merge-ability - startand// Wrong indention for merge-ability - end
- When putting upstream code into a new block (e.g., putting it in an




