Release Notes

Version 1.0.2-59

March 27, 2026

Terminal Engine

  • Modified Return Key Handling: Shift+Return, Ctrl+Return, Ctrl+Shift+Return, and all other modifier+Return combinations now correctly route through the terminal engine’s key encoding pipeline. Works with both hardware keyboards and the virtual keyboard toolbar modifier keys.
  • Cursor Blink Mode Fix: Fixed animated cursor blink mode (breathing, heartbeat, etc.) persisting in the config even after disabling cursor blinking. The blink mode setting is now only written when blinking is enabled.
  • Forward Delete Key Fix: Fixed the forward delete key on iPad hardware keyboards being misidentified as backspace. Now correctly sends the Delete escape sequence.

iPad

  • App Switcher & Dock Titles: Each iPad window now shows the active tab’s session name (e.g. user@host) in the App Switcher and Dock, instead of a generic app name. Previously this only worked on macOS.

iOS Local Shell

  • Ctrl-Y Yank: The local shell line editor now supports Ctrl-Y to yank back text killed with Ctrl-K or Ctrl-U, matching standard readline/Emacs behavior.

IP Geolocation

  • whatismyip IP Lookup: The whatismyip, whatismyip4, and whatismyip6 commands now accept an optional IP address argument to look up ASN and geo info for any address, skipping STUN discovery. Validates the argument as IPv4 or IPv6 before lookup.

SSH

  • sntrup761x25519-sha512 Key Exchange: Added the sntrup761 post-quantum hybrid key exchange algorithm alongside the existing ML-KEM 768 support. sntrup761 is the algorithm OpenSSH has used by default since version 9.0, so this brings post-quantum negotiation to a much wider set of servers. Unlike ML-KEM which requires iOS/macOS 26, sntrup761 works on all supported OS versions, extending post-quantum protection to older devices.

trzsz-tssh

  • Upstream Rebase: Rebased against latest upstream trzsz-ssh and tsshd, picking up improved rekey crypto, better keepalive diagnostics, and per-session input discard. The upstream rekey fix eliminated the need for the SuppressRekey/ResumeRekey workaround that paused the rekey timer during iOS app backgrounding.

Version 1.0.2-57

March 25, 2026

Terminal Engine

  • Cross-Row URL Detection: URLs that span multiple terminal rows are now correctly detected, highlighted, and clickable even when rows are not soft-wrapped. Especially useful for long login/auth URLs such as those generated by Claude Code and Codex authentication flows. A new cross-row extension pass detects logical pane boundaries (e.g. box-drawing vertical separators in tmux split panes) and concatenates text only within the correct column range before re-running URL matching. Works both in tmux panes and the regular terminal.
  • Cursor Blink Styles: New Blink Style picker in Settings > Cursor > Animation with 7 animated modes: normal, breathing, heartbeat, neon flicker, pulse, candle, and rootshell. Persists across sessions.
  • Harmonious Palette Generation: New toggles in Settings > Appearance > Colors to enable palette-generate and palette-harmonious modes. Includes a live inline preview using CIELAB trilinear interpolation algorithm, showing the 216-color cube and 24-step grayscale ramp updating in real time as settings change.
  • Mouse Click Selection: Fixed mouse/trackpad single-click incorrectly triggering word selection on iPad. Single-click now positions the cursor, double-click selects a word, and triple-click selects a line, matching macOS Ghostty click counting. Touch input is unchanged — double-tap still opens the context menu.
  • Copy on Select: Text selections are now automatically copied to the clipboard on all platforms (iOS, iPadOS, macOS, visionOS). Configurable via a toggle in Settings > Window > Text Selection, defaults to on.
  • Window Titles: On macOS, each window now shows its session name (e.g. user@host) in the dock menu and Mission Control instead of a generic title.

IP Geolocation

  • Local MMDB Databases: Import MaxMind DB files (.mmdb) for fully offline IP geolocation. A new “Local MMDB” provider option performs all lookups on-device with no network requests. Import multiple ASN and country databases and the resolver merges fields across them. Manage databases in Settings with drag-to-reorder priority, swipe-to-delete, and a file importer that validates MMDB structure on import.

iOS Local Shell

  • Dynamic bat Syntax Theme: bat syntax highlighting in the local shell and rf file previews now uses the terminal’s actual RGB palette colors instead of generic ANSI indices. Colors are pushed at session startup and on theme change, producing truecolor output that matches any theme including custom ones.

rf File Browser

  • SFTP Responsiveness: Remote SFTP operations (directory listing, file preview, transfers) no longer block the rf UI. Navigation, filtering, and local tab interaction remain responsive while SFTP work runs in the background.
  • Status Bar Rendering: Fixed status messages like “Loading directory…” and chord prompts like “copy: (c)path…” rendering with spurious trailing colons. The status bar now uses separate rendering paths for text input (with cursor), chord prompts (with block cursor), and status messages (no cursor). Waiting states (SFTP connecting, directory loading) show an animated Braille spinner.

SSH

  • Remote Exec PATH Hardening: SSH exec requests now prepend a comprehensive PATH covering Homebrew, Linuxbrew, Go, snap, and standard system directories. Fixes tssh, mosh, AI agent, and remote commands failing on macOS hosts with zsh configuration, where non-interactive exec channels have a minimal PATH that excludes common tool locations. Also benefits other hosts with restrictive non-interactive PATHs.

Version 1.0.2-56

March 24, 2026

Themes

  • 256-Color Extended Palette: Importing theme files with palette entries beyond index 15 (colors 16–255) now preserves the extended colors. Previously these were silently discarded. Existing saved themes decode without issues and the new extendedPalette field defaults to empty. The theme editor shows an informational row when extended colors are present.

rf File Browser

  • SFTP Remote Browsing: Press ‘o’ in rf to open a saved SSH profile and browse the remote filesystem in a new tab. Local and SFTP tabs coexist in the same rf instance with independent connections. Navigate, preview, create, rename, and delete files over SFTP. Remote preview uses a three-phase pipeline: instant plain text, then bat syntax highlighting via temp file download (preserving the filename for language detection), then kitty image preview for images.
  • Cross-Source Yank/Paste: Yank files locally and paste into an SFTP tab to upload, or yank remote files and paste locally to download. The shared clipboard works across all rf tabs. Recursive directory transfers with cancellation support.
  • Remote Edit: Press ‘e’ or return on a remote file to download, edit locally, and auto-upload on save. Change detection skips upload if unmodified. If the upload fails, the edited file is copied to Documents/.rf-recovery/ and an interactive prompt offers retry, copy-path, and dismiss — preventing data loss from temp file cleanup on exit.
  • Profile Picker: Scrollable list with j/k navigation, live filtering by name/host/username, and Tab completion.
  • Dramatically faster bat preview for large files. Rewrote the ANSI parser, files that previously took seconds to render now preview instantly.

