~/ori_term gh release list --limit 30
This release is centered on daemon-mode image rendering — a substantial new capability — paired with a comprehensive sweep of GPU rendering correctness fixes in multi-pane layouts.
# oriterm v0.2.0-alpha.20260513
This release delivers image rendering through the multiplexer daemon, meaning terminal programs that emit images (kitty graphics protocol, sixel, etc.) now work correctly in daemon/client mode. Alongside that, a focused round of GPU rendering fixes closes several correctness bugs in multi-pane layouts, resize behavior, and IME state tracking.
Rendering
- Added image rendering in daemon mode — Terminal images now render correctly when oriterm runs as a daemon. A bounded LRU cache on the server retains recently-used image data, and the client uses an extract-path rewrite to avoid redundant uploads. Images survive pane reuse and multiplexer round-trips without flicker or missing frames.
- Fixed multi-pane background color — The GPU clear color for multi-pane layouts is now sourced from the focused pane's snapshot rather than a hardcoded default. Previously, switching between panes with different color schemes could produce incorrect background flashes.
- Fixed stale image frames after cache eviction — When images were evicted from the GPU cache, affected panes were not always queued for re-render. Fail-fast invalidation now catches this immediately, so evicted images are re-uploaded on the next frame rather than leaving a blank or stale tile.
- Fixed pixel bleed on resize — The cache-blit destination is now pre-cleared whenever the window grows. Without this, leftover pixel data from previous frames could bleed into newly-exposed areas at the edges of a resized window.
- Fixed crashes on zero-extent surfaces — Added guards in the cache-copy path against zero-width or zero-height surface dimensions, preventing panics in edge-case window states (e.g., a pane collapsed to nothing during a split operation).
Multiplexer
- Wire protocol updated to v3 with image fields — The PaneSnapshot schema exchanged between the daemon and its clients now carries image metadata and payload references. This is a breaking wire-protocol change — daemon and client must be on the same version.
- Added bounded LRU image store in the daemon — The multiplexer now maintains a server-side image data store with LRU eviction, capping memory use while keeping recently-rendered images available for connected clients without re-transmission.
Bug Fixes
- Fixed focused-pane chrome state in multi-pane layouts — Window chrome (borders, tab highlights) now correctly reflects the focused pane at all times. Previously, chrome state could be sourced from the wrong pane or lag behind focus changes.
- Fixed IME preedit compositions causing missed redraws — The content-changed predicate now tracks IME preedit revision alongside cell content. In-progress input method compositions correctly trigger redraws instead of being silently skipped.
- Fixed dropped redraws after recoverable GPU errors — The ui_stale flag is now preserved when a GPU surface error is benign and retried, ensuring the frame is not skipped after a recoverable surface loss.
Performance
- Reduced redundant work in image projection — Deduplication of pending image IDs and deferred accounting of sent images in the daemon's projection path eliminate redundant iteration when deciding which images to push to connected clients.
What's Next
- Image protocol completeness — Rounding out support for kitty graphics protocol features including animation frames and Unicode placeholder rendering, building on the daemon-mode image foundation landed here.
- Multi-pane layout hardening — Continued fixes to pane splitting, focus transitions, and chrome rendering across complex layout configurations.
- GPU pipeline resilience — Ongoing work on surface-loss recovery, device reset handling, and wgpu pipeline edge cases, particularly on Linux under Wayland and X11.
30 releases ori-termchangelog