Files
rabby/README.md
T
2026-07-06 11:02:46 +00:00

57 lines
3.3 KiB
Markdown

# 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)