Releases: omacom-io/ttfx
Release list
v0.3.2
What's Changed
- Stop dumping core when the terminal goes away by @omarchybot in #18
New Contributors
- @omarchybot made their first contribution in #18
Full Changelog: v0.3.1...v0.3.2
v0.3.1
Two contributor fixes.
Builds again on current Rust. thunderstorm relied on a deref that newer rustc no longer
infers, so cargo build failed outright on recent toolchains. Thanks @zquestz. (#7, #8)
The cursor comes back when something kills ttfx. A SIGTERM mid-animation skipped teardown
and left the terminal with a hidden cursor. On a tty ttfx now restores it and then dies from
the signal, so a supervisor still sees a terminated child; redirected output is unchanged.
Thanks @yashranaway. (#9)
Full Changelog: v0.3.0...v0.3.1
— 🤖 Claude, posting on behalf of @dhh
v0.3.0
Terminal resize
Effects now rebuild when the terminal is resized mid-animation instead of drawing into a stale
canvas. The animation restarts against the new dimensions, so a window drag no longer leaves
torn or clipped output.
Performance
A broad pass over event dispatch, path/scene resolution, and the render loop roughly halves the
time the heavier effects take compared to 0.2.1:
| At 200×50 cells | 0.2.1 | 0.3.0 |
|---|---|---|
| slide | 147 ms | 76 ms |
| beams | 345 ms | 181 ms |
| rings | 1,492 ms | 521 ms |
| waves | 1,082 ms | 374 ms |
| startup | 0.9 ms | 0.5 ms |
Measured against the pinned upstream, the median speedup across the 35 work-bound effects moves
from 14.1× to 27.5× (range 17.1×–47.4×).
Docs
The README carries the full effects gallery, refreshed benchmark numbers, and a corrected
explanation of the two clock-bound effects (matrix, thunderstorm) — their runtime is a fixed
animation duration, so what ttfx buys there is a higher frame rate inside that window, not a
shorter one.
v0.2.1
A packaging cleanup release for quieter, faster installation builds.
- Removes stale terminal dimension fields so release builds complete without compiler warnings.
- Keeps all rendering behavior unchanged; the complete parity and CLI suites remain green.
- Pairs with an updated Omarchy package recipe that no longer compiles or runs the upstream test suite during
makepkg. Tests remain enforced in project CI and release validation.
v0.2.0
ttfx 0.2.0 is a performance-focused release that makes every effect faster while preserving byte-for-byte rendering behavior.
Performance
- Aggregate throughput across all 35 non-clock effects improved from 19,874 to 23,305 FPS (+17.26%).
- A representative dense 200x50 workload improved aggregate FPS by 32.49%.
- Beams is 2.15x faster on the standard corpus and 1.99x faster on dense input.
- Matrix rain is 1.86x to 5.68x faster in isolated 200x50 measurements, depending on color mode.
- Sampled xterm-heavy workloads are 3.17x to 6.61x faster.
- The optimized release binary is about 31% smaller than the v0.1.3-era master binary used for comparison.
The gains come from cheaper color storage and xterm conversion, one-pass grouping, adaptive active-character tracking, allocation-free hot paths, direct frame rendering, and effect-specific work elimination.
Correctness and platform support
- Complete benchmark frame streams remained byte-identical.
- 354 effect parity cases, 41 terminal byte-stream cases, and 19 CLI cases pass.
- Linux, macOS, and static musl CI pass.
- macOS support and platform-tolerant easing goldens are included.
Rust API note
The compact RGB representation changes public color field types from heap-backed strings to RgbString and prevents external Color struct literals. CLI behavior and rendered output are unchanged.
v0.1.3
A performance-focused release:
- Delivers 62% more whole-suite frame throughput across the 35 non-clock-bound effects, with a 61% geometric-mean improvement.
- Speeds up
ringsby 2.52x, from 3,950 to 9,945 FPS in the release benchmark. - Raises ttfx's combined geometric-mean throughput to 14.64x that of upstream Python TTE.
- Preserves the existing animation output and CLI behavior byte-for-byte.
v0.1.2
Packaging and attribution release — no behavior changes since v0.1.0.
LICENSEuses standard MIT text carrying both copyrights; the fuller acknowledgement of ChrisBuilds/terminaltexteffects lives inNOTICE- repository renamed to
omacom-io/ttfxto match the binary --versionnow reports the release version (v0.1.1 was withdrawn: it was tagged without the Cargo.toml bump, so its binary reported 0.1.0)
v0.1.0
First release.
All 37 TerminalTextEffects effects ported to Rust, producing byte-identical frames to the Python original (verified against upstream v0.15.0 in CI: 354 frame-parity cases, 41 full tty byte-stream cases, 19 CLI contract checks).
- Single static binary, no runtime dependencies (~3.3 MB musl)
- ~1 ms startup vs ~107 ms for the Python import alone
- Median 9.6x faster rendering across all effects (range 4.5x–21.6x)
- CLI-compatible with
tte: same option names, defaults, and exit codes
Credit for every effect and the engine design belongs to ChrisBuilds/terminaltexteffects; this is a port, MIT licensed with the original copyright preserved.