5.3 KiB
5.3 KiB
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 -- --checkcargo test --workspacecargo check --workspacecargo build --release -p rabby
Latest passing counts:
rabby-core: 40 unit testsrabby-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:
- Real local PTY adapter and Tauri terminal commands.
- UI state/render refactor and live terminal pane rendering.
- Profile manager UI for local/SSH/Telnet/Serial profiles.
- Real SSH adapter, then SFTP.
- Serial/Telnet adapters.
- Secrets/keychain implementation.
- Plugin installer/sandbox.