Skip to content

V0.2.2

Choose a tag to compare

@pozgo pozgo released this 26 Dec 00:27
· 6 commits to main since this release
6765044

Added

Multi-Tab Terminal Support

  • Multiple terminal tabs - Open up to 10 concurrent terminal sessions, similar to gnome-terminal or iTerm2
  • Independent sessions - Each tab maintains its own:
    • Shell selection (Bash, Zsh, Sh)
    • SSH key configuration
    • WebSocket connection and PTY session
    • Command history and state
  • Tab management features:
    • Click + button to add new terminal tab
    • Click x on tab to close (minimum 1 tab required)
    • Double-click tab title to rename
    • Click tab to switch between terminals
  • Visual status indicators - Green/red dot on each tab shows connection status
  • Session persistence - Tab configurations (title, shell, SSH key) saved to localStorage and restored on page reload
  • Status bar - Shows current tab count, active shell, and SSH key info

Changed

Frontend Architecture

  • Refactored Terminal.jsx into modular components:
    • TerminalContext.jsx - React Context + useReducer for tab state management
    • TabBar.jsx - Tab navigation with Material-UI Tabs component
    • TerminalPane.jsx - Individual xterm.js terminal instance per tab
  • Improved terminal lifecycle management - sessions persist when switching tabs

Build Optimization

  • Code splitting with Rollup manual chunks to eliminate 500KB bundle warning:
    • vendor-react - React, React DOM, React Router (~160KB)
    • vendor-mui - Material-UI components and icons (~298KB)
    • vendor-xterm - xterm.js terminal emulator (~334KB)
    • index - Application code (~104KB)
  • Parallel chunk loading for faster initial page load

Fixed

  • Fixed terminal session being destroyed when switching between tabs
  • Fixed duplicate tabs appearing on fresh start (localStorage race condition)
  • Fixed corrupted terminal display when tab initialized while hidden

New Files

  • frontend/src/context/TerminalContext.jsx - Tab state management with React Context
  • frontend/src/components/TabBar.jsx - Tab navigation component
  • frontend/src/components/TerminalPane.jsx - Individual terminal instance component