-
v2.5.0 Stable
released this
2026-07-29 03:45:06 -07:00 | 0 commits to main since this releaseTachikoma v2.5.0
New features
- Render into a caller-supplied IO sink (#39).
with_terminalandapptake aniokeyword that accepts the sink itself — a socket, a pipe, anIOBuffer— 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-wideredirect_stdout.tty_sizeis required alongsideio(an injected sink can't be probed), and the new exportedset_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. Newon_terminalhands the liveTerminalback before the loop starts, andinputis the public way a headless caller supplies its keystroke source. The caller'siois the caller's to close. - Julia light and dark themes (#42).
JULIA_DARKandJULIA_LIGHTjoin 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, matchingtachi info's frame numbering, and the range applies at load so--compress/--skipcompose 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 threwEINVALin 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.tomlon every run.
Merged pull requests:
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Render into a caller-supplied IO sink (#39).
-
v2.4.0 Stable
released this
2026-07-22 01:54:09 -07:00 | 5 commits to main since this releaseTachikoma v2.4.0
Tachikoma v2.4.0
New features
dir=working directory for PTYs.pty_spawnandTerminalWidgetaccept adir=keyword that sets the spawned child's working directory. Both spawn backends fail loudly rather than silently running in the inherited cwd — the macOS forkpty pathchdirs the child (exiting 127 on failure) and the Linux posix_spawn path uses theaddchdir_npfile action.- Host stream guard (
set_stream_guard!). New hook letting an embedding host (e.g. KaimonGate) run the entirewith_terminallifecycle with the real process stdout/stderr instead of a capture wrapper. This fixes a raw-mode TUI wedging the host REPL's stdin on exit when an output-capture mux is active (Kaimon #67).
Robustness
- Portable
openptyresolution. The Copenptysymbol is now resolved at runtime across libc/libutil variants (glibclibutil.so.1, merged-libc glibc ≥2.34, and musl) instead of a single hardcoded library name, erroring loudly with the list of candidates tried if none resolve.
Tests
- Coverage for
dir=(child cwd is set; a bad directory never falls back to the parent's cwd) and for the stream-guard plumbing.
Closed issues:
- TextInput renders CJK wide characters as blank or garbled (#41)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v2.3.8 Stable
released this
2026-07-20 04:28:45 -07:00 | 6 commits to main since this releaseFixed
- TextInput: CJK / wide characters now render correctly (#41). Rendering, horizontal scroll, and cursor placement work in display-column space, so two-column glyphs (Korean, Chinese, Japanese, …) get their proper lead + pad cells instead of being crammed into one cell and overwritten. Click-to-position is now width- and label-aware. Length validators continue to count each syllable as a single character.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v2.3.7 Stable
released this
2026-07-19 17:26:23 -07:00 | 7 commits to main since this releaseTachikoma v2.3.7
Improvements
- Layout-independent theme selector binding.
Ctrl+\is unproducible on AZERTY and similar layouts where backslash requires AltGr — the character only exists as composed text, which terminals suppress whileCtrlis held.Ctrl+Tis now the primary binding for the theme selector (letter chords report the same key code on every keyboard layout);Ctrl+\is kept as a US-layout alias. Help, docs, and demo footers updated to match.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Layout-independent theme selector binding.
-
v2.3.6 Stable
released this
2026-07-17 06:21:29 -07:00 | 8 commits to main since this releaseTachikoma v2.3.6
Bug fixes
- Input starvation when render-bound. When a frame's render exceeded the frame budget, the skipped inter-frame
sleepwas the only yield to Julia's event loop, so libuv never read stdin and every key was dropped while the app kept animating. The app loop now yields explicitly on render-bound frames, so keyboard/mouse input is serviced every frame regardless of render cost. Affects anyapp()running near or over its FPS budget, on any terminal.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Input starvation when render-bound. When a frame's render exceeded the frame budget, the skipped inter-frame
-
v2.3.5 Stable
released this
2026-07-16 18:53:58 -07:00 | 10 commits to main since this releaseWindows — terminal sizing
terminal_size()now reads the live console size fromCONOUT$, so Windows TUIs fill the real window at startup and track resizes — even when stdout is redirected (previously it fell back to the 24×80 default and never updated).
Windows — input (new
ReadConsoleInputWbackend)- Mouse now works on Windows: press / release / drag / move, left / right / middle buttons, and vertical + horizontal wheel — events libuv's raw reader was silently dropping.
- Keyboard runs through the same backend: characters, arrows, F1–F12, Home/End/PgUp/PgDn/Ins/Del, Enter/Tab/Esc/Backspace, Shift-Tab, and Ctrl combinations.
- On by default on Windows; opt out with
TACHIKOMA_WIN_CONSOLE_INPUT=0.
International keyboard (all platforms)
- Legacy (non-Kitty) input path decodes multi-byte UTF-8 — accented / non-ASCII characters no longer mojibake into a single Latin-1 char.
- Kitty keyboard protocol requests flags 4 (alternate keys) + 16 (associated text) and decodes from the terminal-reported character instead of a US-only shift table, so shifted symbols, accents, and AltGr/Option combos decode correctly on any layout.
- Adds a non-exported raw-input tap (
enable_raw_capture!/last_event_raw) and atools/keyboard_diagdiagnostic app.
Compatibility
- Non-Windows: only the international-keyboard decoding applies; all Windows code is
@static/runtime-gated and inert off Windows. - No exported API changes, no breaking changes → patch release.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v2.3.4 Stable
released this
2026-07-11 22:25:58 -07:00 | 13 commits to main since this releaseTachikoma v2.3.4
Patch fix:
set_string!now strips C0/DEL control characters (\r,\n,\b, DEL) before drawing, so a bare control char in widget content can no longer be flushed to the terminal raw (a lone\rjumped the cursor to column 0 and smeared the row — seen in Kaimon's Activity tab / log pane on slate tool-call content)._strip_ansionly removed ESC sequences; this closes the bare-control-char hole. Full suite 5106/5106.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
v2.3.3 Stable
released this
2026-07-09 20:43:07 -07:00 | 14 commits to main since this releaseTachikoma v2.3.3
Tachikoma v2.3.3 — DataTable wide-character (CJK) layout fix
Fixed
DataTableno longer shears its layout on wide/double-width characters. A cell containing CJK (or other double-width) text — e.g. a開門session label — was padded and truncated by character count instead of display width, so the cell overran its column: the trailing glyph clipped and every column to its right shifted. Cell padding/truncation, header truncation, and auto-width sizing now measure in display width. The same fix applies toPagedDataTable. (The buffer and terminal-flush layers were already width-aware; this closes the widget-layer gap left by the earlier truncation-crash fix in #36.)
Added
truncate_to_width(s, w)— a grapheme-aware,textwidth-budgeted truncation helper (shared by the table widgets).
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v2.3.2 Stable
released this
2026-07-07 18:33:04 -07:00 | 15 commits to main since this releaseFixes
- Fix hard-coded absolute Tachikoma dev path in demo
Project.toml(3ea9c6c)
Full Changelog: https://github.com/kahliburke/Tachikoma.jl/compare/v2.3.1...v2.3.2
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Fix hard-coded absolute Tachikoma dev path in demo
-
v2.3.1 Stable
released this
2026-06-30 11:51:34 -07:00 | 18 commits to main since this releaseBug fix
Fixes a silent GIF export failure in the in-app recording export modal.
When a downstream project doesn't have Tachikoma's optional GIF weakdeps (
FreeTypeAbstraction+ColorTypes), stopping a recording would write the.tachbut silently drop the.gif, while still reporting it as saved.- Honest export reporting — the post-export notification is now built from the formats that actually wrote; failures are reported explicitly (and the swallowed warning now carries a backtrace).
- Availability-gated selection — a GIF preference carried over from a project that had the deps can no longer sit checked-but-grayed and silently fail. SVG remains always-available (pure-core, no FreeType).
tachiCLI —--compressno longer errors (compress_dead_spacenow takespixel_snapshotspositionally).
To enable GIF export, add the weakdeps to your project or call
enable_gif():using Pkg; Pkg.add(["FreeTypeAbstraction", "ColorTypes"])Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads