-
v2.3.0 Stable
released this
2026-06-30 00:36:37 -07:00 | 19 commits to main since this release✨ New features
- PanelTree — nested tiling panes with resizable dividers and drag-to-move/dock; the tiling counterpart to
WindowManager. Includes a new "Tiling Panes" docs page with an animated drag-and-dock demo. - ListItem styled prefix — optional
prefix/prefix_stylethat keeps its own color even when the row is selected (e.g. a status icon whose color reflects real state while only the row text takes the highlight). - GIF/APNG export fallback fonts — automatic CJK / emoji / symbol fallback fonts so headless exports match what the terminal shows via OS font substitution. New
default_gif_fallback_fonts(); override withfallback_fonts=. - macOS PTY controlling terminal —
forkpty-based controlling-tty setup on macOS for embedded terminal widgets.
🐛 Bug fixes
- Fix
StringIndexErrorwhen truncating multibyte text (em-dash, CJK, accents) inDataTable,PagedDataTable,Table,BarChart, and the export modal. Truncation is now character-safe across all widgets (reported via Kaimon #29).
📚 Docs
- New Tiling Panes guide (PanelTree) with an animated demo.
- Converted event handlers across the guides and tutorials to the preferred
@matchstyle.
Full Changelog: https://github.com/kahliburke/Tachikoma.jl/compare/v2.2.0...v2.3.0
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- PanelTree — nested tiling panes with resizable dividers and drag-to-move/dock; the tiling counterpart to
-
v2.2.0 Stable
released this
2026-06-05 23:59:16 -07:00 | 28 commits to main since this releaseWhat's new
- PixelImage custom backgrounds (#33): new
set_background!/reset_background!functions. A custom background set via the constructor orset_background!now persists across theme changes, clears, and resizes (canvas-tracking is disabled untilreset_background!re-enables it). - Sixel gallery demo updates (real flame graph, custom-bg demo, latency heatmap fix).
Closes #34.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- PixelImage custom backgrounds (#33): new
-
v2.1.0 Stable
released this
2026-04-03 05:41:57 -07:00 | 31 commits to main since this releaseRe-release of v2.0.1 as v2.1.0
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
v2.0.1 Stable
released this
2026-04-03 02:59:26 -07:00 | 32 commits to main since this releaseWhat's Changed
Bug Fixes
- Fix
fill_rect!andset_pixel!to acceptColorRGBin addition toColorRGBA(#31) - Fix
fps_demoreturningColorRGBfrom noise color - Fix resize on Windows: use TTY handle for terminal size (#30)
- Fix
ButtonAPI inwindows_demo
Unicode & Grapheme Support
- Add zero-width combining character support in Cell, Buffer, and TerminalWidget (#29, @ronisbr)
- Fix grapheme handling in Paragraph, StatusBar, and TabBar widgets — use
set_string!andtextwidthinstead of per-char iteration - Add ASCII fast path in
set_string!to skip grapheme segmentation for pure-ASCII strings
Performance
- Restore deadline-based frame pacer with cooperative
sleep(), replacing Timer+Channel mechanism. Fixes frame timing jitter (~2ms overhead per frame) — now locks to target FPS precisely (60/120/240) - First-frame clear screen prevents sixel startup flickering
- Lazy framebuffer clear: skip ~5MB memset per frame when no pixel content is rendered
New Widgets
- Add
WidgetScroll: scrollable 2D viewport for any widget with keyboard/mouse navigation, click-drag panning, and scrollbars (#27, @ronisbr) - Optimized with cached virtual buffer and bulk row copy
Launcher Overhaul
- Replace flat list with categorized
TreeView(Visual, Widgets, Data, Input, System, Test) - Mouse support: click to select, click again to launch, scroll wheel
- Selection persists when returning from a demo
- Word-wrapped description panel, styled keybindings footer
New Demos
- Unicode & Graphemes: combining marks, CJK wide chars, mixed-width text across Paragraph, Table, TabBar, StatusBar
- Widget Scroll: 2D pannable viewport with sparklines, tables, bar charts, gauges, calendars
Other
- GIF delta encoding: write only changed subrects per frame
- Add MP4 export via FFMPEG.jl
- Add
tachiCLI tool for.tachrecording export - Updated documentation for all new features
Contributors
- @ronisbr — zero-width character support, WidgetScroll
- @davidanthoff — Windows resize fix
- @eschnett — reported ColorRGB crash (#31)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Fix
-
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
-
v1.1.6 Stable
released this
2026-03-20 20:30:37 -07:00 | 71 commits to main since this releasePatch release.
- Fix TabBar mouse click selecting wrong tab when overflow is active
- Fix syntax error in tabbar_demo (#23, thanks @felipeacsi)
- Add demo compilation smoke test to CI
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1.1.5 Stable
released this
2026-03-19 17:52:46 -07:00 | 76 commits to main since this releaseTabBar: stateful widget with overflow and mouse support
TabBaris now a mutable, stateful widget — consistent withRadioGroup,SelectableList, and other interactive widgets. Previously it was an immutable display-only struct.handle_key!— left/right/tab to switch tabs (requiresfocused=true)handle_mouse!— click a tab to switch, returns:changedor:nonevalue/set_value!— get/set the active tab index- Automatic overflow — when tabs exceed available width, the visible window scrolls to keep the active tab in view with
…indicators on clipped sides - Mouse hit testing — tab bounding rects are cached during render for accurate click detection
Fully backwards compatible. Existing code that constructs
TabBarinline inview()works unchanged.Closes #22. Thanks @ronisbr for the report.
Other
- New
tabbar_demoin the demos launcher - Updated
sysmondemo to use the new stateful TabBar API - Fix light-mode-dependent test failures in sixel/kitty encoder tests
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1.1.4 Stable
released this
2026-03-18 18:50:43 -07:00 | 80 commits to main since this releasePatch release.
- Fix error swallowing when
app()runs in a spawned thread (#20) — errors inview/update!are now printed to stderr and re-thrown - Fix light-mode-dependent test failures in sixel/kitty encoder tests
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Fix error swallowing when
-
v1.1.3 Stable
released this
2026-03-17 22:06:14 -07:00 | 84 commits to main since this releaseTachikoma.jl v1.1.3
Light & Dark Mode with 13 New Light Themes
Tachikoma now supports both dark and light mode, bringing the total theme count from 11 to 24. The 13 new light themes span a wide range of aesthetics — from the clean minimalism of Paper and Frost to the warm tones of Gruvbox, Dune, and Ayu. Switch between dark and light packs with Tab inside the theme selector (Ctrl+\), and your preference is persisted via Preferences.jl.
New light themes: Paper, Latte, Solaris, Sakura, Ayu, Gruvbox, Frost, Meadow, Dune, Lavender, Horizon, Overcast, and Dusk.
Pixel canvases (sixel and Kitty backends) automatically adapt their background color to match the active mode — white for light, black for dark.
ANSI Escape Sequence Support
ParagraphandScrollPanenow render inline ANSI escape sequences — bold, italic, underline, dim, strikethrough, reverse video, and both 256-color and RGB color codes. This makes it straightforward to display colored output from external commands, log files, or any pre-formatted ANSI text directly in your TUI.A new
ansikeyword (defaulttrue) onParagraphcontrols parsing. Setansi=falseto strip escapes, orraw=trueto display them literally. A newparse_ansiutility is also exported for custom use.Per-Row and Per-Cell DataTable Styling
DataTablenow acceptsrow_styleandcell_stylecallbacks, giving fine-grained control over how individual rows and cells are rendered — useful for conditional formatting, alternating row colors, or highlighting specific values.Bug Fixes
- Fixed light-mode background regression in sixel/kitty encoding — pixel canvases previously rendered with a black background regardless of mode, producing unreadable output in light themes.
- Fixed Windows crash — guarded a POSIX
dup()call inapp()that caused a crash on Windows (#11, #12).
Other Changes
- Updated README to reflect the expanded theme count and dark/light mode support.
- Added
[sources]to the demosProject.tomlfor automatic local resolution on Julia 1.11+. - New ANSI Text interactive demo in the demos launcher.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1.1.2 Stable
released this
2026-03-14 20:27:20 -07:00 | 101 commits to main since this release- Add PrecompileTools workload for ~100x TTFX improvement across core widgets, layout, styling, canvas, and animation
- Add
pre_render!(model)andpost_render!(model)lifecycle hooks called each frame bracketingview - Wrap event dispatch and rendering in
invokelatestfor live Revise reloading during app development - Support single-button modals (empty
cancel_labelorconfirm_labelhides that button) - Fix typo in
export_gif_from_snapshots(thanks @KristianHolme) - Fix tests that depend on user-local Preferences.jl settings
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads