You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Features
OmnySSH Desktop — a new native GUI app. A desktop application built on the same engine as the TUI, sharing your hosts.toml and snippets.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 via install.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 Tab to Ctrl+N, freeing Tab for the shell's own completion inside the embedded terminal.
File manager h/Left now navigates to the parent directory (previously moved the cursor up), matching ranger/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 IUTF8 PTY mode) to the remote shell, mirroring a normal ssh client's SendEnv LANG LC_*. Previously the session could fall back to a single-byte locale, so line editing corrupted the prompt on Cyrillic input and editors like vim rendered mojibake (plain cat was 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 by SHA256SUMS.
install.sh can install the GUI, the TUI, or both via --gui / --tui / --both (or OMNYSSH_INSTALL=…); it prompts when run interactively and defaults to the GUI (the flagship app) for piped curl | sh.
Documentation
CONTRIBUTING now documents the omnyssh-gui crate 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.0 release (and 1.0.5); it previously stopped at 1.0.4.
Removed the dead connect keybinding from the config.toml example 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-core library crate (crates/omnyssh-core), which has no dependency on terminal-UI or CLI crates. The TUI application keeps the omnyssh package name and the omny binary (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 CoreEvent values; the TUI wraps them into its own AppEvent stream alongside input events.
threshold_color was replaced by a UI-agnostic ThresholdLevel in 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 nucleo dependency.
No user-facing changes: behavior, appearance, the binary name, and install paths are unchanged.
Removed leftover Alerts/Deep Probe remnants: Deleted the unused [smart_context] config (SmartContextConfig was 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.