README.md
This repository now contains a Rust reimplementation of the legacy t CLI as x, with the original Ruby implementation preserved under legacy/.
t has been renamed to x and rewritten from scratch in Rust (instead of Ruby).
The main reason for the rewrite is distribution and support: Rust binaries are much easier to compile and ship reliably. The previous Ruby version required users to set up and maintain a compatible Ruby environment and install runtime dependencies, which was brittle and hard to support across systems.
If you are interested in the previous implementation, it is preserved in the legacy/ directory.
legacy/lib/t/*.rb and exposed through the Rust CLI.x-api package (x-api/src).cli, delete, list, search, set, stream) are wired in the Rust runner.accounts, set active, delete account, version, ruler).stream all and stream matrix use OAuth2 sample stream.stream search, stream users, stream list, and stream timeline use v2 filtered stream rules + stream.X_STREAM_MAX_EVENTS (or legacy T_STREAM_MAX_EVENTS) can be set to limit emitted events (useful for tests/automation).~/.xrc. If ~/.xrc is missing, ~/.trc is used as a read fallback and migrated on write.tests/parity_fixtures.rs and validated against fixtures from legacy/spec/fixtures.The project is pinned to Rust 1.93.1 via rust-toolchain.toml.
cargo test
cargo run -- version
cargo run -- accounts --profile /path/to/.xrc
Tagging a new v* release triggers GitHub Actions to build and publish binaries for:
x86_64-unknown-linux-gnu)x86_64-apple-darwin)aarch64-apple-darwin)x86_64-pc-windows-msvc)Install cargo-release:
cargo install cargo-release --locked
Then tag and push the current Cargo.toml version:
cargo release-tag
Tag messages come from Cargo.toml release metadata (tag-message).
The full original Ruby project is in legacy/.
On Windows, you can install Ruby with RubyInstaller or winget.