0.3.0 (unreleased)
Native Metal Support.
Native Vulkan Support.
Quake window support.
Kitty image protocol.
Breaking: Decorations as Transparent is default on MacOS (instead of Enabled).
0.2.36
Fix: handler should process two intermediate bytes in CSI sequences by @aymanbagabas .
Fix DECSCUSR.
0.2.35
GPU memory usage drop 83%.
Sync input render logic (macos).
0.2.34
Fix issue for finding fonts introduced with the v0.2.33 new font loader.
0.2.33
Platform-specific configuration improvements #1341 :
Added support for platform-specific environment variables via env-vars field in platform config
Platform-specific env-vars are now appended to global env-vars instead of replacing them
Fixed configuration inheritance: platform overrides now use field-level merging instead of replacing entire sections
Window, Navigation, and Renderer settings can now be partially overridden per platform without duplicating all fields
Added theme field to platform config for per-platform theme selection
Shell configuration continues to use complete replacement for simplicity
Fix ScrollPageUp and ScrollPageDown actions not working in custom keybindings #1275 .
Fix Noticeably slower startup compared to wezterm, foot #1346 .
Fix Font loader taking a LOT of time to load fonts #1339 .
Fix Rio panics on launch on a Raspberry Pi 5 #1332 .
Fix kitty keyboard protocol.
Support reporting terminal version via XTVERSION.
0.2.32
Updated WGPU to v27.0.1.
Fix No backend are enabled on FreeBSD #1235.
0.2.31
Update Rust to v1.90.
Fix kitty keyboard recognition.
Breaking: Simplified key binding escape sequences
Replaced separate text and bytes fields with a single esc field
Escape sequences are now sent directly to the PTY without text manipulation
Migration: Replace bytes = [27, 91, 72] with esc = "\u001b[H"
Migration: Replace text = "some text" with esc = "some text"
Example: { key = "l", with = "control", esc = "\u001b[2J\u001b[H" } to clear screen
Fix key binding conflicts : Resolved issues where keys like PageUp, PageDown, and Alt+Enter required explicit "None" bindings before they could be reassigned
Simplified binding conflict resolution logic to automatically remove conflicting default bindings
User-defined bindings now always take precedence without requiring placeholder "None" entries
0.2.30
Fix Debian/Ubuntu package installation : Resolved terminfo conflicts with system packages #1264
Debian (.deb) packages no longer include terminfo files to avoid conflicts with ncurses-term
Users on Ubuntu 22.04 and older need to manually install terminfo after package installation
Debian 13+ and Ubuntu 24.04+ users get terminfo from system's ncurses-term package
RPM packages continue to include terminfo as before
Add audible & visual bell support #1284 .
0.2.29
Fix blinking cursor issue #1269 .
Fix Rio uses UNC (?) path as working directory, breaking Neovim subprocesses on Windows.
Add NSCameraUseContinuityCameraDeviceType to plist for macOS.
0.2.28
Optimized rendering pipeline for improved performance : Implemented deferred damage checking and render coalescing
Added Wakeup events to batch multiple rapid terminal updates into single render passes
Deferred damage calculation until render time to reduce unnecessary computations
Skip rendering for unfocused windows when disable_unfocused_render is enabled
Skip rendering for occluded windows when disable_occluded_render is enabled
Improved damage merging to always accumulate updates even when already marked dirty
Enhanced performance for rapid terminal output by coalescing non-synchronized updates
0.2.27
Breaking: If xterm-rio is installed we prioritized it over rio terminfo.
Fix sixel/iterm2 graphics persistence issue : Fixed graphics remaining visible when overwritten by text
Graphics are now properly removed when cells containing them are overwritten
Fixes issues with file managers like Yazi where images would persist incorrectly
Simplified graphics cleanup logic by removing unused ClearSubregion functionality
CJK Font Metrics : Fixed CJK characters displaying "higher" than Latin characters #1071
Implemented comprehensive CJK font metrics handling with consistent baseline adjustment
Fixed scrolling issues for mixed Latin and CJK text content
Added CJK character width measurement using "水" (water ideograph) as reference
Created consistent cell dimensions across different font types
Developed extensive test suite with 40+ font-related tests to verify fixes
0.2.26
Fix frame dropping in release builds : Fixed an issue where release builds would drop frames due to damage event timing
Damage events are now emitted directly after parsing PTY data, ensuring proper batching
Removed redundant Wakeup event mechanism that was causing multiple renders per update
Synchronized update timeouts now properly emit damage events
Significantly improves rendering smoothness in optimized builds
0.2.25
Fix: Rio doesn't launch from context menu on Windows.
Fix: Rio lacks embedded icon on Windows 10 by @christianjann .
Fix custom shells in /usr/local/bin not found on macOS : Fixed an issue where custom shells installed in /usr/local/bin were not found when Rio was launched from Finder or other GUI applications
On macOS, Rio now uses /usr/bin/login to spawn shells, ensuring proper login shell environment with full PATH
Custom shells like Fish, Nushell, or custom Zsh installations in /usr/local/bin will now work correctly
0.2.24
Fix game mode regression.
Hint Label Damage Tracking : Improved hint label rendering performance with proper damage tracking
Hint label areas are now properly marked for re-rendering when cleared
Eliminates visual artifacts when hint labels are removed
Optimized rendering to only update affected screen regions
Configurable Hyperlink Hover Keys : Hyperlink hover modifier keys are now configurable
Configure custom modifier keys through the hints system in config.toml
Default behavior unchanged: Command on macOS, Alt on other platforms
Supports any combination of Shift, Control, Alt, and Super/Command keys
Example: mouse = { enabled = true, mods = ["Shift"] } to use Shift key
Hints Configuration : Renamed hints.enabled to hints.rules for better clarity
Update your configuration: [[hints.enabled]] → [[hints.rules]]
All hint configuration sections now use hints.rules.* instead of hints.enabled.*
Functionality remains the same, only the configuration key names changed
0.2.23
0.2.22