-
Tachikoma v2.0.0 Stable
released this
2026-03-25 01:27:38 -07:00 | 47 commits to main since this releaseTachikoma v2.0.0
A major release bringing a complete RGBA pixel pipeline, type-safe widget styling, and sixel compositing with text preservation.
Breaking Changes
Widget Styling System
TabBar and Button now use type-parameterized decoration styles instead of keyword arguments:
# TabBar: BracketTabs (default), BoxTabs, PlainTabs TabBar(["Tab 1", "Tab 2"]; tab_style=TabBarStyle(decoration=BoxTabs(box=BOX_HEAVY))) # Button: BracketButton (default), BorderedButton, PlainButton Button("Submit"; button_style=ButtonStyle(decoration=BorderedButton()))The old kwargs (
style,active_style,bordered,box) are removed. This is a clean break — users subtypeTabDecorationorButtonDecorationto create custom styles with full render control.RGBA Pixel Pipeline
The entire pixel pipeline now uses
ColorRGBAinstead ofColorRGB:BLACKisColorRGBA(0,0,0,0xff),TRANSPARENTisColorRGBA(0,0,0,0x00)encode_sixelandencode_kittyacceptMatrix{ColorRGBA}— transparency is expressed through the alpha channel- The
bgsentinel parameter is removed everywhere Base.convertmethods allow implicitColorRGB→ColorRGBAassignment
FloatingWindow
on_renderSignature changed from
(inner, buf, focused)to(inner, buf, focused, frame). Theframeparameter (which can benothing) enables pixel graphics (PixelImage, kitty, sixel) inside floating windows.New Features
Sixel Virtual Framebuffer Compositor
Multiple
render_rgba!calls per frame are alpha-composited into a shared framebuffer. A text mask algorithm preserves terminal text (titles, borders, labels) over pixel content by splitting sixel output into non-overlapping rectangles that avoid text cells. Transparent pixels are filled with the canvas background for flicker-free rendering.Kitty RGBA with Z-Index
Native alpha channel support via
f=32with z-index layering for proper window stacking.ColorTypes.jl Extension
Seamless bidirectional conversion between Tachikoma and the Colors.jl/Makie ecosystem:
using Tachikoma, ColorTypes tc = to_rgb(RGB{N0f8}(1.0, 0.0, 0.0)) # ColorTypes → Tachikoma ct = to_colortype(ColorRGB(0xff, 0, 0)) # Tachikoma → ColorTypesAuto-activates when ColorTypes is loaded. Zero-cost if not.
Button Flash Customization (#24)
Custom flash animations via
flash_stylefunction andflash_framesduration onButtonStyle. Thanks @ronisbr!Environment-Based Graphics Detection
Auto-detect kitty/sixel support from
TERM,TERM_PROGRAM, and other env vars — faster startup (skips 100ms probe roundtrip) and enables graphics on remote TTY sessions where escape sequence probing is unsafe. Supports kitty, Ghostty, WezTerm, iTerm2, foot, and mlterm.24 Built-in Themes
11 dark + 13 light palettes with
light_mode()/set_light_mode!()and per-theme canvas background colors.Lifecycle Hooks
pre_render!(model)andpost_render!(model)callbacks for Revise-compatible hot reloading workflows.Bug Fixes
- Fix invisible cursor on light themes in terminal/REPL demos (#25). Thanks @eschnett!
- Fix frame pacer 30fps cap with conditional
take!(wake) - Fix flaky
spawn_timer!test on slow CI runners - Remove
Infiltratorfrom TachikomaDemos dependencies
Contributors
Thanks to @ronisbr for the button flash customization PR and @eschnett for reporting the light-mode cursor issue.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads