3.3 KiB
Rabby
Rabby is a Rust/Tauri terminal workspace inspired by Tabby, cloned locally at ../tabby-source for feature reference.
Goal
Keep the same broad product shape as Tabby—terminal tabs, nested split panes, local/SSH/Telnet/Serial profiles, themes, shortcuts, quake-mode UX, session restore, and transfer/security surfaces—while replacing the Electron/Angular shell with a smaller Rust core plus Tauri desktop shell.
Current implementation
rabby-core: dependency-light Rust domain model for profiles, tabs, split panes, session restore primitives, and Tabby feature coverage tests.rabby-core/src/feature: structured Tabby-vs-Rabby feature catalog with honest status (Modeled,UiPrototype,Planned).rabby-core/src/workspace: refactored workspace/profile/pane domain state.src-tauri: Tauri v2 desktop backend exposing the Rust feature matrix to the UI.ui: static responsive UI mock/prototype matching Tabby-style terminal UX without a JavaScript build chain.docs/rabby-screenshot.svg: screenshot artifact of the UI/UX direction.
Verification
cargo fmt --all -- --check
cargo test -p rabby-core
cargo check -p rabby
cargo build --release -p rabby
The core crate is intentionally testable without launching the desktop shell.
Tabby feature comparison
This table is based on Tabby's README and top-level modules (tabby-terminal, tabby-local, tabby-ssh, tabby-telnet, tabby-serial, tabby-plugin-manager, tabby-settings, tabby-web, etc.). The scaffold does not claim every production implementation is finished; it verifies that each class is represented in the Rust catalog and tests.
| Tabby feature class | Rabby coverage now | Status |
|---|---|---|
| VT terminal emulation | Terminal session/pane surface requirement in Rust catalog | Planned |
| Nested split panes | Recursive PaneNode with bounds and leaf-count tests |
Modeled |
| Remembered tabs | Workspace stores tabs and active tab |
Modeled |
| Quake console/global hotkey | quake_mode state plus UI control |
Modeled |
| Progress/process notifications | Tab.progress state with validation |
Modeled |
| Bracketed/multiline paste, RMB paste, copy-on-select | Terminal preference requirement in catalog | Planned |
| Unicode/double-width/ligatures | Renderer requirement in catalog | Planned |
| Local shell profiles | Typed LocalShell profile command |
Modeled |
| SSH connection manager | Typed Ssh profile command boundary |
Modeled |
| SSH forwarding/jump hosts/agent forwarding/login scripts | Advanced SSH backlog entry in catalog | Planned |
| Telnet | Typed Telnet profile |
Modeled |
| Serial terminal | Typed Serial profile plus serial option backlog |
Modeled |
| Zmodem/SFTP transfers | Transfer surface reserved for SSH sessions | Planned |
| Encrypted SSH secrets/config | Tauri/Rust secret-store boundary in catalog | Planned |
| Themes/color schemes | Profile.color_scheme plus UI theme prototype |
Modeled |
| Configurable multi-chord shortcuts | Command palette/shortcut UX prototype entry | UI prototype |
| Plugin manager/ecosystem | Extension boundary reserved outside core | Planned |
| Portable/web surfaces | Static UI + Tauri shell; web surface tracked as platform backlog | UI prototype |