Debug

  • VPN Connection Debug Logger: New opt-in diagnostic logger that records timestamped phases (DNS, SSH, tsshd spawn, Go netstack) with millisecond durations during VPN connection setup. Off by default.

Binary Size

  • Release Build Size Optimizations: Enabled symbol stripping, dead code stripping, and thin LTO in the Xcode release configuration for a smaller binary.
  • Rust Dependency Size Optimizations: bat, gitoxide, and helix builds now smaller.

Version 1.0.2-55

March 22, 2026

iOS Local Shell

  • Transient Prompt: After running a command, the full info bar prompt is replaced with a minimal ❯, reducing scrollback clutter. Customizable via [transient_prompt] in .promptrc.toml or the new Advanced section in Settings.
  • Right Prompt: The clock segment can be moved from the left info bar to a right-aligned position, making the left prompt shorter. Uses ANSI cursor positioning and works with all 13 built-in themes. Configure via right_format in .promptrc.toml or the Settings toggle.
  • rf File Browser: Navigation is now restricted to ~/Documents by default, preventing browsing above the app sandbox home. Disable with restrict_to_home: false in rf.yaml. Yanked-cut files now render with strikethrough and dim to distinguish from yanked-copy (yellow only). New u key clears the yank clipboard and selection. Yank operations immediately re-render the file list. Added config file support — ~/.config/rf/rf.yaml persists show_hidden, sort_by, and restrict_to_home settings across sessions.

Bug Fixes

  • Fixed ghost image overlays in rf file browser when rapidly navigating through image files. Stale image render tasks could complete after the cursor moved on, leaving previous images stuck on screen.
  • Fixed cursor effect preview row in Settings not matching the themed background color.
  • Fixed a crash when viewing JavaScript, HTML, or any file containing <script> blocks with bat. The previous regex engine (fancy-regex) didn't support atomic grouping and possessive quantifiers used in JS/Babel syntax definitions. Temporarily switched to Oniguruma which supports the required regex features. Added panic isolation at the FFI boundary as defense in depth.

Version 1.0.2-54

March 22, 2026

