Skip to content

Releases: Amanbig/termlet

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 25 Oct 07:20

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 ^C inline and resets 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.
  • 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.
  • Tab Management Polish:
    • Double-Click to Rename: Double-click any tab title to rename it to something custom like docker, web-server, or logs.
    • 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 / logout Handling: Typing exit or logout cleanly closes the active tab (or drawer if last tab).

📐 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.
  • 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 (Server icon) to the very top above Explorer (Files icon), defaulting to connections on app startup for instant server selection.

⚡ 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

Choose a tag to compare

@github-actions github-actions released this 22 Oct 09:58
e0346eb

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 (cd Persistence):
    • 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 -P and cleanly propagates working directory changes.
  • 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.
  • 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 like cat or ps aux.
  • Instant In-Flight Command Interruption (Ctrl+C / UI Cancel):
    • Stop running commands immediately by pressing Ctrl+C or 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.
  • 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 as false or diff) 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 Up and Down arrow keys.
    • Quick screen clear via clear command, Ctrl+L, or the trash button.
    • One-click Copy All Output to clipboard.
    • Maximize / restore height toggle buttons.

📦 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): add interactive remote SSH terminal runner with stateful CWD by @Amanbig in #22

Full Changelog: v0.7.8...v0.8.0

v0.7.8

Choose a tag to compare

@github-actions github-actions released this 21 Oct 10:21
9dfb841

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.
  • Passphrase Encryption (AES-256):
    • Encrypt private keys with an optional passphrase using OpenSSH-standard AES-256 ciphering (ssh.MarshalPrivateKeyWithPassphrase).
  • 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 0600 and public key files with 0644 file permissions.
    • Includes duplicate filename detection and explicit overwrite protection.

🗂️ 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.
  • 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.

🚀 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 ~/.ssh directory exists with 0700 permissions, appends the public key to ~/.ssh/authorized_keys, and enforces strict 0600 permissions.

🛠️ 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.

📦 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

Choose a tag to compare

@github-actions github-actions released this 21 Oct 09:47
e9ee2ae

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_hosts file 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • Modern Bundler Module Resolution:
    • Migrated tsconfig.json from legacy node resolution to modern Vite bundler resolution (moduleResolution: "bundler", allowImportingTsExtensions, isolatedModules: true).
    • Streamlined type checking and reduced development build latency.

📦 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

Choose a tag to compare

@github-actions github-actions released this 20 Oct 14:01
3d70eca

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.com global requests (default every 20s, configurable) with a 5s probe timeout to prevent idle connection drops behind NAT/firewalls.
  • Accurate Drop Detection:
    • Distinguishes intentional user disconnects (Session.Close) from unexpected network drops (Session.MarkDropped).
  • 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.

⚡ 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

Choose a tag to compare

@github-actions github-actions released this 20 Oct 08:03
eae2c7f

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.
  • 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/config file with a single click.
    • Supports Host, HostName, User, Port, IdentityFile, ProxyJump, and ForwardAgent directives.
  • 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 .zip file on the fly without intermediate disk overhead.

🛡️ 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.

🩺 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).
    • 🔴 Unreachable if remote services stop or fail to respond.
    • Concurrent backend multi-port health checker with automatic periodic refresh.

🔍 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 12 or No 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.

📦 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

Full Changelog: v0.6.0...v0.7.0

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 19 Oct 10:09

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.
  • 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.
  • Quick Presets:
    • Built-in shortcuts for Traefik Dashboard (8080), Web / HTTP (8080 -> 80), Node/Vite (3000), PostgreSQL (5432), MySQL (3306), and Redis (6379).
  • 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 Forwarded counter in the status bar for quick glance and 1-click access.

💬 Native In-App Confirmation Modals

  • Sleek Custom Dialogs:
    • Replaced all native browser window.confirm popups 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.

📑 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

Choose a tag to compare

@github-actions github-actions released this 19 Oct 08:48

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.
  • 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.
  • Theme-Synchronized Styling:
    • Integrated hover states (bg-zinc-200/50 in light mode, bg-white/10 in 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.
  • 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.

🛡️ 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

Choose a tag to compare

@github-actions github-actions released this 19 Oct 07:59

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 sshd status, 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.
  • Inline Connection Error Banners:
    • Replaced fleeting toasts in ConnectDialog with persistent inline error alerts above action buttons, complete with troubleshooting hints and a toggleable raw technical details view.
  • 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 getSFTPClient in app.go with strict nil checks and session validation.
    • Added receiver and client nil guards across sftpclient.Client methods before mutex acquisitions.

📦 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

Choose a tag to compare

@github-actions github-actions released this 19 Oct 07:03

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 .deb package and invokes pkexec dpkg -i (with fallback to apt-get install -f -y or desktop package manager), prompting for desktop authorization seamlessly.
      • Linux (.rpm): automatically downloads .rpm package and installs via pkexec rpm -Uvh --replacepkgs.
      • Windows: launches downloaded NSIS setup installer .exe or updates portable .zip in-place.
      • Standalone / Portable: extracts binary in-memory and applies the replacement in-place using selfupdate (or pkexec if destination directory requires root permission).
    • 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 localStorage to 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.
  • Master App Icon Standardization:
    • Re-rendered build/appicon.png into a crisp 512x512 RGBA squircle asset with smooth antialiased corners for cross-platform packaging.

🌐 Webview & Browser Favicon Assets

  • Webview Favicon Support:
    • Added frontend/public/favicon.png (512x512) and frontend/public/favicon.ico (multi-res 16/32/48).
    • Explicitly linked <link rel="icon" type="image/png" href="/favicon.png" /> in frontend/index.html to eliminate blank or default webview icons during runtime.
    • Added clean <title>Termlet</title> branding in the webview document head.

🎨 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-900 in light mode, bg-blue-900/30 text-blue-200 in dark mode).
    • Ensured toolbar button icons (Refresh, Collapse All) adopt high-contrast foreground states in both themes.
  • 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-50 backdrop 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.
  • 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).

🎛️ 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