Skip to content

v0.8.1

Choose a tag to compare

@github-actions github-actions released this 08 Jun 23:51
· 58 commits to main since this release

Oryxis 0.8.1: terminal input works again

Disclosure: this release note was drafted with assistance from Claude (Anthropic's LLM) and edited by Wilson Glasser, the project author. The engineering decisions and the code are mine; the LLM helped turn the changelog into prose.

Oryxis is a Rust-native SSH client built on iced with a russh engine. 0.8.1 is a patch release, and its headline fix is an embarrassing one: in 0.8.0 the terminal would open a session fine and then accept no keyboard input at all.

Terminal input was completely dead

Reported after 0.8.0: connect to any host, the pane opens, and then nothing you type registers, not a single character, not Enter. It happened on every host, every launch, every platform, and a restart never helped.

The cause was two unrelated things lining up. An SFTP host-picker open-state flag had defaulted to true at startup since way back in v0.4.0, where it was harmless. In 0.8.0 the SFTP browser gained a "modal blocking" pass that added that flag to the global predicate deciding when a focus-owning modal should swallow terminal keystrokes. So from the very first frame, with no SFTP screen ever shown, the terminal's keyboard handler believed an invisible modal owned the keyboard and dropped every key before it reached the session. Because the flag was set fresh at every boot, restarting did nothing.

The fix is in two parts. The flag now defaults to off. And, more importantly, every SFTP dialog (the host picker, rename, new file/folder, properties, overwrite, delete) is now layered at the app root as a full-window blocking overlay, exactly like every other modal in the app, instead of being drawn inside the SFTP view alone. That restores a simple invariant: a modal-blocking flag being set always corresponds to a visible modal covering the whole window, so it can never silently block a terminal sitting behind it. As a bonus, the empty SFTP remote pane now shows a centered prompt with a "Pick a host" button (the picker no longer auto-opens on boot), and Esc closes the host picker.

Renderer crash self-heal on incompatible GPUs

On some GPU and driver stacks (VMs, old drivers, software Vulkan), iced_wgpu would panic during shader validation after the device was already created, which is past the point where iced normally falls back to its tiny-skia software renderer. 0.8.1 installs a panic hook that catches that case, escalates the rendering backend (auto, then GL, then software), persists the working choice so the next cold launch skips the crash, and relaunches, bounded to two escalations so a genuinely unrenderable setup can't loop forever. Machines with a working GPU keep hardware acceleration untouched, since the fallback only ever triggers on an actual crash.

Terminal scrollback size now applies

The scrollback-lines setting was saved to the vault and read back on boot, but the terminal backend hard-coded a 10,000-line history and never received the configured value, so changing it did nothing. The setting is now threaded through to the backend.

Three untranslated strings

The identity editor's Save / Update button, the AI settings Save button, and the AI settings "API URL" label were hard-coded in English. They now go through i18n::t across all 17 languages.


Full changelog: https://github.com/wilsonglasser/oryxis/blob/main/CHANGELOG.md


Full Changelog: v0.8.0...v0.8.1