iOS Local Shell

  • rf File Browser: Built-in rf command — a yazi-inspired Swift-native TUI file browser with miller columns. Vim navigation, tabs, filename filter, ripgrep search, bookmarks, file ops (yank/paste/delete/rename/create), visual select, bat syntax-highlighted preview, kitty image preview, git status, 700+ Nerd Font icons, powerline statusbar, copy chords, mouse-draggable columns, and editor shell-out. Optimized for iPad.
  • Shell Scripts: Run POSIX shell scripts on device via sh script.sh or ./script.sh. Supports if/for/while/until/case, functions, pipelines, variables ($?, ${VAR:-default}), quoting, here-documents, redirections, and 25 builtins (test, printf, read, sleep, trap, eval, source, etc.). The ~/.rootshellrc dotfile is now sourced through the interpreter.
  • Multi-Line Input: Incomplete compound commands show a > continuation prompt until complete. Lines ending with \, |, &&, ||, then, else, do, or { also continue. Ctrl-C cancels.
  • Brace Expansion: {1..10}, {a..z}, {1..10..2}, {10..1}, and {a,b,c} work in for-loops and commands.
  • Builtin Tab Completion: Shell builtins now appear in command-position tab completion.
  • Width-Aware Prompt: Prompt adapts to terminal width — progressively truncates paths, then git branch, then hides git status as the terminal narrows.

SSH

  • Ctrl-C to Cancel Connections: Ctrl-C during SSH/SFTP/Mosh/Trzsz connection now cancels and returns to local shell.
  • Remote Command Execution: ssh host command sends a remote exec request instead of opening an interactive shell, matching OpenSSH.

Connections

  • Connection Sheet Redesign: Glass-effect capsule tabs replace the previous menu, with collapsible sections for jump host, agent forwarding, port forwarding, and terminal options.
  • Profile Color Tags: Custom color now tints the profile icon directly instead of a separate indicator.
  • Active Session Counts: Profiles show the number of active terminal sessions.

Terminal

  • Aurora Cursor Effect: Theme-aware cursor shader that picks the two most vibrant colors from your palette. Adapts when you switch themes.

Settings

  • Cursor Style Previews: Visual terminal-cell previews for block, bar, underline, and hollow block styles.
  • Cursor Shader Effect Preview: Live preview with an animated terminal surface showing shader trail effects in real time.

Bug Fixes

  • Fixed a crash when locking the device while the app is running.

Version 1.0.2-53

March 20, 2026

iOS Local Shell

  • Pipe Command Latency Fix: Piped commands (ls | grep, cat file | head, etc.) no longer have a ~1 second delay before command completion. The pipe monitoring system was rewritten from polling with Task.detached sleep loops to event-driven kqueue-backed DispatchSource read sources.
  • libarchive 3.9.0 Upgrade: The bundled tar has been upgraded from libarchive 2.8.3 to 3.9.0 (newer than the version shipped with macOS Tahoe), and now ships four tools instead of one: bsdtar, bsdcat, cpio, and unzip. The upgrade brings Zip64, RAR/RAR5, 7-Zip, CAB, and LHA archive reading; Zstandard, lz4, lzip, and lzop compression; bsdunzip as a standalone unzip replacement; bsdcat for streaming decompression to stdout; and cpio for cpio/pax archives. Broader metadata fidelity (xattrs, NFSv4 ACLs) and years of OSS-Fuzz hardening are also included.
  • Custom Prompt Configuration: Create a .promptrc.toml file to fully customize the shell prompt beyond the 13 built-in themes. Uses a Starship-compatible format string syntax with 11 configurable modules: username, directory, git_branch, git_status, time, battery, character, wifi, network, connection_type, and line_break. Supports true color hex, ANSI named colors, and named color palettes (13 bundled including Catppuccin, Tokyo Night, Gruvbox, Dracula, Nord, and others). Powerline arrows and rounded caps are auto-inserted between segments. Modules with unavailable data collapse automatically. Edit with the editprompt command, reload from Settings, or just save the file — changes are picked up on next prompt. A bundled example file documents all options.

SSH (trzsz-ssh / tssh)

  • Session Reattach TUI Redraw: After reattaching to a server-side session, full-screen TUI apps (Helix, Vim, etc.) now receive a forced SIGWINCH to trigger a full repaint, even when the terminal dimensions haven’t changed since the previous connection.
  • Terminal Modes Persisted Across App Kill: Mouse tracking, cursor key mode, and bracketed paste state are now saved and restored when reattaching after app termination. Previously, Helix/Vim mouse clicks, arrow keys, and paste behavior would break after reattach because the server wouldn’t re-send enable sequences for modes it believed were still active.

AI Agent

  • OpenAI GPT-5.4 Models: Updated the OpenAI model list to GPT-5.4 Mini and GPT-5.4 Nano (released March 17, 2026), replacing the older GPT-5 Mini and GPT-5 Nano model IDs. GPT-5.4 Mini is the new recommended default.

Bug Fixes

  • Fixed SCP tab completion to suggest both local file paths and saved hostnames (previously only offered hostname suggestions), and fixed non-standard port connections inserting invalid syntax like user@host:2222: instead of the correct -P 2222 user@host: format.

Version 1.0.2-52

March 18, 2026

SSH

  • Paste Image Upload: Pasting non-text clipboard content (images, screenshots, etc) into an SSH session via Cmd+V or the touch paste menu uploads the file to the remote server and inserts the remote path at the cursor using bracketed paste. A confirmation sheet with thumbnail preview appears before uploading. Useful for AI CLI tools (Claude Code, Codex, Gemini CLI) that can read images from a filesystem path.

iOS Local Shell

  • xz Compression: The xz, unxz, and xzcat commands are now available in the local shell. Compress and decompress files using the XZ/LZMA2 format directly on device. Based on xz 5.8.2.
  • Type-Ahead Buffer: Keystrokes typed while a non-interactive command is running (git pull, curl, ls, etc.) are now buffered and replayed through the line editor when the prompt returns, matching real terminal behavior. Full-screen programs (vim, hx) still receive input directly.
  • Shell Startup Dotfile: A ~/.rootshellrc file is sourced when a new shell tab opens. Supports export/setenv, alias, and arbitrary commands. Edit with editrc, re-source with source. A built-in health tracker detects when the rc file causes hangs or crashes and skips it on subsequent launches until you fix it.

Terminal

  • Trackpad Long-Press Fix: Long-pressing (click-and-hold) on a Magic Keyboard trackpad no longer triggers the context menu. This was interfering with click-and-drag text selection. Right-click context menu still works as expected.

Keyboard

  • Tab as Mod-Tap Source Key: Tab can now be used as a mod-tap source key. Tap sends Tab, hold activates the assigned modifier or action. Configure in Settings > Terminal > Keyboard > Mod-Tap Keys.

Bug Fixes

  • Fixed a watchdog crash when backgrounding the app on slow or degraded networks. Heavy I/O work (state serialization, encryption, scrollback buffer dumps) is now performed off the main thread during background transitions.
  • Fixed keyboard focus not returning to the terminal after dismissing host key, agent approval, or other alert dialogs.
  • Fixed SCP upload overwriting the destination path instead of placing the file inside it when the destination is an existing directory (e.g., “scp foo.txt host:/tmp” now correctly uploads to /tmp/foo.txt).
  • Fixed Esc key not navigating back out of Profile folders in the connection sidebar (regression in build 51). Esc now walks back through folder levels before closing the sidebar.

Version 1.0.2-51

March 16, 2026

SSH

  • Session Resume via --attachable: Migrated from the reconnect branch to upstream tsshd’s official --attachable flag for session persistence. When the app terminates, the server-side session stays alive and the client reattaches with Attach(). Saved sessions are persisted in the Keychain so resume works across full app restarts. Users on the unofficial reconnect branch will need to migrate to the official upstream version of tsshd for sessions to survive app termination. New connections and roaming prior to app termination will continue to work prior to upgrading. See tsshd.
  • Agent Forwarding for tssh Sessions: SSH agent forwarding now works through the KCP/QUIC transport layer. All approval modes (auto, per-session, per-request) and key filtering work the same as direct SSH sessions. Agent forwarding is active for both new and resumed/attached sessions.

WiFi

  • AP Radio Scanning: SSH into Ubiquiti access points to discover per-radio interfaces (ESSID, frequency, BSSID, band) via iwconfig. Only wireless APs are scanned — switches and gateways are filtered out using the UniFi Network API. Band badges (2.4/5/6 GHz) appear on AP rows, in the bssid shell command, and in the Live Activity lock screen widget. Configure SSH credentials per account in WiFi AP settings. This also resolves AP name matching failures where the base MAC address from the UniFi API did not match the per-radio BSSID reported by iOS.

Connections

  • Sidebar on iPad and macOS: The connection sheet is now a right-edge sidebar overlay that slides in, replacing the fullScreenCover presentation. iPhone still uses a standard sheet.

iOS Local Shell

  • Seamless Session Restore: Restored sessions no longer flash a new prompt on top of existing scrollback. If the shell was idle at a prompt when backgrounded, both the banner and prompt are suppressed for a seamless resume. If a command was running, a new prompt is shown so you can continue.

Bug Fixes

  • Fixed Helix crashing when using the bookmarked locations feature. Helix’s Rust threads call chdir(), where the per-session pointer is NULL. The chdir/fchdir paths now guard all session dereferences with NULL checks.
  • Fixed CTRL-C during iOS local shell SSH password prompt breaking all subsequent terminal input. The interrupt handler now recognizes all 9 prompt modes (password, host key, save password, etc.), clears their buffers, resets to the local shell, and redisplays the prompt.
  • Fixed local shell CWD not restoring across iOS container UUID changes. Paths with /private/var vs /var prefixes are now normalized, and the working directory is kept in sync after cd commands.
  • Fixed git SSH operations occasionally crashing on teardown due to a double-close race on the drain task’s pipe file descriptor.
  • Fixed duplicate “About” section appearing in WiFi AP provider settings.

Version 1.0.2-48

March 14, 2026

Backup & Restore

  • Encrypted Backups: Export all app data — SSH keys, passwords, connection profiles, known hosts, custom themes, custom fonts, keyboard shortcuts, HSS configs, cloud accounts, AI settings, and preferences — into a single password-protected .rootshellbackup file. Encryption uses AES-256-GCM with a key derived via PBKDF2-HMAC-SHA256 (600,000 iterations). Restore performs intelligent merging (deduplicates SSH keys by fingerprint, passwords by connection, etc.) rather than overwriting existing data. Found in Settings > Privacy & Data > Backup & Restore.

AI

  • Local Shell Agent: The AI agent can now run commands in the iOS local shell. It has access to file tools (read_file, write_file, edit_file) that are sandboxed to the app’s Documents directory and respect the approval flow. The agent receives an iOS-specific system prompt documenting available and unavailable commands, and uses the terminal’s current working directory as context.

WiFi

  • Manual AP Names: Associate BSSIDs with vendor names, domains (for favicon), and friendly AP names without needing a Ubiquiti or other provider integration. Entering a BSSID auto-detects the vendor from the OUI database (~20K vendors, prefix-ranked search). A “Use Current BSSID” button grabs the connected AP. Manual entries appear in the bssid command, Live Activity, and WiFi info displays. Included in backup/restore.

iOS Local Shell Prompt

  • Git Branch Segment: Starship-style prompts now show the current git branch name (or short hash on detached HEAD) and staged file count between the directory and time segments. Each of the 13 prompt themes has a matching green-toned color for the segment. Toggle in Settings > Terminal > Prompt & Username > Show Git Status.

Git

  • Pipe and Redirect Support: Git commands now run through the full pipeline, enabling piping (git log | grep foo) and redirection (git status > file.txt). Auth flags and editor commits still use the interactive path.
  • Color Output: New --color=auto|always|never flag. Auto-injects --color=always when output goes to the terminal and strips ANSI codes when piped or redirected.
  • Auto-Pager: Paged subcommands (diff, log, blame, reflog) pipe through bat via real pipelines instead of a temp file.

Helix

  • Directory Argument: Running hx . or hx ~/project now opens the file picker for that directory instead of silently opening an empty buffer.

Settings

  • Double-Space for Period: Optional shortcut that converts two rapid space taps on the on-screen keyboard into “. ” (period + space), matching iOS system behavior. Off by default. Found in Settings > Terminal > Keyboard.

Bug Fixes

  • Fixed local shell losing its working directory after app relaunch when iOS assigns a new container UUID. Saved paths are now rewritten relative to the current container.
  • Fixed git fetch progress bar getting stuck at ~99% and never reaching 100%. Each phase (receiving, resolving deltas, indexing) now properly completes.
  • Fixed tab morph animation regression in last build.
  • Fixed duplicate section titles appearing in Settings.
  • Fixed missing vertical padding in the Settings sidebar on iPad and Mac.
  • Fixed piped commands losing session context (tty, window size), which broke keyboard input for pagers in pipelines.
  • Fixed “/” search in the bat pager not accepting keyboard input.
  • Fixed day/night theme not applying the correct theme on cold launch.

Version 1.0.2-47

March 12, 2026

tmux

  • Session Discovery: After connecting via SSH, Mosh, or tssh, the app checks for active tmux sessions on the remote host. A floating overlay lists them with window count and last-activity timestamp. The selected session shows a live terminal preview of the active pane with ANSI colors. Tap or press a digit key to attach, arrow keys to navigate, Escape to dismiss. Skipped when tmux auto-connect is enabled. Toggle in Settings > Connections > tmux.

Settings

  • Redesigned Navigation: iPhone settings changed from a single long flat list to a two-level category layout. iPad and macOS settings changed from a centered modal card with a two-column split view to a narrow sidebar.
  • Search: A floating search bar at the bottom of settings lets you find any setting by name or keyword. Tap the pill or start typing to expand it into a filtered results panel that navigates directly to the matching setting.
  • Toggle with Cmd-Comma: Pressing Cmd+comma while settings is already open now closes it instead of doing nothing.

Themes

  • Chromatic Background Support: Themes with colorful dark backgrounds (dark teal, dark purple, etc.) now get tab backgrounds that retain their color character instead of looking washed out, and accent colors that harmonize with the background instead of clashing.
  • Adaptive Tab Contrast: Medium-dark themed backgrounds now have stronger tab differentiation so selected and unselected tabs are easier to distinguish.
  • Sheet and row backgrounds in dark themes preserve the theme’s color character instead of shifting toward neutral gray.

AI

  • Toolbar Button: Sparkles icon in the virtual keyboard toolbar toggles the AI agent panel.
  • Added Gemini 3.1 Flash Lite preview model.

Git

  • 7 New Commands: cherry-pick, rebase, reflog, worktree, clean, apply, and switch are now available natively. Cherry-pick and rebase support --continue, --abort, and --skip for conflict resolution. Worktree supports list, add, remove, lock, and unlock. Clean requires -f or --force (with -n for dry run).
  • Enhanced Existing Commands: log gained --all, --graph, --grep, --since, --stat, -p, and path filtering. diff gained commit ranges, --name-only, --name-status, and --diff-filter. merge gained --no-ff, --ff-only, --squash, and -X ours/theirs. stash gained show, -u, -k, and branch. branch gained --show-current, --set-upstream-to, and --merged. blame gained -L line range, -w, and --date format. checkout gained -B, --track, --ours, and --theirs. revert gained --continue, --abort, and -m mainline.
  • Auth Override Flags: New --ssh-key, --password, and --profile global flags let you override automatic SSH credential resolution for remote operations. --ssh-key forces a specific saved key by name, --password prompts interactively, and --profile uses a saved connection profile’s auth method and optional jump host.

Bug Fixes

  • Fixed Helix file picker (Space+f) showing files from the initial working directory instead of the current directory after using cd.
  • Fixed git checkout -b and switch -c corrupting the working tree if branch creation fails. Operations now pre-validate and rollback safely.
  • Fixed git rebase --skip silently continuing with a stale index. The index is now properly reset to HEAD before updating the working tree.
  • Fixed SSH key iCloud sync failing with Keychain error −50 when biometric auth was set. The Keychain API does not support combining iCloud sync with per-operation access control.
  • Fixed renaming a custom theme losing the active theme selection, favorites, day/night assignments, and per-tab/window overrides. All name-based references now track the new name.

Version 1.0.2-46

March 11, 2026

Git

  • Pull Fast-Forward: Fixed git pull fast-forward leaving the working tree dirty after a successful pull. Also added rollback recovery so the working tree is restored if the ref update fails after checkout.
  • Help & Tab Completion: The git command is now listed in the local shell help output and available in tab completion.
  • Progress Bars: Git clone, fetch, and push progress bars now size dynamically to fit the terminal width, preventing line wrapping on iPhone screens.
  • SSH Auth Resolution: Git SSH transport now supports auth-none and saved-password connections in addition to key-based auth. The credential resolver checks saved connection profiles, then SSH history for matching hosts, before falling back to default keys.
  • Known Hosts Validation: Git SSH connections now validate host keys against your known hosts store instead of blindly accepting all keys. Unknown or changed keys are rejected.
  • Repo-Optional Commands: git general and git config now work outside a git repository, showing global config and system info instead of erroring. Real errors (corrupt .git, permission denied) are still surfaced.

Live Activity

  • WiFi Info: The lock screen Live Activity can now display your current WiFi SSID and access point name (if a WiFi AP provider is configured). Enable in Settings > Live Activity > WiFi Info.
  • Network / ISP Info: Public IP address, ISP name, and country are shown on the lock screen via STUN + geo lookup. Enable in Settings > Live Activity > Network Info.
  • Favicons: WiFi vendor and ISP favicons are displayed inline on the lock screen widget next to their respective rows.
  • WiFi and network data update in the background when iOS grants execution time, but the app is not always running — information may be stale until you return to the app.

iOS Local Shell

  • ripgrep (rg): Fast regex-based file search is now available as a local shell command. Pairs naturally with the new git support — clone a repo and immediately search it with rg. Supports all standard rg flags including file type filters, context lines, and glob patterns.

Bug Fixes

  • Fixed third-party keyboard input (notably WeChat keyboard in English mode) producing garbled or missing terminal output. These keyboards send autocompleted words as multi-character replacements rather than individual keystrokes; the terminal now diffs the incoming text against the document buffer and emits the correct backspace + insert sequence.
  • Fixed the I-beam cursor leaking into the Settings view on iPad when presented as a modal over the terminal.
  • Fixed toolbar key presses (virtual keyboard) always going to the terminal even when the Compose overlay was open. Plain character keys and tab now route to the compose text view while modified keys (Ctrl/Alt/Cmd) and escape still reach the terminal.

Version 1.0.2-45

March 10, 2026

iOS Local Shell Git

  • Native Git CLI: A Swift-native git implementation powered by libgit2, with truecolor output styling and Nerd Font icons. Supported subcommands: init, clone, status, add, commit, diff, log, blame, branch, reset, pull, push, fetch, rm, mv, show, and revert.
  • SSH Transport: Clone, push, and pull over SSH using the built-in SSH client. SCP-style URLs (git@host:path) are supported.
  • Helix Editor Integration: Running git commit without -m opens the Helix editor for composing commit messages interactively.
  • Syntax-Highlighted Pager: git diff, log, and blame output is piped through bat for syntax highlighting and paged scrolling.
  • Note: Git support is new and has not yet been thoroughly tested. Take caution when using it with production data.

UI

  • Double-Tap to Paste: The double-tap gesture on a terminal tab has been replaced with a context menu that includes Paste, making it easier for touch users to paste without a hardware keyboard.
  • Settings Navigation: Reworked the settings split view navigation for smoother transitions and more reliable detail-column push behavior.
  • Theme Tinting: Improved contrast tuning for themed sheet tints so text and controls remain legible across light and dark themes.
  • Adapted Live Activity colors for tinted Liquid Glass mode.
  • Increased terminal dimming behind sheets.
  • Selection handles now only appear for touch-initiated selections.

Bug Fixes

  • Fixed pbcopy and other commands crashing when interrupted. The shell engine now uses cooperative cancellation instead of pthread_cancel, which could corrupt internal state mid-operation.
  • Fixed theme search results appearing empty until scroll or jiggle.
  • Fixed virtual keyboard toolbar Ctrl-C not interrupting local shell.
  • Fixed iOS text selection handle alignment.
  • Fixed selection handles not restoring after returning from background.
  • Fixed intermittent SSH password auth failures caused by 10-second login timeout.
  • Fixed traceroute failing with dlsym symbol not found error.
  • Fixed enterprise AP vendor lookup with improved BSSID handling.
  • Fixed OpenAI stream errors with optional error messages.
  • Suppressed duplicate welcome banner on local shell session restore.

Reliability

  • Protected Data Guard: Background launches (VPN reconnect, Live Activities, CloudKit push) can start the app before the device is unlocked, causing UserDefaults to return empty values. All UserDefaults-dependent initialization is now deferred until protected data is available, and didSet observers that write back to UserDefaults are guarded against running while the device is locked.

AI

  • Updated OpenAI model to GPT-5.4.

Version 1.0.2-44

March 8, 2026

Terminal

  • Magnifier Loupe: A magnifier loupe now appears when dragging selection handles, panning a text selection, or dragging in capture mode. The loupe tracks your finger or cursor for precise positioning. Works inside tmux panes and split views.
  • Selection Handles: Touch-based text selection now shows draggable handles at the start and end of the selection. Drag either handle to adjust the selection range. The edit menu appears automatically when you finish dragging. Handles stay in sync with the active surface and hide when overlays or other views appear on top.
  • Mouse Capture Toggle: Press Cmd+Shift+M or tap the mouse button in the keyboard toolbar to force-disable mouse reporting. When active, native text selection and scrolling work even inside programs that capture the mouse like tmux, vim, or htop. Toggle again to restore mouse reporting.

WiFi & Networking

  • WiFi AP Providers: New provider system for identifying the access point you’re connected to. The first integration is Ubiquiti UniFi — add your API key in Settings > WiFi AP Providers to see the AP name, model, and location for your current BSSID. macOS is fully supported.
  • OUI Vendor Lookup: The bssid command now performs IEEE OUI lookups, showing the hardware vendor for any BSSID. Randomized MACs are detected and labeled.
  • Favicons: The bssid and whatismyip commands render favicons inline next to domain names for ISPs and vendors using the Kitty image protocol. Icons are fetched and cached automatically.

iOS Local Shell

  • Help Command: Expanded to include all available commands with localized descriptions.
  • Localization: Added missing translation keys across all 25 supported languages.

Bug Fixes

  • Fixed bssid showing the wrong error message on the first run when location permission has not yet been granted.
  • Fixed whatismyip and the Geo Provider settings view hanging on IPv4-only networks while waiting for IPv6 STUN queries that could never succeed.

Version 1.0.2-43

March 7, 2026

Themes

  • Theme-Aware UI: Your terminal theme’s colors now extend beyond the terminal. Settings views, connection sheets, toolbars, toggles, and sub-sheets are all tinted with your theme’s accent and background colors. This is on by default; turn it off in Settings > Appearance Mode to fall back to standard Light/Dark mode styling.
  • Custom Themes: Create your own themes with a full color picker GUI, duplicate any built-in theme as a starting point, or import Ghostty theme files. Custom themes can be exported and shared, and work everywhere built-in themes do — favorites, day/night switching, and per-tab overrides.

IP Geolocation

  • Geo Provider: IP geolocation lookups now support multiple providers. Choose between IPInfo Lite (new default), Team Cymru DNS, or disabled. Results are cached locally (500 entries, 7-day TTL). Configure in Settings > IP Geolocation.
  • Network Info in Settings: The IP Geolocation settings view now shows your live public IPv4/IPv6 addresses with per-IP network info (ASN, org, country). Automatically refreshes on network changes and provider switching.
  • Richer Geo Data: Connection Info, whatismyip, and mtr now show AS name, domain, and continent when available (via IPInfo). mtr adds two new display modes for AS name and continent.

Settings

  • Sidebar Layout: Settings now uses a two-column sidebar layout on iPad, macOS, and visionOS. Sections are listed in a persistent sidebar with the detail view alongside. Sub-navigation (e.g. SSH Keys > Key Detail) pushes within the detail column.
  • SF Symbol Icons: All Settings rows now display icons for easier scanning.
  • Font Size: Lowered the minimum font size from 8 to 4.

Terminal

  • Scroll Keybinds: Terminal scrolling moved from Page Up/Down to Cmd+Up/Down, matching standard macOS conventions.

Bug Fixes

  • Fixed CapsLock-as-Shift (mod-tap hold) being ignored by the case fixup logic, and fixed Shift capitalization breaking when CapsLock mod-tap compensation was active.
  • Fixed function keys (F1-F12) sending wrong keycodes on macOS.
  • Fixed mtr column misalignment on unknown hops when country flags are displayed.
  • Fixed bssid command failing on devices without a VPN configured. Note: Apple requires Precise Location permission to access BSSID unless rootshell is your active VPN provider.

Version 1.0.2-42

March 6, 2026

SSH and Networking

  • Connection Info: Right-click or long-press a terminal tab and choose “Connection Info” to see a live sheet with connection duration, negotiated SSH cryptographic algorithms (key exchange, host key, cipher, MAC), post-quantum security status, ASN, country, and CIDR. Mosh and tssh sessions show the crypto negotiated during the bootstrap SSH handshake plus the transport mode (QUIC vs KCP for tssh).

iOS Local Shell

  • whatismyip: Discover your public IPv4 and IPv6 addresses via STUN. Shows ASN, CIDR, and country for each address and copies bare IPs to the clipboard. Use whatismyip4 or whatismyip6 for a single address family, or -g to skip the ASN/geo lookup.
  • bssid: New command to display the SSID and BSSID of the connected WiFi network.

VPN

  • Control Center Widget: New VPN toggle for Control Center, the Lock Screen, and the Action Button. Supports profile selection.
  • Background Connect/Disconnect: The VPN widget and Shortcuts intent no longer need to launch the main app to start or stop a connection.
  • Note: A device reboot may be required after this update for widgets to appear and function correctly.

Terminal

  • Function Keys: F1-F19, Insert, PrintScreen, ScrollLock, and Pause are now routed through Ghostty’s key encoding pipeline instead of being silently dropped. All encoding modes (legacy VT220, CSI u, kitty protocol) are handled correctly.
  • Cursor Settings: New options for cursor color, cursor text color, opacity, thickness, and height.
  • Fixed lock screen live activity title centering.

Version 1.0.2-41

March 4, 2026

iOS Local Shell

  • mtr / traceroute: Custom Swift implementation built for rootshell. mtr shows an interactive TUI with per-hop loss, RTT statistics, jitter, and AS number lookups. Three display modes (statistics, stripchart, strip+numbers) and report formats (text, CSV, JSON, XML). traceroute/traceroute6 are aliased to one-shot mtr reports. The interactive display uses truecolor gradients derived from your terminal theme. Loss and latency values smoothly interpolate between green, yellow, and red using your theme’s palette colors. Press ‘t’ to toggle between truecolor and classic 16-color mode. Works on IPv6-only carrier networks with NAT64 translation.
  • imgcat Wildcards: The imgcat command now accepts glob patterns (e.g. imgcat *.png) to display multiple images at once.
  • Fixed imgcat hanging on large images.
  • Fixed imgcat blocking the UI while encoding large images.
  • SFTP Wildcards: Interactive SFTP commands (ls, get, put, rm) now accept glob patterns for batch operations on multiple files.
  • Fixed SFTP glob matching for mid-path wildcards, rm on directories, and destination path validation.

SSH and Networking

  • Pipelined SFTP/SCP: File transfers over high-latency links are up to ~15x faster. Multiple SFTP requests are now sent in a pipeline without waiting for each individual acknowledgment, dramatically reducing round-trip overhead.
  • Tmux Settings: New options to customize the tmux session name and specify a custom tmux command. The settings view now shows the resolved command for easy copying and includes a clear button to reset to defaults.

CJK Input

  • IME Preedit Display: Composing CJK characters now shows a live preedit overlay near the cursor, so you can see what you’re typing before committing. Input is NFC-normalized for correct rendering of precomposed Hangul and other Unicode sequences.

Bug Fixes

  • Fixed the “Change Title…” dialog pre-filling with “ghostty” instead of the tab’s current title.
  • Rewrote session save/restore. Scrollback and the active viewport are now captured in two separate phases, fixing blank line injection from soft-wrap boundary splits and ensuring the active area replays correctly regardless of terminal size on restore. Also fixed CTRL-L (clear screen) not triggering a save. Detection now uses a content hash instead of row count so any layout change is captured.
  • Minor Live Activity polish: fixed timer overlap on Always-On Display, adjusted background tint and opacity to blend with the lock screen while keeping a slight visual differentiation from system notifications.

Version 1.0.2-40

March 3, 2026

Terminal

  • Photo Background: New terminal background effect that displays a photo from your library behind the terminal. Choose from named opacity presets (Subtle through Vivid), apply one of 9 image filters (Noir, Chrome, Sepia, and more), and optionally enable a Ken Burns cinematic pan/zoom animation with adjustable speed. Photos persist across launches. Configure in Settings > Background Effect.
  • Sound Presets: Configurable sounds for the terminal bell and notifications. Bell sounds include 6 presets (Classic Bell, Soft Chime, Glass Tap, Typewriter Ding, Digital Beep, Muted Thud) plus haptic-only and silent options, with a volume slider and live preview. Notification sounds offer 5 presets plus the system default. Configure in Settings.

iOS Local Shell

  • imgcat Command: New command to display images inline in the terminal using the Kitty graphics protocol. Supports PNG, JPEG, HEIC, and other image formats. Use -w and -r flags to control display sizing.
  • Ping Accuracy: The ping command now uses kernel-level receive timestamps (SO_TIMESTAMP) instead of userspace timing, and batch-drains queued ICMP replies to prevent one-cycle RTT inflation. Round-trip times are more accurate, especially under load.

SSH and Networking

  • tssh connection failures now show the actual server error (exec format error, Go panics, version mismatches) instead of the opaque “No valid JSON found in tsshd output” message.

VPN

  • Fixed the VPN widget connect button sometimes failing to actually connect or failing to reflect the current VPN state after a cold launch.

Visual Polish

  • Added effects across the app for smoother state transitions: bounce and replace animations on copy buttons, breathing and pulsing on reconnection overlays, rotation on VPN connecting indicators, and wiggle effects on key availability badges.

Version 1.0.2-39

March 2, 2026

Keyboard and Input

  • Option Key Fix: Fixed the Option key tap triggering a word-delete in the terminal, a regression in build 38. Pressing and releasing Option alone no longer emits any character. Standalone modifier key events (Alt, Shift, Control) are no longer forwarded to the terminal engine; only Command is forwarded for Cmd+hover link detection.
  • Force ASCII Keyboard: New toggle in Settings > Locale switches the software keyboard to ASCII-only mode, preventing CJK input methods from substituting pipe | and others with IME characters. Default is off.

Context Menus

  • Copy Link: Right-click and edit menu context menus now include a “Copy Link” action alongside “Open Link” when the cursor is over a URL.
  • Fixed right-click on a URL not showing the “Open Link” action. Link detection was being silently deduplicated when the cursor was already over the URL from normal hover tracking.

Terminal

  • Fixed the shell prompt appearing glued to the previous command after restoring a tssh session that was backgrounded while a TUI app was on the alternate screen. The primary screen dump now includes the cursor position so the trailing blank line is preserved on restore.

Localization

  • Norwegian Bokmål: Added Norwegian Bokmål (nb) as the 25th supported language.

VPN

  • Fixed VPN disconnect not sending the exit signal to the server. The tsshd client is now closed before the network stack tears down, ensuring the server receives clean shutdown notification instead of holding stale sessions until timeout.
  • Moved the “Disconnect VPN” button to immediately below the status section in VPN settings for easier access.
  • VPN event history now shows most recent events first.

Version 1.0.2-38

March 1, 2026

Terminal

  • Cursor Effect: New “Neon” cursor effect shader adds a glowing outline around the cursor. Enable it in Settings > Cursor.
  • Scrollback Preservation: Scrollback history is now preserved when a TUI app (vim, helix, tmux) is running on the alternate screen and iOS evicts the app in the background. Previously reconnecting would corrupt the primary scrollback because TUI output arrived before the alternate screen switch.
  • Upstream Rebase: Merged upstream Ghostty commits. Includes the new URL regex rewrite, unsafe byte stripping in paste, new shader uniforms, and key tables restructuring.

SSH and Networking

  • tmux via Exec Request: tmux auto-start on tssh sessions now uses a proper SSH exec request instead of typing the command into the login shell. This eliminates the brief login shell flash.

Keyboard and Input

  • Action Buttons: The keyboard toolbar drawer now includes four action buttons: Full Screen, Tab Bar Toggle, New Connection, and App Settings. Existing users get the buttons automatically via layout migration.

Live Activity

  • Polished the Live Activity lock screen layout: centered title, improved timer alignment, and fixed the activity reposting when the user dismisses it.
  • Fixed duplicate Live Activities appearing on the lock screen after an app relaunch. Orphaned activities from previous launches (app kill, crash, system eviction) are now cleaned up on startup.

iOS Local Shell

  • Fixed Ctrl-C not interrupting non-interactive iOS shell commands (tail -f).
  • Fixed SSH password prompts appearing on the same line as the previous command output instead of on a new line.

Bug Fixes

  • Fixed URL detection regex greedily swallowing URLs that follow file paths. For example, “root/shell https://rootshell.com” previously treated the entire string as a single file path instead of detecting the URL separately.
  • Fixed Cmd+hover link highlighting requiring mouse movement on iPad and macOS. Links now highlight immediately when Cmd is pressed while the pointer is already over a URL.
  • Fixed Cmd+hover link detection not working inside mouse-tracking apps like tmux. Since the xterm mouse protocol doesn’t encode Cmd, link detection now bypasses the mouse-capture gate when Cmd is held.
  • Fixed kitty icat pixel size detection on macOS local shell. The terminal window size ioctl now preserves pixel dimensions so kitty graphics protocol images render at the correct size.
  • Fixed orphan scrollback history files never being cleaned up when their associated terminal session was deleted.

Version 1.0.2-37

February 27, 2026

Terminal

  • Clickable Hyperlinks: URLs in terminal output are now interactive. Cmd+click opens links in Safari (iPad with trackpad / macOS), right-click or two-finger tap shows “Open Link” in the context menu, and the iOS edit menu adds an “Open Link” option when over a link.
  • Text Selection Appearance: New setting in Settings > Window to choose how selected text looks: the default rootshell style, your theme’s native selection colors, inverted colors, or fully custom foreground/background colors.

Security

  • Scrollback Encryption: Persisted scrollback history is now encrypted at rest with AES-256-GCM using a device-only Keychain key. Existing plaintext scrollback files are migrated transparently on restore.

SSH and Networking

  • Locale Override: New setting in Settings > Terminal to control the locale sent to remote servers. Choose Automatic (system locale), Don’t Send (suppress locale entirely), or Custom. Fixes repeated setlocale warnings for users whose OS region produces unavailable locale combinations like en_IL.UTF-8.
  • Fixed a crash in local SSH port forwards when many connections arrive simultaneously (e.g. a browser opening multiple sockets).
  • Fixed KCP rekey failures after backgrounding the app by suppressing the rekey timer during iOS process suspension.
  • Fixed the cursor permanently flipping to underline after resuming a tssh session running Helix, or other focus-reporting apps.

VPN

  • Home Screen Widget: New small and medium Home Screen widgets to connect and disconnect your VPN without opening the app. Long-press to choose a VPN profile. Shows profile name, host, status with gradient background and status orb, and a connect/disconnect button.
  • Live Activity: Lock Screen and Dynamic Island now show active sessions and real-time VPN stats (bytes in/out, uptime, connection count). A session filter in Settings lets you choose All Sessions, Diary Sessions, or VPN Only.

Keyboard and Input

  • Restore Custom Keys: Custom keys removed from the toolbar layout now appear in a “Hidden Keys” section in toolbar settings with a restore button, instead of being permanently deleted.

Bug Fixes

  • Fixed blank screen when the last session exits on iOS. The connection sheet is now shown instead of destroying the only window.

Version 1.0.2-36

February 24, 2026

SSH

  • Post-Quantum Host Keys: Added ML-DSA-65 and ML-DSA-87 post-quantum host key signature algorithms built on Apple CryptoKit (macOS 26+, iPadOS 26+, visionOS 26+). Combined with the ML-KEM hybrid key exchange added in build 34, Rootshell now has end-to-end post-quantum protection: ML-KEM secures the key exchange against harvest-now-decrypt-later attacks, while ML-DSA authenticates the server’s identity against forgery by a future quantum computer. Currently works with servers running OQS OpenSSH; Rootshell will be ready out of the box when upstream OpenSSH adds ML-DSA support.

Keyboard and Input

  • Paste Button: The toolbar’s extra keys drawer now includes a clipboard paste button, so you can paste without a keyboard shortcut or gesture based context menu. Existing users get the button automatically via layout migration.
  • Toolbar Shift Modifier: When Shift is active on the virtual keyboard toolbar, characters typed on the regular iOS keyboard are now shifted (a→A, 1→!, ;→:, etc.). Previously only the toolbar’s own keys respected the Shift state.

iOS Local Shell

  • Windows ping Hint: Typing “ping -n <count>” (Windows syntax) now suggests the correct flag “-c” instead of “too many arguments” error.

Themes

  • System Appearance Tracking: Day/night automatic theme switching now follows the system light/dark mode instead of using sunrise/sunset calculations and device location. This is more reliable and lets you control the switch from Control Center, Settings, or Shortcuts automations.

Fonts

  • Smaller App Size: Replaced Nerd Font Mono patched fonts with unpatched originals, reducing bundled font size from 41 MB to 1.6 MB. Nerd Font symbols are already provided automatically by Ghostty’s built-in fallback font. Unused weight variants were also removed. Existing users are automatically migrated to the new font family names.
  • Configurable Font Features: Font features (stylistic sets, slashed zero, etc.) are now user-configurable in Settings > Font Features, replacing the previously hardcoded ss01–ss08 and zero features. Enable or disable individual OpenType features per font.
  • Font Preview: The font list preview text now reflects your enabled font features so you can see the effect.

Localization

  • Hungarian: Added Hungarian (hu) as the 24th supported language.
  • Extended translation coverage across all 24 languages with newly localized strings for font features, toolbar key names, iCloud sync status, and other UI elements.

Bug Fixes

  • Fixed scrollback restore showing corrupted colors by resolving palette-indexed colors to RGB in the scrollback dump.
  • Fixed toolbar modifier keys (Ctrl, Alt, etc.) not applying to custom drawer keys.
  • Fixed cursor joystick icon in the toolbar keys editor not matching the actual toolbar button icon.

Version 1.0.2-35

February 23, 2026

Localization

  • 23 Languages: The app is now localized into Arabic, Brazilian Portuguese, Catalan, Czech, Danish, Dutch, Portuguese, Finnish, French, German, Hebrew, Italian, Japanese, Korean, Polish, Romanian, Simplified Chinese, Slovenian, Spanish, Swedish, Traditional Chinese, Ukrainian, and Vietnamese.

Keyboard and Input

  • Drawer Toggle Hiding: The drawer toggle button in the keyboard toolbar can now actually be hidden via Settings > Toolbar Keys.

macOS/iPad Menu

  • Menu Reorganization: View-related items (font size, tab bar, background effect, theme picker, transparency) moved from the Terminal menu to the View menu per macOS Human Interface Guidelines. The Terminal menu now contains splits, Focus Split, scroll, and compose actions.

Bug Fixes

  • Local Shell CWD Persistence (iOS): The local shell now restores your working directory when a session reconnects or the app relaunches instead of always resetting to the Documents folder.
  • Background Notifications: Terminal notifications (OSC 9/777) now fire when the app is in the background. Previously they were suppressed whenever the terminal was focused, even if you had switched to another app, so long-running commands could not alert you. When the app is in the foreground, notifications only appear for non-focused tabs. On iPhone/iPad, Location Diary must be active for background notifications to fire.

Version 1.0.2-34

February 22, 2026

SSH

  • Post-Quantum Key Exchange: SSH connections now negotiate mlkem768x25519-sha256 (ML-KEM + Curve25519 hybrid) as the highest-priority key exchange algorithm. This protects session traffic against future quantum attacks while maintaining classical security. Requires iOS/iPadOS 26+, macOS 26+, or visionOS 26+ because Apple CryptoKit only exposes ML-KEM on those versions; older OS versions fall back to curve25519-sha256 and diffie-hellman-group14. Requires OpenSSH 9.9+ or equivalent on the server.

Keyboard and Input

  • Ctrl+Key via Toolbar Now (Hopefully) Uses Proper Key Encoding: The virtual keyboard toolbar’s Ctrl+key combinations now route through Ghostty’s full key encoding pipeline instead of manually encoding legacy control characters. This fixes keys like Ctrl+; and Ctrl+Shift+- that have no legacy mapping, and enables proper CSI u / kitty protocol encoding for all modified keys.
  • Custom Key Editor UX: Sequence mode steps are now tappable to edit in-place instead of requiring delete-and-recreate. Quick-add buttons for Return, Tab, Escape, and Space let you build sequences without opening the full Key Combo picker.
  • Custom Toolbar Key ESC Fix: Fixed custom toolbar keys whose sequences end with ESC (0x1B) being misinterpreted as Alt+key combinations in editors like Helix. Steps are now sent individually with a short delay after any ESC byte.
  • Keyboard Dismiss in Settings: Scrolling now interactively dismisses the keyboard in all settings views with text fields. Number pad fields in Roam settings also gain a Done button.

Terminal

  • Bundled Commands — bat and gix: Two new iOS local shell command-line tools are bundled with the app. bat provides syntax-highlighted file viewing with automatic paging (try bat foo.swift). gix is a fast Git implementation written in Rust for repository operations.
  • Vim 9.2 Upgrade: Upgraded the bundled Vim from 9.1 to 9.2.0038 (471 upstream patches). Now built with the “huge” feature set, enabling termguicolors (24-bit color in themes like catppuccin), langmap, vartabs, and profiling. Includes updated syntax highlighting, indent rules, filetype detection, netrw/matchit plugins, and new documentation.
  • curl Upgrade with HTTP/2: Upgraded bundled curl to 8.19.0 with HTTP/2 support via nghttp2 and OpenSSL. HTTP/2 enables multiplexed transfers and header compression for faster downloads.
  • Scrollback Restore Timing: Fixed scrollback restore on remote sessions (SSH, Kubernetes, Console, Mosh, TSSH) sometimes capturing connection spinner animation artifacts. The restore now waits until the session reaches the running state.

Split Panes

  • Split Focus Border Customization: New settings under Window > Split Panes to choose the focus border style (none/subtle/standard/bold) and color (accent/gray/custom).

macOS

  • Split Pane Focus Border: Maybe fixed the blue pane-focus border incorrectly appearing on single-pane layouts due to a race condition between window key status changes and layout computation. Also suppresses the system UITextInput focus ring on macOS. Could never reproduce this myself, so fingers crossed.

Bug Fixes

  • Roam Port Range Defaults: Clearing the port range fields in Settings > Roam now correctly restores the defaults (61000–61999) instead of silently retaining the last entered value.