Features
- OmnySSH Desktop — a new native GUI app. A desktop application built on the same engine as the TUI, sharing your
hosts.tomlandsnippets.toml. It bundles a live metrics dashboard, a multi-session terminal, an SFTP file manager, command snippets, host management, one-click SSH key setup, a command palette, and light/dark themes. Distributed as native installers (macOS.dmg, Linux.AppImage/.deb, Windows.exe). The TUI is unchanged and still installs the same ways. macOS builds are unsigned — on first launch right-click the app and choose Open (or install viainstall.sh, which sidesteps the Gatekeeper prompt). - File manager hidden-file toggle (
.): show or hide dot-prefixed entries (hidden by default). The..parent entry is always shown. - Nerd Font file icons in the file manager: per-type glyphs replace the
[DIR]/[ ]markers. Requires a Nerd Font — without one the glyphs render as empty boxes.
Changed
- Terminal next-tab moved from
TabtoCtrl+N, freeingTabfor the shell's own completion inside the embedded terminal. - File manager
h/Leftnow navigates to the parent directory (previously moved the cursor up), matchingranger/lf/nnn/vifm. Returning to a parent places the cursor on the directory just left.
Bug Fixes
- The terminal now handles Cyrillic and other multibyte text. OmnySSH forwards a UTF-8 locale (and the
IUTF8PTY mode) to the remote shell, mirroring a normal ssh client'sSendEnv LANG LC_*. Previously the session could fall back to a single-byte locale, so line editing corrupted the prompt on Cyrillic input and editors likevimrendered mojibake (plaincatwas fine). Applies to both the TUI and GUI terminals. Best-effort — servers that don't accept forwarded env vars are unaffected.
Packaging
- Release builds now ship the GUI. CI bundles native desktop installers for macOS (arm64 + x86_64), Linux x86_64 (
.AppImage+.deb), and Windows x86_64, attached to each GitHub Release alongside the TUI archives and covered bySHA256SUMS. install.shcan install the GUI, the TUI, or both via--gui/--tui/--both(orOMNYSSH_INSTALL=…); it prompts when run interactively and defaults to the GUI (the flagship app) for pipedcurl | sh.
Documentation
- CONTRIBUTING now documents the
omnyssh-guicrate and how to build/test the GUI with the Node/Tauri toolchain. - Documented the Auto SSH Key Setup feature (
Shift+K): added a README Features entry, a Quick Start key reference, and a Help popup shortcut. The feature already existed but was undiscoverable. - README "Development Roadmap" now lists the current
1.1.0release (and1.0.5); it previously stopped at1.0.4. - Removed the dead
connectkeybinding from theconfig.tomlexample and the[keybindings]config struct. Enter-to-connect was always hard-coded, so the field never had any effect.
Internal
- Repository converted to a cargo workspace; the engine now lives in its own crate: The SSH engine, host/snippet/app configuration, metrics parsers, domain events, and the self-updater moved into the new
omnyssh-corelibrary crate (crates/omnyssh-core), which has no dependency on terminal-UI or CLI crates. The TUI application keeps theomnysshpackage name and theomnybinary (crates/omnyssh) and consumes the core as a regular dependency. This prepares the architecture for additional frontends (e.g. a GUI) without duplicating the engine.- The event bus is split: background tasks emit
CoreEventvalues; the TUI wraps them into its ownAppEventstream alongside input events. threshold_colorwas replaced by a UI-agnosticThresholdLevelin the core; the colour mapping moved to the TUI theme module.- Keybinding parsing (config strings → key codes) and PTY key-to-bytes translation moved from the engine into the TUI crate; the core PTY API accepts raw bytes only.
- Removed the unused
nucleodependency. - No user-facing changes: behavior, appearance, the binary name, and install paths are unchanged.
- The event bus is split: background tasks emit
- Removed leftover Alerts/Deep Probe remnants: Deleted the unused
[smart_context]config (SmartContextConfigwas parsed but never read) and reworded stale "Deep Probe" comments left after the subsystem was removed in 1.0.5. No user-facing change — existing config files containing a[smart_context]section still load, as the section is ignored.