57 lines
3.3 KiB
Markdown
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
|
|
|
|

|