Skip to content

Releases: raphamorim/rio

nightly

05 Apr 21:25

Choose a tag to compare

nightly Pre-release
Pre-release

Changelog

v0.3.1

03 Apr 22:03

Choose a tag to compare

Changelog

  • Fix crash when filters option is on.

v0.3.0

03 Apr 19:27

Choose a tag to compare

Rio 0.3.0 is a major release with a ground-up rewrite of the rendering architecture, including a new GPU-accelerated Metal backend on macOS, a completely new tab and split panel system powered by Taffy layout, and features like Kitty/Sixel graphics, command palette, and trail cursor effects. With this level of change, rough edges are expected — if you run into bugs, please report them at https://github.com/raphamorim/rio/issues and they'll be addressed as quickly as possible.

For Windows users, feel free to use 0.3.0 but I'd recommend waiting for the next release, which will include significant improvements and stability
fixes for the platform.

Happy Easter!

Changelog

  • Quit Confirmation Dialog: New in-window quit screen with Rio logo, triggered by Cmd+Q / confirm-before-quit
    • Respond with y to quit or n to cancel
    • Optional native macOS quit dialog via window.macos-use-quit-dialog config
  • Kitty Graphics Protocol: Display images directly in your terminal
    • Direct placements (U=0)
    • Virtual placements (U=1)
    • Diacritic-based row/column encoding (283 combining characters)
    • RGB color encoding for image/placement IDs (24+8 bit support)
    • Virtual placement rendering (infrastructure complete, rendering pending)
  • Sixel Graphics: Full support with proper scrolling and positioning
  • Graphics Rendering Improvements:
    • Fixed vertical positioning alignment
    • Fixed scrolling (images persist when origin scrolls off-screen)
    • Fixed duplicate rendering with per-frame deduplication
    • LRU cache with automatic eviction
  • Native Metal Support (macOS): Hardware-accelerated rendering with Metal
  • New GPU-Rendered Navigation: Faster, smoother tab interface
  • Command Palette: Quick access to terminal functions
  • Toggle Appearance Theme: Switch between dark and light themes at runtime via key binding (ToggleAppearanceTheme) or command palette (only available when adaptive theme is configured)
  • Custom Mouse Cursor: Configurable mouse cursor effects via effects.custom-mouse-cursor
  • Trail Cursor: Smooth spring-animated cursor trail using neovide-style physics (enabled by default via effects.trail-cursor)
  • Desktop Notifications: Support for OSC 9 (iTerm2) and OSC 777 (rxvt) terminal notifications using native platform APIs (macOS UNUserNotificationCenter, Linux D-Bus, Windows Toast)
  • Force Theme: New force-theme configuration property to override the system theme when using adaptive themes
  • macOS Traffic Light Positioning: Customize position of window control buttons
    • Configure via macos-traffic-light-position-x and macos-traffic-light-position-y
    • Defaults to standard macOS positioning (11.4, 16.1)
    • Not available in Tab navigation mode
  • OSC 9;4 Progress Bar Support: Terminal progress indicator (ConEmu/Windows Terminal compatible)
  • Scroll Bar: Overlay scroll bar that appears on scroll and fades out after 2s
    • Works per-panel in split views
    • Draggable thumb with click-on-track jump scrolling
    • Configure via enable-scroll-bar (enabled by default)
  • Tab Title RELATIVE_PATH variable: New template variable that shows a home-relative shortened path (e.g. ~/Documents/a/rio or …/a/psone/starpsx). Default tab title on macOS/Linux changed to {{ TITLE || RELATIVE_PATH }}.
  • Wgpu now is always f32.
    • This fixes non arm chip macos use cases.

Breaking Changes

  • Navigation modes simplified - if you use TopTab, BottomTab, or Bookmark, change to:
    [navigation]
    mode = "Tab"
  • Default Decorations changed to Transparent on macOS (was Enabled)
  • Removed: TopTab, BottomTab, and Bookmark navigation modes
  • Available modes: Plain, Tab, NativeTab (macOS only)
  • Tab color configuration simplified: Removed tabs-foreground, tabs-active-foreground, and tabs-active-highlight
    • Use tabs for inactive tab text and border color (default: #cccccc)
    • Use tabs-active for active tab text color (default: #ffffff)
  • The old padding api became margin:
    # It will apply margin rules to the main container
    # CSS-Like
    margin = [10] # (10px to all)
    margin = [10, 5] # (top and bottom margin are 10px, right and left margin are 5px)
    margin = [10, 5, 15, 20] # (top margin is 10px, right margin is 5px, bottom margin is 15px, left margin is 20px)
    
    # It will apply margin rules to panels
    [panel]
    margin = [5] # (5px to all)
    row-gap = 0 # (0px)
    column-gap = 0 # (0px)

Technical Details

  • Complete rendering architecture rewrite for GPU-based UI
  • Parser now supports APC sequences for Kitty graphics protocol
  • Removed legacy layer/quad rendering system
  • Added Metal backend for macOS, split WebGPU backend for cross-platform
  • New kitty_virtual module for placeholder encoding
  • Graphics cleanup with LRU eviction strategy (evicts up to 5 oldest when atlas full)
  • Added 5 unit tests for graphics rendering (positioning, LRU, deduplication)

v0.2.37

19 Dec 18:13

Choose a tag to compare

  • Support window bg color via OSC.
  • Fix vi cursor not displayed when moving.
  • Fix font loader for fallbacks and extra.
  • Fix font size updating through config.

Commits

v0.2.36

17 Nov 23:44

Choose a tag to compare

Changelog

v0.2.35

03 Nov 17:28

Choose a tag to compare

  • GPU memory usage drop 83%.
  • Sync input render logic (macos).

Changelog

v0.2.34

03 Nov 14:30

Choose a tag to compare

  • Fix issue for finding fonts introduced with the v0.2.33 new font loader.

Changelog

v0.2.33

30 Oct 15:28

Choose a tag to compare

  • 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.

Changelog

v0.2.32

16 Oct 21:44

Choose a tag to compare

  • Updated WGPU to v27.0.1.
  • Fix No backend are enabled on FreeBSD #1235.

Changelog

v0.2.31

26 Sep 11:45

Choose a tag to compare

  • 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

Changelog