Skip to content
dfuchssPublic

About

Tacit is a fork of Tammy Messenger with one clear goal: a modern, appealing Matrix experience. Development is on GitLab.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

831 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tacit

Tacit logo

Tacit is a fork of Tammy Messenger with one clear goal: a modern, appealing Matrix experience.

Quietly powerful. Smooth by default. Built for focus.

Tacit is based on Trixnity Messenger, with an updated visual style, and cleaner interaction patterns.

Why Tacit?

  • A modern, polished desktop-first Matrix experience.
  • Faster, clearer room navigation with a contemporary chat layout.
  • Matrix power under the hood, with UX tuned for daily use.
  • A fork that focuses on delight, flow, and visual consistency.

Status

  • Target platform: Desktop / Web
  • Other platforms: Android/iOS are currently not actively tested in Tacit.
  • Releases: Unsigned desktop builds for macOS (Apple Silicon), Linux and Windows, see Download / Install. Changes are listed in CHANGELOG.tacit.md.
  • Maturity: Alpha — expect rough edges, breaking changes, and frequent iteration.

Download / Install

Download the latest release for your system:

System Download
macOS (Apple Silicon) tacit-macos-arm64.dmg
Windows (x64) tacit-windows-x64.zip
Linux (x64) tacit-linux-x64.zip

All releases and their notes are on GitLab; the files themselves are hosted on GitHub Releases.

The builds are not signed, so macOS and Windows warn you on the first start:

  • macOS: drag Tacit to Applications and open it. When macOS blocks it, click Done, then open System Settings > Privacy & Security, scroll to Security and click Open Anyway (the button only shows for about an hour after the attempt). Right-click > Open no longer works. If macOS says the app is "damaged", run xattr -cr /Applications/Tacit.app.

    macOS asks again for every new version you download in a browser. Downloads made with curl are not flagged, so they open without the prompt:

    curl -LO https://github.com/dfuchss/tacit/releases/latest/download/tacit-macos-arm64.dmg
    open tacit-macos-arm64.dmg
  • Windows: unzip and run Tacit.exe. If SmartScreen warns you, click More info > Run anyway.

  • Linux: unzip and run ./Tacit/bin/Tacit.

In-app updates

The desktop app checks GitHub for a new release about once a day (turn this off under Settings > About the app, which also has Check now). A new version is downloaded, checked against the release's SHA256SUMS and prepared in Tacit's data folder; your installed copy is not touched yet. Restart to update (in the banner, the settings or the tray menu) quits Tacit completely, swaps in the new version, keeps your sessions and settings, and starts it again; nothing is installed before you choose it. If the swap fails, the previous version is restored.

Tacit offers Open release page instead of updating itself when it runs from the mounted disk image (/Volumes/...), when macOS runs it from a temporary translocated copy (open it once from Applications), or when the install folder or its parent folder is not writable (e.g. C:\Program Files); update by hand in those cases.

For testing, TACIT_UPDATE_API_URL points the check at another release JSON, TACIT_UPDATE_CURRENT_VERSION pretends to be an older version, and TACIT_UPDATE_FORCE=1 checks right after start and accepts the latest release even when it is not newer.

The web version is available as a Docker image: ghcr.io/dfuchss/tacit (tags: dev for the latest development state, <version> for releases such as 26.9.2-tacit.1).

Screenshots

DMs / Group Chats

DM view

Invites

Invite view

Chatting

Chat view

Emoji picker while typing :)

Emoji picker

Spaces / Guilds

A matrix space is translated to the idea of guilds in Tacit. Guilds only contain rooms. All DMs and group chats are outside of guilds. Guilds can be used to organize rooms, e.g. by topic, project, or team.

Create your guilds

Create guild

Guild overview

Guild overview

Invite to guild

Guild invite

About

About

Releasing

Tacit versions follow v<upstream>-tacit.<n>, e.g. v26.9.2-tacit.1. The numeric appVersion stays unchanged.

  1. Move the [Unreleased] entries in CHANGELOG.tacit.md to a new ## 26.9.2-tacit.1 section and commit.
  2. git tag v26.9.2-tacit.1
  3. Push the tag to gitlab.com first, then to github.com. The GitHub push triggers .github/workflows/release.yml, which builds the packages, creates the GitHub Release and then the GitLab Release: git push gitlab.com v26.9.2-tacit.1 && git push github.com v26.9.2-tacit.1
  4. The same tag also triggers the Docker image build.

