$ show Eugeny/tabby
Tabby (formerly Terminus) is a cross-platform terminal emulator built with Electron and Angular 15. It serves as a modern replacement for terminal applications like Windows conhost, PowerShell ISE, PuTTY, macOS Terminal, and iTerm. The application provides integrated SSH, Telnet, and serial clients, local shell support (cmd, PowerShell, WSL, bash, etc.), split panes with drag-and-drop, a fully customizable hotkey system, themes, and an encrypted vault for credentials. The architecture is a monorepo of Angular modules (tabby-core, tabby-terminal, tabby-ssh, etc.) that communicate through dependency injection providers. A plugin system allows third-party packages to extend functionality via well-defined abstract classes (HotkeyProvider, ProfileProvider, TerminalDecorator, etc.). The web variant (tabby-web) provides a browser-based SSH/Telnet client but lags behind the desktop version. The codebase is mature with extensive i18n support, CI/CD pipelines, and community contributions, but shows some drift with Angular 15 being several versions behind current and some legacy naming (terminus- prefix).
The LLM identified 3 files worth highlighting for reuse:
Defines the SessionMiddleware base class and middleware stack that processes terminal session I/O (input/output). This is a clean, chain-of-responsibility pattern used across SSH, Serial, Telnet, and local sessions. The abstract class provides pre/post hooks for data and flow control, and can be extended to implement UTF-8 splitting, input processing, login scripts, ZModem, and more. It is well-isolated and could be extracted into a separate NPM package for any Node.js stream middleware scenario.
Implements an encrypted storage container for SSH passwords and private key passphrases. Uses PBKDF2 with SHA-512 (100,000 iterations) for key derivation and AES-256-CBC for encryption. The vault can be unlocked/persisted and stores secrets in the config file. This is a reusable security pattern that can be extracted for any application needing encrypted local secret storage, with proper key stretching and encryption primitives.
A simple, dependency-free LRU cache implementation used to cache realpath calls in Electron's main process. It provides get/set/delete operations with automatic eviction of least recently used items when capacity is reached. Although small, it demonstrates a correct LRU design with O(1) operations and can be reused in any JavaScript/TypeScript project requiring a bounded cache.