# Rabby Rabby is a Rust/Tauri terminal workspace inspired by [Tabby](https://github.com/Eugeny/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 ```bash 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 | ## Screenshot ![Rabby screenshot](docs/rabby-screenshot.svg)