The workflow needs the repository secret GITLAB_TOKEN on github.com: a gitlab.com project access token with the api scope and the Developer role or higher.

Development / Building

You can find the build artifacts in build/compose/binaries/main-release/... after running the build commands below.

Linux / macOS

  • TAMMY_BUILD_FLAVOR=PROD ./gradlew createReleaseDistributable (builds app)
  • TAMMY_BUILD_FLAVOR=PROD ./gradlew packageReleaseWebZip (builds web zip version)

Windows

  • set TAMMY_BUILD_FLAVOR=PROD (sets environment variable for the current command prompt)
  • gradlew createReleaseDistributable (builds app)
  • gradlew packageReleaseWebZip (builds web zip version)

Original README below

The original Tammy README content follows below for reference.

Run locally

If you run the messenger from the IDE or command line, the

Desktop

./gradlew run

To try Tacit against the seeded demo data of the screenshots (logged in as tacit, throwaway homeserver in Docker; the URL and credentials are printed on start): ./gradlew runDemo

Android

In Android Studio or IntelliJ, choose the Android configuration and run on an emulated or your physical device.

Web

./gradlew wasmJsBrowserDevelopmentRun

Create release

  1. Create a git commit bump version with the following changes:
    • appPublishedVersion (e. g. 26.4.0) set to the version that is going to be published.
    • appVersion must be the same as appPublishedVersion.
    • Updated CHANGELOG.md containing a section about the new version.
    • Cancel triggered pipeline.
  2. Create a version-tag of the form v26.4.0.
    • The version must be the same as appPublishedVersion.
    • This will trigger a pipeline creating all distributions, uploading them into package registry and linking them in a newly created GitLab release.
  3. Create a git commit with [skip-ci] in the commit message and the following changes:
    • appPublishedVersion stays at the version, that has been published (e. g. 26.4.0).
    • appVersion increased to the next version (e. g. 26.4.1) as this is used for DEV builds.

Fastlane

When running locally, you must set TAMMY_BUILD_FLAVOR to PROD (e.g. by prepending TAMMY_BUILD_FLAVOR=PROD to each command).

Install fastlane by installing ruby and running:

bundle update

Create screenshots

Create new screenshots for the App.

When using a Mac, you may do first (this needs Android SDK command line tools to be installed):

# macOS
export PATH="$PATH:$HOME/Library/Android/sdk/emulator:$HOME/Library/Android/sdk/tools:$HOME/Library/Android/sdk/cmdline-tools/latest/bin/"

# linux
export PATH="$PATH:$HOME/Android/Sdk/emulator:$HOME/Library/Android/sdk/tools:$HOME/Android/Sdk/cmdline-tools/latest/bin/"

After that you can start the emulators:

./fastlane/run_screenshot_emulators.sh

And create screenshots:

TAMMY_BUILD_FLAVOR=PROD bundle exec fastlane android screenshots

After that you can stop the first script and delete the emulators:

./fastlane/delete_screenshot_emulators.sh

For iOS you have to manually add the following files under Build Phases -> Copy Bundle Resources (otherwise fastlane will crash in the CI...):

  • lognity.json
  • Tammy.icon
  • main.swift
  • all the files in iosApp/Screenshots
  • Since the CI will crash if those files are mentioned in the .xcproject file, do NOT commit those changes!

Then, run fastlane ios screenshots

Important environment variables

This does not include default GitLab environment variables that are used.

  • AZURE_ARTIFACT_SIGNING_METADATA_FILE_BASE64
  • AZURE_TENANT_ID
  • AZURE_CLIENT_ID
  • AZURE_CLIENT_SECRET
  • ANDROID_RELEASE_STORE_FILE_BASE64
  • ANDROID_RELEASE_STORE_PASSWORD
  • ANDROID_RELEASE_KEY_ALIAS
  • ANDROID_RELEASE_KEY_PASSWORD
  • APPLE_KEYCHAIN_FILE_BASE64
  • APPLE_KEYCHAIN_PASSWORD
  • APPLE_TEAM_ID
  • APPLE_ID
  • APPLE_NOTARIZATION_PASSWORD
  • SSH_PASSWORD_APP: Web app deployment
  • SSH_PASSWORD_WEBSITE: Website deployment

About

Tacit is a fork of Tammy Messenger with one clear goal: a modern, appealing Matrix experience. Development is on GitLab.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages