Releases
v0.2.0
Compare
Sorry, something went wrong.
No results found
pozgo
released this
23 Dec 21:47
Added
Interactive Terminal
Full browser-based terminal emulator powered by xterm.js with WebSocket backend
Real-time bidirectional communication between browser and server PTY
Support for multiple shells: Bash , Zsh , and Sh
Proper terminal emulation with dynamic resize support and 256-color mode
Shell selector dropdown to choose preferred shell
New dashboard card for quick access to Interactive Terminal
MesloLGM Nerd Font for optimal terminal rendering
SSH Key Integration in Terminal
SSH key selector dropdown in the Interactive Terminal page
Selected SSH keys are automatically injected into terminal sessions
SSH wrapper script automatically uses the selected key for all ssh commands
No need to manually specify -i flag when connecting to servers
Temporary key files are securely created with proper permissions (0600) and cleaned up on session close
Server Name Resolution
Automatic server alias resolution from Admin Panel servers
Servers added in Admin Panel are available as SSH hostname aliases in the terminal
Auto-generated SSH config includes hostname, port, and username from server settings
Example: Add server "prod" (IP: 10.0.0.5, user: deploy) → type ssh prod in terminal
Swagger API Documentation
Interactive API documentation via Swagger UI at /swagger/
Auto-generated from code annotations using swaggo/swag
Documents all 42+ REST endpoints with request/response examples
Includes authentication (BasicAuth, BearerAuth) support
Dark theme-compatible styling
Quick access via API icon in header navigation
Dynamic Shell Detection
Shell selector now only shows shells that are actually installed on the system
New /api/system/shells endpoint returns list of available shells
Prevents users from selecting unavailable shells (e.g., Zsh when not installed)
Docker Improvements
Added Zsh shell to Docker container
Fixed
SSH Key Storage
Fixed SSH key corruption when saving keys through the web interface
Removed .trim() from private key handling that was stripping essential newlines
SSH keys (RSA, ED25519, ECDSA) now work correctly without "error in libcrypto" or unexpected password prompts
Security
Removed debug logging that could expose sensitive SSH key information
SSH keys are written to temporary files with strict permissions (0600)
Temporary session directories are cleaned up when terminal sessions close
No sensitive data (key contents, paths, or identifiers) logged to console
New Files
frontend/src/components/Terminal.jsx - React terminal component with xterm.js
internal/terminal/terminal.go - Go PTY session management with SSH config generation
internal/server/handlers_terminal.go - WebSocket handler for terminal connections
Dependencies Added
@xterm/xterm - Terminal emulator for the browser
@xterm/addon-fit - Auto-resize terminal to container
github.com/creack/pty - PTY handling in Go
github.com/gorilla/websocket - WebSocket support
github.com/swaggo/swag - Swagger documentation generator
github.com/swaggo/http-swagger - Swagger UI handler
API Endpoints Added
Terminal WebSocket
GET /ws/terminal - WebSocket endpoint for interactive terminal sessions
Query params: shell (bash/zsh/sh), sshKeyId (optional SSH key ID)
System
GET /api/system/shells - List available shells on the system
You can’t perform that action at this time.