• v2.5.0 1020262d8f

    v2.5.0 Stable

    github-actions[bot] released this 2026-07-29 03:45:06 -07:00 | 0 commits to main since this release

    Tachikoma v2.5.0

    Diff since v2.4.0

    New features

    • Render into a caller-supplied IO sink (#39). with_terminal and app take an io keyword that accepts the sink itself — a socket, a pipe, an IOBuffer — instead of only building one from a tty path, so a Tachikoma app can be driven by something that isn't a terminal. An injected sink is treated as a remote terminal throughout: no raw mode on this process's stdin, no terminal probes, and no process-wide redirect_stdout. tty_size is required alongside io (an injected sink can't be probed), and the new exported set_size!(::Terminal, sz) lets a caller declare a new size where there is no SIGWINCH — a shrink arms a one-shot clear so no stale glyphs are left on the receiver. New on_terminal hands the live Terminal back before the loop starts, and input is the public way a headless caller supplies its keystroke source. The caller's io is the caller's to close.
    • Julia light and dark themes (#42). JULIA_DARK and JULIA_LIGHT join the exported theme constants (26 themes: 12 dark, 14 light), with contrast tuned for each background.
    • tachi render --start/--end. Render only a slice of a recording. Indices are 1-based and inclusive, matching tachi info's frame numbering, and the range applies at load so --compress/--skip compose on top of it.

    Fixes

    • leave_tui! no longer drops an embedding host out of raw mode on exit; setup and teardown now share one "not our terminal" predicate.
    • app(; io=…) no longer dups fd 0, which threw EINVAL in exactly the headless case the feature targets.
    • tachi render's summary line reported the pre-transform frame count rather than the frames actually written.
    • The demo smoke test no longer rewrites the tracked demos/TachikomaDemos/Project.toml on every run.

    Merged pull requests:

    • feat: render into a caller-supplied IO sink (with_terminal/app io kwarg) (#39) (@s-celles)
    • Add Julia light and dark themes (#42) (@s-celles)
    Downloads