# Rabby vs Tabby Feature Comparison Generated after the Rust/Tauri core expansion on `podman:/home/tyou/src/rabby`. ## Summary Rabby now has **modeled coverage** for every major Tabby feature class from the Tabby README/module survey. This means the architecture, typed Rust domain model, validation rules, and unit tests exist for each class. It does **not** mean Rabby has production runtime parity with Tabby yet: many protocol implementations still need real adapters and UI wiring before the feature can honestly be marked `Implemented`. ## Status definitions | Status | Meaning | | --- | --- | | Implemented | Runtime behavior, UI/Tauri path, and tests/smoke checks exist. | | Modeled | Rust model/validation/tests exist; runtime/UI integration remains. | | UI Prototype | Visible shell/UI or path resolver exists, but runtime parity remains. | | Planned | Known feature class with no model yet. | ## Comparison | Tabby feature class | Tabby capability | Rabby status | Rabby coverage now | Remaining work | | --- | --- | --- | --- | --- | | VT terminal | VT220 terminal + extensions | Modeled | `TerminalGrid` + `AnsiParser` parse text, ANSI color, cursor movement, clear screen, resize, bracketed paste flag. | Replace small parser with full VT engine adapter and renderer integration. | | Nested splits | Multiple nested split panes | Modeled | Recursive `PaneNode` with split axis/ratio validation and serialization tests. | UI drag/drop and live pane lifecycle. | | Remembered tabs | Tabs on any side and restored tabs | Modeled | `Workspace`, `Tab`, active tab, serde round-trip. | Persist/restore at app startup and side-tab UI options. | | Quake console | Dockable window/global spawn hotkey | Modeled | `quake_mode` modeled in workspace. | OS global hotkey registration and Tauri window show/hide command. | | Progress notifications | Process progress and completion notifications | Modeled | Tab progress field and tests. | Runtime process detector + desktop notifications. | | Paste ergonomics | Bracketed paste, multiline warning, RMB paste, copy-on-select | Modeled | Terminal parser tracks bracketed paste mode. | UI paste confirmation/RMB/copy-on-select behavior. | | Unicode/ligatures | Unicode, double-width chars, ligatures | Modeled | UTF-8 text accepted in terminal grid tests. | Accurate grapheme width and font ligature rendering. | | Local shell profiles | Local shells, WSL/Git-Bash/etc. | Modeled | Local profile command and PTY boundary exist. | Real cross-platform PTY process adapter and profile detection. | | SSH client | SSH2 connection manager | Modeled | `SshOptions` model validates host/user/port. | Real SSH session adapter. | | SSH forwarding/jump hosts | X11, port forwarding, jump hosts, agent forwarding, login scripts | Modeled | `SshOptions` includes jump hosts, agent forwarding, X11, forwards, login scripts. | Real `russh`/`libssh2` integration and UI. | | Telnet | Integrated Telnet client | Modeled | `TelnetOptions` validates host/port. | Real Telnet adapter. | | Serial terminal | Saved serial, readline, hex/hexdump, newline conversion, auto reconnect | Modeled | `SerialOptions` models baud, newline mode, hex input/output, auto reconnect. | Real serialport adapter and UI. | | SFTP/Zmodem | SFTP and Zmodem transfer | Modeled | `TransferRequest` validates SFTP/Zmodem upload/download and path safety. | Actual transfer protocol adapters and progress UI. | | Encrypted secrets | Encrypted SSH secrets/config | Modeled | `SecretString` redacts debug output; `SecretStore` boundary exists. | OS keychain/encrypted-file implementation. | | Themes/color schemes | Themes and color schemes | Modeled | `Theme` model validates color tokens; built-in Rabby Dark. | Theme import/export and live UI theme switching. | | Shortcuts/command palette | Configurable and multi-chord shortcuts | Modeled | `ShortcutSequence` parses single/multi-chord bindings and rejects duplicates. | Frontend command palette and key event dispatcher. | | Plugins | Plugin manager and ecosystem | Modeled | `PluginManifest` with permission validation. | Plugin install/update sandbox and execution model. | | Portable/web | Portable mode and web SSH/SFTP/Telnet | UI Prototype | Static UI, Tauri shell, and portable config path resolver. | Web daemon/service surface and remote auth model. | ## Current test coverage `./scripts/check.sh` verifies: - `cargo fmt --all -- --check` - `cargo test --workspace` - `cargo check --workspace` - `cargo build --release -p rabby` Latest passing counts: - `rabby-core`: 40 unit tests - `rabby-runtime`: 6 unit tests ## Refactor notes The codebase is now split along cleaner expansion boundaries: - `rabby-core`: feature catalog, workspace, config, terminal model, connection options, transfers, secrets, shortcuts, plugins, themes. - `rabby-runtime`: config storage and PTY runtime boundaries. - `src-tauri`: still thin shell. - `ui`: static UI prototype, to be split into state/render modules before deeper UX work. ## Next honest parity milestone The next milestone should convert selected modeled features into implemented runtime features in this order: 1. Real local PTY adapter and Tauri terminal commands. 2. UI state/render refactor and live terminal pane rendering. 3. Profile manager UI for local/SSH/Telnet/Serial profiles. 4. Real SSH adapter, then SFTP. 5. Serial/Telnet adapters. 6. Secrets/keychain implementation. 7. Plugin installer/sandbox.