Implements persistent logging of terminal sessions, capturing system info and terminal output for each connection, including local and remote. Introduces a logs section in the UI to view, save, delete, and replay connection logs in read-only tabs. Adds deduplication for known hosts and improves tab management to support log replays alongside terminal and workspace tabs.
Enables future auditing, troubleshooting, and session review by storing terminal data and session metadata.
Implements a broadcast mode that lets users send terminal input to all sessions within a workspace. Introduces a hotkey to toggle broadcast for the active workspace and a UI indicator/button in the terminal header. Removes the unused side panel hotkey action. Updates tab navigation logic to accommodate new sections.
Enables more efficient multi-session workflows by allowing synchronized input across terminals.
Replaces all direct usage of browser globals and infrastructure service imports in UI components with dedicated application/state backend hooks. Introduces lint rules to prevent direct access to backend bridges and localStorage from components, promoting a cleaner separation of concerns and improved maintainability.
Moves user preferences (e.g., port forwarding form mode) to persistent state hooks, updates port forwarding and SFTP logic to rely on backend hooks, and centralizes logging through a logger utility. Cleans up debug code and removes obsolete scripts from HTML.
Improves testability, prepares for alternative backend implementations, and enforces architectural boundaries.
Enables keyboard navigation between split terminal panes using arrow key shortcuts, implementing directional focus movement with wraparound and modifier-aware handling. Improves workspace usability by visually marking and programmatically updating the focused pane, ensuring reliable focus control even with concurrent DOM updates. Also refines keybinding recording for special shortcuts and updates settings sync token usage for consistency.
Introduces support for horizontal and vertical splitting of terminal sessions, enabling users to split standalone sessions and manage panes within workspaces. Implements a context menu in the terminal for split actions and standard clipboard operations, improving usability and workflow efficiency. Integrates split logic across hotkeys, UI callbacks, and session state management.
Switches to Tailwind CSS v4 with theme configuration via CSS, removing inline CDN config for better maintainability and security.
Adds explicit eslint-disable comments in hooks to clarify dependency intent, aiding future development and preventing unnecessary warnings.
Renames props and variables reserved for future features to underscore-prefixed names, improving clarity and reducing confusion.
Removes unused catch parameters for cleaner error handling.
References to future UI and logic enhancements are annotated for maintainability and roadmap visibility.
Reorder and normalize import statements, group icon imports, and add
missing utility imports (cn). Fix export/newline formatting and minor
type import tweaks. Add ESLint scripts to package.json and update the
lockfile.
Improves host connection flow by allowing users to choose SSH, Mosh, or Telnet protocols when multiple are available.
Implements native Telnet client, removing system dependency and enabling proper Telnet negotiation, window resizing, and terminal type handling.
Ensures session protocol overrides persist during connection, improving accuracy of terminal sessions.
Enhances UI logic for protocol-specific host details and quick connect wizard navigation.
Introduces a 'focus mode' for workspaces, allowing users to view and switch between individual terminals in a sidebar for improved multi-session management. Implements a snippet runner that creates a focus-mode workspace and executes a command across multiple hosts, streamlining bulk operations. Enhances the workspace model and session management to support these features and updates the UI for discoverability and ease of use.
- Introduced `activeTabStore` to manage active tab state with fine-grained subscriptions.
- Replaced direct prop passing of `isActive` with hooks (`useIsVaultActive`, `useIsSftpActive`) in components to determine active state.
- Memoized components (e.g., `SftpView`, `VaultView`, `TerminalLayer`, `TopTabs`) to prevent unnecessary re-renders.
- Updated various components to use `useCallback` and `useMemo` for stable references and performance improvements.
- Removed redundant state and props, simplifying the component structure.
- Disabled React.StrictMode in index.tsx for performance testing.
- Added agents overview documentation outlining the project structure and roles.
- Implemented `useSessionState` for managing terminal sessions and workspaces.
- Developed `useSettingsState` for handling user settings and theme management.
- Created `useVaultState` for managing hosts, SSH keys, snippets, and custom groups.
- Introduced domain logic for host normalization and sanitization.
- Defined models for Host, SSHKey, Snippet, TerminalSession, and Workspace.
- Implemented workspace management functions including creation, insertion, and pruning.
- Established local storage adapter for persistent data management.
- Integrated Gemini AI service for terminal simulation and command generation.
- Developed sync service for backing up and restoring configuration to/from GitHub Gists.