Repository navigation
Releases: Amanbig/termlet
Release list
v0.9.0
Termlet v0.9.0 💻
Termlet v0.9.0 brings a major UX and productivity upgrade across the entire workspace, introducing a Multi-Tab Remote Terminal runner, real Line-Based Shell Stream with multi-line command continuation (\ & Shift+Enter), VS Code Style Draggable Resizing for both the terminal drawer and sidepanel, unified sidebar width, and tab management polish.
✨ What's New & Highlights
💻 Multi-Tab Line-Based Terminal Runner
- True Line-Based Stream:
- Replaced the detached bottom input box with a real terminal emulator stream where the prompt (
username@host:path$ [cursor]) follows output directly inline. - History entries render as authentic prompt lines with working directory context.
- Pressing Enter on an empty line naturally emits a fresh prompt on the next line; pressing Ctrl+C prints
^Cinline and resets the prompt.
- Replaced the detached bottom input box with a real terminal emulator stream where the prompt (
- Multi-Line Command Continuation (
\and Shift+Enter):- Write multi-line commands using standard trailing backslash
\(e.g.docker run -d \) or Shift+Enter. - Continuation lines render with secondary shell prompt (
>) matching real Bash/Zsh behavior. - Pressing Backspace on an empty continuation prompt pops the previous line back into the active input for easy editing.
- Smart multi-line paste support: pasting multi-line scripts or command blocks automatically parses them into continuation lines and active input ready to inspect and run.
- Write multi-line commands using standard trailing backslash
- Multiple Concurrent Terminal Tabs:
- Open multiple concurrent terminals (
Terminal 1,Terminal 2, etc.) multiplexed over the same SSH connection. - Each tab maintains independent remote working directory (
CWD), history, and command execution state. - Run long-running tasks in one tab while executing commands concurrently in another.
- Open multiple concurrent terminals (
- Tab Management Polish:
- Double-Click to Rename: Double-click any tab title to rename it to something custom like
docker,web-server, orlogs. - Duplicate Tab: Dedicated button next to
+to duplicate active tab in its current remote working directory. - Horizontal Wheel & Arrow Scrolling: Scroll horizontally with your mouse wheel, click left/right navigation arrows, and enjoy smooth automatic centering on the active tab.
- Local
exit/logoutHandling: Typingexitorlogoutcleanly closes the active tab (or drawer if last tab).
- Double-Click to Rename: Double-click any tab title to rename it to something custom like
📐 Workspace Layout & Resizing
- VS Code Style Drag-to-Resize Drawer:
- Drag the top border of the terminal drawer to adjust height smoothly between 100px and
workspaceHeight - 50px. - Double-click the resize handle to toggle maximize / restore height.
- Height is saved across app restarts.
- Drag the top border of the terminal drawer to adjust height smoothly between 100px and
- Draggable Sidepanel & Unified Width:
- Added a draggable vertical resize handle on the right border of the sidepanel.
- Clamped smoothly between 180px and 60% of the window width, with double-click reset to default (270px).
- Unified width across Explorer, Ports, and Profiles views, eliminating previous width jumping.
- Workspace-Scoped Drawer:
- Terminal drawer sits strictly inside the editor workspace to the right of the sidebar, never covering the ActivityBar or file tree.
- ActivityBar Tab Reordering:
- Moved Remote Profiles & Sessions (
Servericon) to the very top above Explorer (Filesicon), defaulting to connections on app startup for instant server selection.
- Moved Remote Profiles & Sessions (
⚡ Port Forwarding Stability
- Deterministic Port List Ordering:
- Fixed a race condition where Go map iteration randomization caused active/inactive port forwarding cards to continually bounce and swap positions on periodic refresh.
- Ports are now stably sorted by local port and ID on both backend and frontend.
📦 Artifacts Included
- Linux:
termlet-linux-amd64.deb(Debian, Ubuntu, Linux Mint, Pop!_OS)termlet-linux-amd64.rpm(Fedora, RHEL, CentOS, openSUSE)termlet-linux-amd64.tar.gz(Portable Linux archive)
- Windows:
termlet-windows-amd64.zip(Portable 64-bit Windows archive)
- macOS:
termlet-darwin-universal.dmg(Intel & Apple Silicon)
What's Changed
- feat(terminal): multi-tab line-based terminal drawer with drag-resize and sidebar reorder by @Amanbig in #28
- ci(snap): add snapcraft packaging and automated snap store publishing by @Amanbig in #29
Full Changelog: v0.8.0...v0.9.0
v0.8.0
Termlet v0.8.0 💻
Termlet v0.8.0 introduces a high-performance, interactive Remote SSH Command Runner & Terminal Drawer with stateful working directory persistence, live SFTP directory tree synchronization, interactive TTY interception, and instant cancellation.
✨ What's New & Highlights
💻 Interactive Remote SSH Terminal Runner & Drawer
- Persistent Bottom Terminal Drawer:
- Open a sleek, embedded remote terminal runner directly beneath your SSH file workspace using the shortcut `Ctrl+`` or the bottom Status Bar Terminal toggle button.
- Seamlessly runs remote shell commands against the active SSH connection without needing an external terminal emulator or third-party tools.
- Stateful Remote Working Directory Tracking (
cdPersistence):- Preserves working directory across command executions. If you execute
cd /var/log && pwd, subsequent commands execute within/var/log. - Captures the exact physical directory using POSIX-compliant
pwd -Pand cleanly propagates working directory changes.
- Preserves working directory across command executions. If you execute
- Bi-directional SFTP Explorer & Workspace Synchronization:
- Whenever the remote directory changes inside the terminal runner (e.g.
cd /etc/nginx), Termlet's remote SFTP tree and navigation breadcrumb automatically sync and reload to that directory in real time.
- Whenever the remote directory changes inside the terminal runner (e.g.
- Interactive TTY Interception & Smart Editor Hints:
- Inline subshells cannot run full-screen interactive curses/TTY applications without freezing or sending unprintable terminal escape sequences.
- Commands requiring an interactive TTY (e.g.
vim,vi,nvim,nano,emacs,top,htop,btop,less,more,man) are intelligently intercepted before execution. - Termlet provides an actionable hint suggesting the graphical inline code editor, Quick Open (
Ctrl+P), or non-interactive alternatives likecatorps aux.
- Instant In-Flight Command Interruption (
Ctrl+C/ UI Cancel):- Stop running commands immediately by pressing
Ctrl+Cor clicking the Cancel button. - Closes the active SSH execution channel instantly without dropping the main SSH connection or disrupting file transfers.
- Respects standard clipboard text selection when pressing
Ctrl+C.
- Stop running commands immediately by pressing
- Exit Code Reporting & Error Styling:
- Displays exit codes for commands that return non-zero exit statuses.
- Failed command output is styled with a distinct rose accent and border (
border-rose-500/30), while quiet commands that exit non-zero (such asfalseordiff) display explicit[Process exited with code X]tags.
- Output Safety & Memory Limits:
- Strips ANSI color codes for clean typography.
- Protects webview DOM performance by truncating outputs exceeding 100,000 characters with an alert marker.
- Terminal History & Productivity Shortcuts:
- Browse command history with
UpandDownarrow keys. - Quick screen clear via
clearcommand,Ctrl+L, or the trash button. - One-click Copy All Output to clipboard.
- Maximize / restore height toggle buttons.
- Browse command history with
📦 Artifacts Included
- Linux:
termlet-linux-amd64.deb(Debian, Ubuntu, Linux Mint, Pop!_OS)termlet-linux-amd64.rpm(Fedora, RHEL, CentOS, openSUSE)termlet-linux-amd64.tar.gz(Portable Linux archive)
- Windows:
termlet-windows-amd64.zip(Portable 64-bit Windows archive)
- macOS:
termlet-darwin-universal.dmg(Intel & Apple Silicon)
What's Changed
Full Changelog: v0.7.8...v0.8.0
v0.7.8
Termlet v0.7.8 🔑
Termlet v0.7.8 introduces a native SSH Key Pair Generator, an interactive Local SSH Keys Explorer, a dedicated SSH Keys Workspace Tab (termlet://ssh-keys), and 1-click remote server key installation (ssh-copy-id).
✨ What's New & Highlights
🔑 Native SSH Key Pair Generator
- Multi-Algorithm Cryptographic Key Creation:
- Generate industry-standard Ed25519 (Recommended, 256-bit), RSA (2048 / 3072 / 4096-bit), and ECDSA (P-256 / P-384 / P-521) key pairs directly in Termlet without needing terminal CLI tools like
ssh-keygen.
- Generate industry-standard Ed25519 (Recommended, 256-bit), RSA (2048 / 3072 / 4096-bit), and ECDSA (P-256 / P-384 / P-521) key pairs directly in Termlet without needing terminal CLI tools like
- Passphrase Encryption (AES-256):
- Encrypt private keys with an optional passphrase using OpenSSH-standard AES-256 ciphering (
ssh.MarshalPrivateKeyWithPassphrase).
- Encrypt private keys with an optional passphrase using OpenSSH-standard AES-256 ciphering (
- OpenSSH "Drunken Bishop" Randomart Visualizer:
- Generates the classic OpenSSH ASCII art representation for instant visual fingerprint verification.
- Safe Auto-Save to
~/.ssh/:- Writes private key files with strict
0600and public key files with0644file permissions. - Includes duplicate filename detection and explicit overwrite protection.
- Writes private key files with strict
🗂️ Dedicated SSH Keys Workspace Tab (termlet://ssh-keys)
- Full Workspace Tab Experience:
- Open and manage SSH keys in a dedicated workspace tab (
SSHKeysView.tsx) featuring a key icon, tab persistence, and responsive split layout. - Quick launcher directly accessible from the bottom Status Bar (
SSH Keys) and the Settings View.
- Open and manage SSH keys in a dedicated workspace tab (
- Local Keys Explorer (
~/.ssh/):- Automatically scans and displays all local key pairs found in
~/.ssh/. - Shows algorithm badges, key comments, SHA256 fingerprints, file paths, and encryption status.
- 1-click Copy Public Key to clipboard for pasting into GitHub, GitLab, or server configurations.
- Safe key pair deletion with modal confirmation.
- Automatically scans and displays all local key pairs found in
🚀 1-Click Remote Server Deployment (ssh-copy-id in-app)
- Direct Remote Authorization:
- Install any generated or local public key onto any active SSH connection with a single click.
- Automatically ensures remote
~/.sshdirectory exists with0700permissions, appends the public key to~/.ssh/authorized_keys, and enforces strict0600permissions.
🛠️ Connection Profile Integration
- In-Dialog Key Picker & Generator:
- When configuring a private key connection in the Connection Profile Dialog (
ConnectDialog.tsx), a "Pick / Generate Key..." button opens the manager and auto-populates the chosen or generated key path.
- When configuring a private key connection in the Connection Profile Dialog (
📦 Artifacts Included
- Linux:
termlet-linux-amd64.deb(Debian, Ubuntu, Linux Mint, Pop!_OS)termlet-linux-amd64.rpm(Fedora, RHEL, CentOS, openSUSE)termlet-linux-amd64.tar.gz(Portable Linux archive)
- Windows:
termlet-windows-amd64.zip(Portable 64-bit Windows archive)
- macOS:
termlet-darwin-universal.dmg(Intel & Apple Silicon)
What's Changed
- feat(ssh): add SSH key pair generator, local key manager, and 1-click remote deploy by @Amanbig in #25
- feat(ssh): add dedicated SSH keys workspace tab and navigation by @Amanbig in #26
- chore(release): bump version to 0.7.8 and publish release notes by @Amanbig in #27
Full Changelog: v0.7.7...v0.7.8
v0.7.7
Termlet v0.7.7 🛡️
Termlet v0.7.7 introduces enterprise-grade SSH Host Key Verification & MitM Protection, a dedicated SSH Security & Known Hosts Manager Tab (termlet://known-hosts), and modernized build infrastructure powered by TypeScript 7.0 & Bundler resolution.
✨ What's New & Highlights
🛡️ SSH Host Key Verification & MitM Attack Protection
- Dual-Layer Known Hosts Store:
- Automatically queries both the standard OpenSSH
~/.ssh/known_hostsfile and Termlet's dedicated application store (~/.config/termlet/known_hosts/%APPDATA%\termlet\known_hosts). - Automatically records newly trusted hosts with SHA256 cryptographic fingerprints, host keys, and port numbers without mutating standard system files unless configured.
- Automatically queries both the standard OpenSSH
- Trust On First Use (TOFU) Verification:
- When connecting to an unknown host for the first time, an interactive modal presents the host address, key type (e.g.,
ssh-ed25519,ecdsa-sha2-nistp256,rsa-sha2-512), and full SHA256 fingerprint. - Allows you to inspect and confirm the remote server's identity before any authentication tokens or credentials are transmitted over the network.
- When connecting to an unknown host for the first time, an interactive modal presents the host address, key type (e.g.,
- Strict Host Key Mismatch Detection:
- If a server's host key changes unexpectedly, Termlet flags a high-priority security warning to prevent Man-in-the-Middle (MitM) eavesdropping and spoofing attacks.
- Displays side-by-side comparison of the expected fingerprint versus the incoming fingerprint, requiring explicit confirmation before proceeding.
🗂️ Dedicated SSH Security & Known Hosts Manager (termlet://known-hosts)
- Full Workspace Tab Experience:
- Moved out of general settings into a dedicated, first-class workspace tab (
termlet://known-hosts) featuring a shield icon, tab state persistence, and responsive full-width layout. - Quick-access button added directly to the bottom status bar (
Known Hosts) and from the Security section in Settings.
- Moved out of general settings into a dedicated, first-class workspace tab (
- Search & Source Filtering:
- Real-time search across hostnames, key algorithms, and fingerprints.
- Filter chips to quickly narrow entries between All, Termlet Store, and System Store (
~/.ssh/known_hosts).
- Hashed Hostname Privacy Support:
- Cleanly handles OpenSSH HMAC-SHA1 hashed host entries (
|1|...), displaying an informative[Hashed Host]badge with privacy tooltips instead of raw cryptic hashes.
- Cleanly handles OpenSSH HMAC-SHA1 hashed host entries (
- Key Inspection & Revocation:
- 1-click SHA256 fingerprint copying with visual confirmation.
- Instant host revocation and bulk cache clearing directly from the UI.
⚡ Core Engine & Build Modernization
- TypeScript 7.0 Upgrade:
- Upgraded frontend build pipeline to
typescript@7.0.2.
- Upgraded frontend build pipeline to
- Modern Bundler Module Resolution:
- Migrated
tsconfig.jsonfrom legacynoderesolution to modern Vitebundlerresolution (moduleResolution: "bundler",allowImportingTsExtensions,isolatedModules: true). - Streamlined type checking and reduced development build latency.
- Migrated
📦 Artifacts Included
- Linux:
termlet-linux-amd64.deb(Debian, Ubuntu, Linux Mint, Pop!_OS)termlet-linux-amd64.rpm(Fedora, RHEL, CentOS, openSUSE)termlet-linux-amd64.tar.gz(Portable Linux archive)
- Windows:
termlet-windows-amd64.zip(Portable 64-bit Windows archive)
- macOS:
termlet-darwin-universal.dmg(Intel & Apple Silicon)
What's Changed
- chore(deps-dev): bump @vitejs/plugin-react from 5.2.0 to 6.1.2 in /frontend by @dependabot[bot] in #2
- chore(deps-dev): upgrade typescript to 7.0.2 and migrate tsconfig to bundler resolution by @Amanbig in #20
- feat(ssh): add SSH host key verification and visual known hosts manager by @Amanbig in #21
- chore(release): bump version to 0.7.7 and move known hosts to dedicated tab by @Amanbig in #23
- fix(ssh): prevent text wrapping and align filter tabs in known hosts view by @Amanbig in #24
Full Changelog: v0.7.6...v0.7.7
v0.7.6
Termlet v0.7.6 🚀
Termlet v0.7.6 is a major stability and feature update delivering an SFTP Transfer Queue & Live Progress Drawer, SSH Keep-Alive & Auto-Reconnect Engine, Instant 0ms Workspace Search Caching, and Reliable Teardown & Context Menu fixes.
✨ What's New & Highlights
📊 SFTP Transfer Queue & Live Progress Drawer
- Real-Time Transfer Metrics:
- Sliding bottom drawer tracking all active, completed, and cancelled downloads & uploads.
- Live progress bars, transfer speeds (KB/s, MB/s), elapsed time, and ETA calculations.
- Real-time active transfers count badge pinned to the bottom status bar with 1-click toggle.
- In-Flight Cancellation:
- Cancel any ongoing download or upload immediately with context cancellation, instantly freeing network I/O and cleaning up partial local files.
- Native OS Reveal:
- "Show in Folder" action on completed downloads reveals the file directly in your native OS file manager (Windows Explorer, macOS Finder, Linux xdg-open).
- Tab Filtering & History Management:
- Filter transfers across All, Active, and Completed tabs with 1-click history cleanup.
💓 Proactive SSH Keep-Alive & Auto-Reconnect Engine
- OpenSSH Heartbeat Probes:
- Periodic
keepalive@openssh.comglobal requests (default every 20s, configurable) with a 5s probe timeout to prevent idle connection drops behind NAT/firewalls.
- Periodic
- Accurate Drop Detection:
- Distinguishes intentional user disconnects (
Session.Close) from unexpected network drops (Session.MarkDropped).
- Distinguishes intentional user disconnects (
- Contextual Reconnection Banner:
- Top floating banner with live countdown ("Reconnecting in 3s... Attempt 1/5"), exponential backoff, and 1-click "Reconnect Now" action.
- Seamless Session Revival:
- In-memory cached session credentials allow reconnection without re-prompting for credentials.
- Automatically restores active port forward tunnels upon reconnect without altering the session ID, preserving open editor tabs.
- Configurable Settings:
- New Advanced Options in Connection Profile dialog to customize keep-alive interval (seconds) and toggle auto-reconnect.
⚡ Instant 0ms Workspace Search & Quick Open Caching (Ctrl+P / Cmd+P)
- In-Memory File Cache & Deduplication:
- Workspace files are cached in memory per session. Opening Quick Open is now instantaneous (0ms latency) without triggering repeated SSH requests.
- Concurrent search requests are deduplicated so rapid opens share the same promise rather than flooding the remote server.
- 60fps Client-Side Fuzzy Search:
- Keystrokes no longer dispatch heavy remote find commands; filtering runs locally at 60fps with multi-word scoring, exact matching, and recency ranking.
- Manual Refresh Trigger:
- Added a 1-click "Refresh workspace index" button (RefreshCw) for updating the file cache when server files change.
🛡️ Robust Connection Teardown & Non-Blocking SFTP I/O
- Never-Hanging Disconnect:
Disconnect()now terminates cleanly with a safety timeout, ensuring the app never freezes or becomes stuck when dropping an unresponsive or broken connection.
- Fine-Grained SFTP Concurrency:
- Released client mutexes during streaming downloads, uploads, and directory walks, preventing SFTP operations from blocking UI requests.
- Explorer Disconnect Action:
- Added a dedicated "Disconnect" button directly on the Explorer error card when sessions drop, ensuring you are never trapped.
🖱️ File Tree Context Menu Three-Dots Fix
- Three-Dots Dropdown Trigger:
- Fixed an issue where left-clicking the three-dots button (
•••) on file and directory items dismissed the dropdown menu immediately. - Isolated pointer and click event propagation from parent row actions.
- Fixed an issue where left-clicking the three-dots button (
⚡ Core Engine Upgrades
- Vite 8 Upgrade:
- Upgraded frontend build pipeline to Vite 8.3.4, yielding ~4x faster compilation times (~1.2s).
📦 Artifacts Included
- Linux:
termlet-linux-amd64.deb(Debian, Ubuntu, Linux Mint, Pop!_OS)termlet-linux-amd64.rpm(Fedora, RHEL, CentOS, openSUSE)termlet-linux-amd64.tar.gz(Portable Linux archive)
- Windows:
termlet-windows-amd64.zip(Portable 64-bit Windows archive)
- macOS:
termlet-darwin-universal.dmg(Intel & Apple Silicon)
What's Changed
- chore(deps-dev): bump vite from 7.3.7 to 8.3.4 in /frontend by @dependabot[bot] in #3
- feat(sftp): add transfer queue manager and live progress drawer with speed metrics by @Amanbig in #15
- feat(ssh): add SSH keep-alive heartbeats and auto-reconnect with countdown UI by @Amanbig in #16
- fix(search): prevent redundant SSH data requests, stuck loading, and blocking SFTP walks by @Amanbig in #17
- fix(file-tree): prevent context menu from disappearing when clicking three dots trigger by @Amanbig in #18
- chore(release): bump version to v0.7.6 and update release notes by @Amanbig in #19
Full Changelog: v0.7.0...v0.7.6
v0.7.0
Termlet v0.7.0 🚀
Termlet v0.7.0 is a major feature update delivering powerful productivity workflows: Fast Remote File Quick Open (Ctrl+P / Cmd+P), 1-Click OpenSSH ~/.ssh/config Importer, Remote File & Directory Download (with ZIP streaming), Interactive chmod Permissions Modal, Port Forwarding Live Health Badges, and a floating Code Editor Find & Replace toolbar (Ctrl+F / Ctrl+H).
✨ What's New & Highlights
⚡ Fast Remote File Quick Open (Ctrl+P / Cmd+P)
- Near-Instant Remote Indexing:
- Executes remote SSH find commands for near-instant indexing of up to 800 workspace files, automatically pruned of noise directories (
.git,node_modules,dist,vendor,.venv). - Seamless fallback to breadth-first SFTP directory traversal on systems without remote find execution.
- Executes remote SSH find commands for near-instant indexing of up to 800 workspace files, automatically pruned of noise directories (
- Fuzzy Client-Side Matching:
- Multi-term scoring algorithm that instantly ranks results by exact match, prefix match, path length, and recently opened file status.
- Fast keyboard navigation (↑, ↓, Enter to open, Escape to close).
- Rock-Solid Typing Stability:
- Query sequence locking prevents network race conditions and protects search text from clearing or reloading while typing.
- Inline error notifications with a 1-click retry button if remote search encounters permission or connection issues.
🔑 1-Click OpenSSH ~/.ssh/config Importer
- Automated Profile Discovery:
- Scan and parse your local
~/.ssh/configfile with a single click. - Supports
Host,HostName,User,Port,IdentityFile,ProxyJump, andForwardAgentdirectives.
- Scan and parse your local
- Interactive Review & Selection:
- Preview all discovered hosts with badges for ports, keys, and jump proxies.
- Multi-select or selectively import hosts with automatic duplicate detection against existing profiles.
📥 Remote File & Directory Download
- Direct Local File Download:
- Right-click any file in the Remote File Explorer to download it directly via the native operating system Save dialog.
- On-the-Fly Directory Download as ZIP:
- Right-click any remote directory to stream its entire hierarchy directly into a local
.zipfile on the fly without intermediate disk overhead.
- Right-click any remote directory to stream its entire hierarchy directly into a local
🛡️ Interactive Remote Permissions Modal (chmod)
-
Visual Permission Matrix:
- Right-click any remote file or folder to inspect and adjust permissions.
- 3x3 interactive grid (User, Group, Other
$\times$ Read, Write, Execute).
-
Live Octal & Symbolic Sync:
- Bidirectional sync between checkboxes, numeric octal notation (
0755,0644,0600), and symbolic string preview (-rwxr-xr-x). - 1-click presets for standard Unix file and directory permissions.
- Optional recursive mode for applying permissions across entire directory trees.
- Bidirectional sync between checkboxes, numeric octal notation (
🩺 Port Forwarding Live Health Badges
- Real-Time Port Probing:
- Automatically probes active local port forwards using HTTP GET (with redirect suppression) and falls back to TCP dial probes.
- Live Status Badges:
- Visual badges indicating HTTP status codes and latency (
🟢 200 OK (8ms),🟡 404 Not Found (4ms)). 🔵 TCP Ready (1ms)for non-HTTP services (databases, Redis, custom protocol daemons).🔴 Unreachableif remote services stop or fail to respond.- Concurrent backend multi-port health checker with automatic periodic refresh.
- Visual badges indicating HTTP status codes and latency (
🔍 Code Editor Find & Replace (Ctrl+F / Ctrl+H)
- Floating Glassmorphic Toolbar:
- Modern floating toolbar anchored to the top-right of the code editor.
- Ctrl+F / Cmd+F opens Find (pre-populated with any active text selection).
- Ctrl+H / Cmd+H opens Find & Replace with the replace row expanded.
- Comprehensive Search Options:
- Match Case (
Aa), Match Whole Word (\b), and Regular Expression (.*) with live syntax error feedback. - Live match counter displaying current position (
1 of 12orNo results). - Next (Enter) and Previous (Shift+Enter) navigation.
- Single Replace and Replace All actions with real-time editor and dirty state synchronization.
- 1-click "Find" button in the bottom status bar.
- Match Case (
📦 Artifacts Included
- Linux:
termlet-linux-amd64.deb(Debian, Ubuntu, Linux Mint, Pop!_OS)termlet-linux-amd64.rpm(Fedora, RHEL, CentOS, openSUSE)termlet-linux-amd64.tar.gz(Portable Linux archive)
- Windows:
termlet-windows-amd64.zip(Portable 64-bit Windows archive)
- macOS:
termlet-darwin-universal.dmg(Intel & Apple Silicon)
What's Changed
- chore(deps): bump actions/download-artifact from 4 to 8 by @dependabot[bot] in #8
- chore(deps): bump softprops/action-gh-release from 2 to 3 by @dependabot[bot] in #7
- chore(deps): bump actions/checkout from 4 to 7 by @dependabot[bot] in #6
- chore(deps): bump actions/setup-go from 5 to 7 by @dependabot[bot] in #5
- chore(deps): bump actions/setup-node from 4 to 7 by @dependabot[bot] in #4
- feat(profiles): add 1-click import from ~/.ssh/config hosts by @Amanbig in #10
- feat(editor): add fast remote file quick open (Ctrl+P / Cmd+P) spotlight palette by @Amanbig in #9
- feat(sftp): add remote file download, zip folder export, and chmod permissions dialog by @Amanbig in #11
- feat(ports): add live health checks and HTTP/TCP status badges for forwarded ports by @Amanbig in #12
- feat(editor): add floating find and replace toolbar with regex and match count by @Amanbig in #13
- fix(quick-open): fix query clearing while typing, prevent race conditions and bump to v0.7.0 by @Amanbig in #14
New Contributors
- @dependabot[bot] made their first contribution in #8
- @Amanbig made their first contribution in #10
Full Changelog: v0.6.0...v0.7.0
v0.6.0
Termlet v0.6.0 🚀
Termlet v0.6.0 introduces native SSH Local Port Forwarding & Tunneling, allowing you to effortlessly map internal remote server services (like Traefik dashboard, Docker webhooks, internal Postgres/MySQL/Redis, Next.js dev servers, or internal microservices) directly to localhost on your machine. This release also introduces profile-persisted port configurations, native in-app confirmation dialogs, and navigation refinements.
✨ What's New & Highlights
🔌 SSH Local Port Forwarding & Tunneling
- Direct Service Tunneling (
ssh -L):- Securely route remote server ports (e.g.,
127.0.0.1:8080,127.0.0.1:5432) to any chosen local port on your machine over an encrypted SSH connection.
- Securely route remote server ports (e.g.,
- Dedicated Port Forwarding View:
- Accessible directly from the new Ports tab on the left Activity Bar or the bottom Status Bar.
- Profile-Persisted Port Configurations:
- Forwarded port configurations are saved alongside your connection profiles in a stopped state. When you reconnect to a saved profile, your port mappings are immediately ready to toggle on with a single click.
- 1-Click Browser Launch:
- Launch tunneled web services (e.g. Traefik, Vite, React, Swagger) directly in your default browser with a single click.
- One-Click URL Copying:
- Copy
http://localhost:<port>to the clipboard with visual confirmation.
- Copy
- Quick Presets:
- Built-in shortcuts for Traefik Dashboard (
8080), Web / HTTP (8080 -> 80), Node/Vite (3000), PostgreSQL (5432), MySQL (3306), and Redis (6379).
- Built-in shortcuts for Traefik Dashboard (
- Live Status & Concurrency Tracking:
- Real-time indicator badges showing active, stopped, or error states, along with active connection counts.
- Safe port conflict detection and automatic tunnel teardown when disconnecting.
- Status Bar Integration:
- Added a live
🔌 X Ports Forwardedcounter in the status bar for quick glance and 1-click access.
- Added a live
💬 Native In-App Confirmation Modals
- Sleek Custom Dialogs:
- Replaced all native browser
window.confirmpopups with custom, theme-styled in-app modal confirmation dialogs. - Applied across deleting connection profiles, deleting port forward rules, deleting remote files/directories, resetting preferences, and closing tabs with unsaved edits.
- Keyboard accessible (Enter to confirm, Escape to cancel) with distinct visual cues and badges for destructive actions.
- Replaced all native browser
📑 Tab Navigation & UI Polish
- Clean Editor Tab Navigation:
- Removed overlapping horizontal scrollbars on editor tabs in favor of compact left/right chevron navigation buttons and smooth trackpad/mouse-wheel scrolling.
- Unified Activity Bar:
- Refined the Ports button styling to seamlessly match the active/inactive appearance of the File Explorer and other sidebar tools.
📦 Artifacts Included
- Linux:
termlet-linux-amd64.deb(Debian, Ubuntu, Linux Mint, Pop!_OS)termlet-linux-amd64.rpm(Fedora, RHEL, CentOS, openSUSE)termlet-linux-amd64.tar.gz(Portable Linux archive)
- Windows:
termlet-windows-amd64.zip(Portable 64-bit Windows archive)
- macOS:
termlet-darwin-universal.dmg(Intel & Apple Silicon)
Full Changelog: v0.5.3...v0.6.0
v0.5.3
Termlet v0.5.3 🚀
Termlet v0.5.3 delivers an expanded, high-fidelity editor theme ecosystem with 14 syntax themes, instant live theme switching without restarting, an ergonomic tab bar with smooth horizontal scrolling, navigation chevrons, and smart bulk closing, alongside theme-synchronized toast notifications, error boundaries, and our streamlined automatic updater.
✨ What's New & Highlights
📑 Tab Bar Scrollbar, Smooth Mouse Wheel Navigation & Bulk Actions
- Visible, Sleek Horizontal Scrollbar:
- Replaced hidden overflow with a dedicated, low-profile custom scrollbar (
.editor-tabs-scrollbar) that automatically indicates tab bar overflow and allows direct dragging.
- Replaced hidden overflow with a dedicated, low-profile custom scrollbar (
- Mouse Wheel Horizontal Scrolling:
- Users can now scroll their vertical mouse wheel up or down anywhere over the tab bar to smoothly navigate left and right through open tabs.
- Navigation Chevrons (
<and>):- Pinned left and right scroll step buttons appear automatically whenever open tabs overflow the screen, enabling 1-click smooth scrolling.
- Smart Auto-Scroll to Active Tab:
- Selecting or opening any file from the remote explorer or editor immediately auto-scrolls that tab into view.
- Enhanced Tab Actions Menu:
- Added "Close Other Tabs" and "Close Saved Tabs" actions alongside "Close All Tabs" with safety confirmation prompts for unsaved changes.
🎨 Expanded Editor Theme Ecosystem (14 Themes) & Live Switching
- 7 New Curated Themes Added:
- Atom One Dark: Classic dark aesthetic with rich token contrasts.
- Sublime Text: High-contrast, iconic Sublime color scheme.
- Material Dark: Sleek, modern Material palette.
- Solarized Dark & Solarized Light: Precision-calibrated color relationships designed to reduce eye strain.
- Xcode Dark & Xcode Light: Native Apple IDE syntax coloring for dark and light environments.
- Instant Live Theme Switching:
- Swapping themes in Settings immediately updates all open editor tabs on the fly with zero application restart required.
- Visual Preview Badges in Settings:
- Live color preview circles displaying background and accent token colors for each theme directly inside the Settings picker.
- Full persistence across app sessions and workspace reloads.
🔔 Polished Toast Notifications & Clean UI Headers
- Ergonomic Top-Right Dismiss Placement:
- Fixed Sonner's default behavior where the close (
x) button hovered awkwardly outside the card on the top-left edge. - The close button is now neatly embedded in the top-right inside corner of the toast card with comfortable padding (
pr-8) preventing any overlap with long notification text.
- Fixed Sonner's default behavior where the close (
- Theme-Synchronized Styling:
- Integrated hover states (
bg-zinc-200/50in light mode,bg-white/10in dark mode) and subtle border styling. - Semantic status colors (emerald success, rose error, amber warning, sky info) dynamically adapt to Termlet's UI theme mode.
- Integrated hover states (
- Streamlined Release Notes View Header:
- Removed duplicate close (
x) button in the header above the notes since the editor tab bar already provides standard tab dismiss controls.
- Removed duplicate close (
🛡️ Robust Fault-Tolerant Foundation (from v0.5.2)
- Sectional
<ErrorBoundary>:- Isolates errors in side panels, explorer, editor, settings, and release notes without taking down the application.
- Actionable crash recovery options: Reload View, Technical Stack Details, and Full Restart.
- Centralized Error Parsing:
- Decodes Go, SSH, SFTP, and OS network errors into actionable guidance across 13 distinct categories.
- Streamlined In-Settings Automatic Updater:
- Clean update management directly inside Settings without intrusive modals. Real-time download progress and 1-click restart to apply.
📦 Artifacts Included
- Linux:
termlet-linux-amd64.deb(Debian, Ubuntu, Linux Mint, Pop!_OS)termlet-linux-amd64.rpm(Fedora, RHEL, CentOS, openSUSE)termlet-linux-amd64.tar.gz(Portable Linux archive)
- Windows:
termlet-windows-amd64.zip(Portable 64-bit Windows archive)
- macOS:
termlet-darwin-universal.dmg(Intel & Apple Silicon)
Full Changelog: v0.5.2...v0.5.3
v0.5.2
Termlet v0.5.2 🚀
Termlet v0.5.2 brings comprehensive, production-grade error handling across the entire stack, eliminating white-screen crashes, introducing actionable diagnostic hints, and bolstering backend fault tolerance alongside our automatic updater and UI refinements.
✨ What's New & Highlights
🛡️ Robust Error Handling & Crash Protection
- React Sectional
<ErrorBoundary>:- Integrated error boundaries around all major workspace zones (Side panels, Explorer, Editor, Settings, and Release Notes).
- Component crashes or syntax errors in editors no longer cause white-screen failures.
- Includes user-facing recovery controls: Reload View, collapsible Technical Details stack viewer, and Full Restart.
- Centralized Error Parsing & Actionable Hints (
formatErrorMessage):- Automatically translates cryptic Go, SSH, SFTP, and OS errors into structured
{ title, message, hint, raw }objects across 13 categories:- Authentication Failures: Clear advice on username, password, or key passphrases.
- Connection Refused: Guides users to check
sshdstatus, listening ports, and firewall rules. - DNS / Host Resolution: Pinpoints DNS lookups and typos.
- Connection Timeouts & Network Unreachability: Actionable hints on server reachability and VPN routing.
- Host Key Verification & Security Warnings: Explicit guidance on untrusted or changed host keys.
- SFTP Permissions & Missing Files: Clear Linux file permission (
chmod/chown) hints. - Concurrent File Modification: Interactive conflict warnings with "Overwrite anyway" options.
- Buffer Limits: Guards on files exceeding editor size limits.
- Disconnected Sessions: Contextual prompts to reconnect.
- Automatically translates cryptic Go, SSH, SFTP, and OS errors into structured
- Inline Connection Error Banners:
- Replaced fleeting toasts in
ConnectDialogwith persistent inline error alerts above action buttons, complete with troubleshooting hints and a toggleable raw technical details view.
- Replaced fleeting toasts in
- Remote Explorer Failure Recovery:
- Replaced misleading "Directory is empty" states during SFTP failures with an explicit error screen and an inline Retry action.
- Go Backend Panic Prevention & Nil Safety:
- Added centralized
getSFTPClientinapp.gowith strict nil checks and session validation. - Added receiver and client nil guards across
sftpclient.Clientmethods before mutex acquisitions.
- Added centralized
📦 Artifacts Included
- Linux:
termlet-linux-amd64.deb(Debian, Ubuntu, Linux Mint, Pop!_OS)termlet-linux-amd64.rpm(Fedora, RHEL, CentOS, openSUSE)termlet-linux-amd64.tar.gz(Portable Linux archive)
- Windows:
termlet-windows-amd64.zip(Portable 64-bit Windows archive)termlet-windows-amd64-installer.exe(NSIS setup wizard installer)
- macOS:
termlet-darwin-universal.dmg(Apple Silicon & Intel Universal DMG)termlet-darwin-universal.zip(Portable macOS bundle)
Full Changelog: v0.5.1...v0.5.2
v0.5.1
Termlet v0.5.1 🚀
Termlet v0.5.1 is a major update bringing seamless in-app automatic update installation (matching Dockit's update architecture), native Windows icon integration, webview favicon fidelity, comprehensive light-mode theme contrast enhancements, and UI control cleanup across platforms.
✨ What's New & Highlights
🔄 Automatic In-App Update Installation & Management (Dockit Parity)
- One-Click In-App Updating:
- Added background update detection shortly after startup that alerts users with a non-intrusive floating toast when a newer version is released.
- Interactive
<UpdateModal>: displays installed version vs new version badges, target package detection tag, release notes, and real-time download progress (percentage and downloaded MB). - Native Package & In-Place Installation:
- Linux (
.deb): automatically downloads.debpackage and invokespkexec dpkg -i(with fallback toapt-get install -f -yor desktop package manager), prompting for desktop authorization seamlessly. - Linux (
.rpm): automatically downloads.rpmpackage and installs viapkexec rpm -Uvh --replacepkgs. - Windows: launches downloaded NSIS setup installer
.exeor updates portable.zipin-place. - Standalone / Portable: extracts binary in-memory and applies the replacement in-place using
selfupdate(orpkexecif destination directory requires root permission).
- Linux (
- Seamless App Restart: integrated
RestartApp()allows 1-click restarting directly into the newly updated version. - VS Code Style Post-Update Release Notes Tab:
- Automatically opens a dedicated rendered Release Notes tab upon first launch after an update, showing the changelog and highlights.
- Tracked via
localStorageto ensure it is displayed only once per version update. - Seamlessly integrated as an editor tab (
termlet://release-notes) alongside file and settings tabs. - Can be reopened at any time from the Settings view via the "Release Notes" button.
- Settings Integration: direct "Check for Updates" and "Install Update" triggers right inside the Settings view and bottom status bar.
🪟 Windows Native Icon & Taskbar Integration
- Multi-Resolution Windows Executable Icon:
- Generated and embedded a true multi-resolution icon (
build/windows/icon.ico) with standard 16x16, 32x32, 48x48, 64x64, 128x128, and 256x256 RGBA layers. - Fixes icon display across Windows Taskbar, Alt-Tab task switcher, File Explorer detail/tile views, and the window title bar.
- Resolved missing custom icon issue in NSIS installer setup wizard and Start Menu application shortcuts.
- Generated and embedded a true multi-resolution icon (
- Master App Icon Standardization:
- Re-rendered
build/appicon.pnginto a crisp 512x512 RGBA squircle asset with smooth antialiased corners for cross-platform packaging.
- Re-rendered
🌐 Webview & Browser Favicon Assets
- Webview Favicon Support:
- Added
frontend/public/favicon.png(512x512) andfrontend/public/favicon.ico(multi-res 16/32/48). - Explicitly linked
<link rel="icon" type="image/png" href="/favicon.png" />infrontend/index.htmlto eliminate blank or default webview icons during runtime. - Added clean
<title>Termlet</title>branding in the webview document head.
- Added
🎨 Complete Light Mode UI & Contrast Polish
- Remote File Tree Readability:
- Enhanced text color contrast in light mode: unselected tree items now use high-contrast dark text (
text-zinc-800/hover:text-zinc-950) instead of low-contrast muted zinc. - Polished active item highlight: replaced low-contrast white highlight with a crisp, subtle blue badge (
bg-blue-100 text-blue-900in light mode,bg-blue-900/30 text-blue-200in dark mode). - Ensured toolbar button icons (
Refresh,Collapse All) adopt high-contrast foreground states in both themes.
- Enhanced text color contrast in light mode: unselected tree items now use high-contrast dark text (
- Code Editor Canvas & Status Bar:
- Fixed empty editor background: eliminated the jarring dark canvas in light mode when no files are open, seamlessly adopting a clean
bg-zinc-50backdrop with dark zinc prompt text. - Seamless Status Bar: synchronized the bottom status bar background (
bg-zinc-100/90 text-zinc-700) and border color to match the light theme workspace.
- Fixed empty editor background: eliminated the jarring dark canvas in light mode when no files are open, seamlessly adopting a clean
- SSH Connection Dialog:
- Overhauled modal styling: resolved harsh dark panels in light mode by applying appropriate light theme containers (
bg-white/95 text-zinc-800 border-zinc-200).
- Overhauled modal styling: resolved harsh dark panels in light mode by applying appropriate light theme containers (
🎛️ Linux WebKitGTK Spinner Elimination
- Numeric Stepper Polish:
- Fully suppressed native WebKitGTK number spin boxes in connection dialog port inputs and settings panels, providing clean, tactile, custom stepper buttons across all platforms.
📦 Artifacts Included
- Linux:
termlet-linux-amd64.deb(Debian, Ubuntu, Linux Mint, Pop!_OS)termlet-linux-amd64.rpm(Fedora, RHEL, CentOS, openSUSE)termlet-linux-amd64.tar.gz(Portable Linux archive)
- Windows:
termlet-windows-amd64.zip(Portable 64-bit Windows archive)termlet-windows-amd64-installer.exe(NSIS setup wizard installer)
- macOS:
termlet-darwin-universal.dmg(Apple Silicon & Intel Universal DMG)termlet-darwin-universal.zip(Portable macOS bundle)
Full Changelog: v0.5.0...v0.5.1