Files
rabby/docs/tabby-comparison.md
Tom You 8b4148042f
test / workspace (push) Successful in 12m9s
docs: compare Rabby feature coverage with Tabby
2026-07-08 10:47:54 -05:00

75 lines
5.3 KiB
Markdown

# 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 -- --check`
- `cargo test --workspace`
- `cargo check --workspace`
- `cargo build --release -p rabby`
Latest passing counts:
- `rabby-core`: 40 unit tests
- `rabby-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:
1. Real local PTY adapter and Tauri terminal commands.
2. UI state/render refactor and live terminal pane rendering.
3. Profile manager UI for local/SSH/Telnet/Serial profiles.
4. Real SSH adapter, then SFTP.
5. Serial/Telnet adapters.
6. Secrets/keychain implementation.
7. Plugin installer/sandbox.