Skip to content

Releases: omacom-io/ttfx

v0.3.2

Choose a tag to compare

@omarchybot omarchybot released this 17 Aug 07:20

What's Changed

New Contributors

Full Changelog: v0.3.1...v0.3.2

v0.3.1

Choose a tag to compare

@dhh dhh released this 11 Aug 20:55

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

Choose a tag to compare

@dhh dhh released this 10 Aug 21:03

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

Choose a tag to compare

@dhh dhh released this 10 Aug 13:28

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

Choose a tag to compare

@dhh dhh released this 10 Aug 13:09

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

Choose a tag to compare

@dhh dhh released this 10 Aug 11:17

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 rings by 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

Choose a tag to compare

@dhh dhh released this 09 Aug 23:14

Packaging and attribution release — no behavior changes since v0.1.0.

  • LICENSE uses standard MIT text carrying both copyrights; the fuller acknowledgement of ChrisBuilds/terminaltexteffects lives in NOTICE
  • repository renamed to omacom-io/ttfx to match the binary
  • --version now 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

Choose a tag to compare

@dhh dhh released this 09 Aug 23:01

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.