Skip to content

Releases: danshapiro/freshell

v0.7.0

25 Mar 16:14

Choose a tag to compare

New things you can do

  • Extension system — Install and manage extensions that add new pane types, CLI integrations, and server-side services. Extensions declare themselves via manifest files, appear in the pane picker, run in sandboxed iframes with WebSocket support, and can be enabled or disabled from the new Extensions management page. Built-in CLI agents (Claude Code, Codex, OpenCode) are now extensions under the hood.
  • OpenCode CLI support — Run OpenCode sessions alongside Claude Code and Codex. Sessions are indexed, appear in the sidebar, and support resume just like other coding CLIs.
  • AI-powered session titles — Right-click any session and choose "Generate title" to get a Gemini-generated name based on the conversation content. Configure your Gemini API key and a custom title prompt in Settings > AI.
  • Progressive sidebar search — Search now runs in two phases: a fast pass over already-loaded sessions, then a deep server-side search that scans session content on disk. A "deep search" indicator shows when the server pass is running.
  • Keyboard shortcuts dialog and new hotkeys — Press Alt+T to open a new tab, Alt+W to close the current tab, and Ctrl+Shift+Left/Right to reorder tabs. A keyboard shortcuts reference dialog lists all available shortcuts.
  • Terminal file links open in editor panes — Click a file path in terminal output to open it in a Monaco editor pane in the same tab, instead of needing a separate editor.
  • Pane refresh from context menu — Right-click any pane and choose "Refresh" to restart its content without closing and recreating it.
  • Collapsible tool strip in agent chat — Tool use/result blocks in Freshclaude conversations collapse into a single-line animated strip showing tool names as they run, settling to "N tools used" when done. Click to expand and see full details. Preference is remembered per browser.
  • Token budget display — Freshclaude pane headers show the current token budget usage so you can see how much context window remains.
  • Pane rename from CLI — Agents and CLI scripts can rename panes programmatically via the orchestration API, enabling automated workspace organization.
  • Electron desktop app foundation — Early support for running Freshell as a native desktop application with a setup wizard, system tray, auto-updater, and platform-native daemon management (launchd/systemd/Windows service).
  • One-command launcher script — Run scripts/launch.sh to pull updates, build, and start the server in one step, with the access URL saved to ~/.freshell/url.

Things that got better

  • Personalized sidebar — The sidebar now filters sessions to the current device by default, so shared servers show each user only their own sessions instead of everyone's.
  • Pane activity indicators — Sidebar and tab icons use three states: blue when a terminal is busy, green when idle and ready, and muted when inactive. Works across all CLI types including Codex.
  • Tab bar navigation — The tab bar replaces gradient fade with arrow-jump buttons when tabs overflow. Click an arrow to jump one tab; hold to scroll continuously. The + button stays fixed outside the scrollable area.
  • Tab tooltip — Hovering over a tab shows the full untruncated name, useful when many tabs are open and names get clipped.
  • Non-interactive session filtering — Sessions started via piped mode (claude -p) are automatically detected and hidden from the sidebar by default, reducing clutter from automated workflows.
  • Session pagination — The sidebar loads sessions in pages of 100 with infinite scroll, instead of fetching the entire list at startup. Combined with WebSocket compression (~85% smaller payloads), this significantly speeds up initial load on servers with large session histories.
  • Visible-first terminal rendering — The active terminal paints its viewport before background tabs replay their scrollback, making tab switches feel instant even with large buffers.
  • Browser pane localhost proxying — Browser panes targeting localhost URLs are proxied through Freshell's HTTP server, so they work reliably in Docker and WSL2 environments where the browser can't reach the host's localhost directly.
  • Settings page redesign — Settings are reorganized into a Chrome-style sidebar layout with dedicated sections for Workspace, AI, Extensions, Network, and Safety. Extension and CLI provider management is unified into the Extensions tab.
  • Per-browser preferences — UI preferences like tool strip state, sidebar width, and tab ranges are now stored per-browser instead of per-server, so different devices using the same server keep their own layout preferences.
  • Context menu improvements — Right-click menus stay open when you right-click again (instead of closing and reopening), copy/paste actions are in the top section for faster access, and Mac Ctrl+click works correctly for context menus.
  • Editor panes follow app theme — Monaco editor panes now switch between light and dark themes to match your Freshell theme setting.
  • Agent chat draft preservation — Typed text in the Freshclaude composer survives pane splits and tab restructuring instead of getting lost.
  • Sidebar stability — Eliminated flickering and re-rendering on session updates, pagination boundaries, and refresh cycles. Timestamps update every 15 seconds instead of 60.
  • Windows security hardening — Windows firewall changes and WSL port forwarding now require explicit user confirmation before any elevation occurs, with proper least-privilege daemon execution.
  • WebSocket reliability — Fixed crashes from backpressure on large session stores, hardened reconnect flows for split panes, and prevented duplicate terminal creation across reconnects.
  • Stale client refresh — After a server update, stale browser tabs automatically refresh instead of silently running old code.
  • Subagent session hygiene — Codex subagent sessions no longer auto-bind to panes, and Freshclaude SDK subprocesses no longer inherit stale API keys from the parent environment.

v0.6.0

28 Feb 06:27

Choose a tag to compare

New things you can do

  • Freshclaude — An alternative to Claude CLI that works with your Anthropic subscription. Fully interactive: answer Claude's questions inline, see thinking and tool use, and pick your model and effort level — all inside a Freshell pane.
  • Self-configuring workspace — Claude and Codex agents running in Freshell can open panes, windows, subagents, and browsers for you. Create tabs, split panes, send keystrokes, capture terminal output, take screenshots, and wait for specific output. As you work, Freshell configures itself around what you're doing.
  • Rename anything, and it cascades — Rename a pane, and the tab title updates. Rename a session in history, and the terminal title updates. Rename a terminal, and the session title updates. Everything stays in sync.
  • Take screenshots from agents — Coding CLIs can capture pane, tab, or full-view screenshots as PNGs, with path validation and overwrite protection. Useful for automated demos and documentation.

Things that got better

  • Terminal reconnects are instant — Protocol v2 replays only the output you missed (via sequence numbers) instead of re-sending the entire scrollback. Reconnects after network blips are dramatically faster.
  • Session sidebar is less cluttered — Codex subagent sessions and non-interactive sessions are hidden by default. Empty sessions are filtered out.
  • Freshclaude chat is more readable — Code blocks now have syntax highlighting, language headers, and a copy button that strips trailing newlines. External links open in new tabs. Scroll-to-bottom button with unread badge keeps you oriented in long conversations.
  • Chat session history survives restarts — Freshclaude chat sessions restore after server restart or page reload, so you don't lose your conversation.
  • Connection errors explain themselves — Auth failures, connection limits, and protocol mismatches show specific, actionable overlay messages instead of a blank terminal.
  • Server won't build over itself — A prebuild guard blocks npm run build if a production server is already running, preventing accidental overwrites. Use npm run check for safe verification.
  • Pane picker shows Freshclaude first — The launcher leads with Freshclaude, followed by Claude CLI and Codex CLI, with proper capitalization and the actual Freshclaude icon.
  • Windows firewall self-repairs — On WSL2, Freshell detects and fixes drifted Windows Firewall rules automatically so LAN access keeps working.

v0.5.0

17 Feb 20:45

Choose a tag to compare

New things you can do

  • Manage tabs across devices in one workspace — The new Tabs view shows local and remote tabs together, lets you label devices, and reopen remote tabs as local copies when you want to keep working on another machine.
  • Set up remote access with guided flow — A built-in setup wizard plus network settings now walk you through LAN/VPN access, firewall checks, and shareable links/QR so phone and tablet access is faster to get working.
  • Use touch-first mobile navigation — On mobile, you can swipe between tabs, open/close the sidebar with edge gestures, use a tab-switcher overlay, and long-press to open context menus.
  • Search terminal output in-pane — You can open terminal search with keyboard shortcuts, jump through matches, and keep command output exploration inside the active pane.
  • Control clipboard behavior from terminal apps — OSC52 clipboard handling now supports Ask/Always/Never policy so you decide how remote terminal copy requests are handled.

Things that got better

  • Mobile terminal controls are much easier to use — Touch targets were increased, headers and tab bars were tuned for small screens, and mobile key rows now support press-and-hold repeat for arrow navigation.
  • Session and resume behavior is more reliable — Provider/session ownership and restore flows were hardened to prevent duplicate or misassigned sessions during reconnects and cross-device handoff.
  • Session updates are faster and lighter — Session sync now supports incremental patches so large histories refresh with less churn.
  • Security defaults and validation are stronger — Auth checks were tightened (including timing-safe comparisons), settings/file APIs were validated more strictly, and path sandboxing was hardened.
  • Freshclaude chat interaction is more polished — New context-aware copy actions, cleaner message presentation, and better status/streaming behavior make transcript reading and extraction smoother.

v0.4.5

14 Feb 05:29

Choose a tag to compare

What's New

New things you can do

  • See your active directory, repo, and context left (roughly...) in the title — Every pane header now shows your working directory, git branch with dirty indicator, and how much context your coding CLI has left. Updates live as you work.
  • Split panes freely — Right-click any pane to split right or down. Closing a pane promotes its sibling — your layout is preserved, not rebuilt.
  • Zoom any pane — Maximize a pane to fill the tab, then restore your layout with Escape or the header button.
  • Replace a pane — Right-click "Replace pane" to swap content without changing layout. The replaced terminal keeps running in background.
  • Snap dividers — Pane dividers snap to their original position and to aligned dividers. Drag intersections to resize in both directions. Hold Shift to bypass.
  • Turn-completion attention indicators — Tabs and pane headers glow when a coding CLI finishes its turn in the background. Choose style and dismiss mode in Settings.
  • Sidebar opens panes, not tabs — Clicking a session in the sidebar splits a pane in the current tab.

Things that got better

  • Sessions survive server restarts — Session repair properly awaits file scanning, and graceful shutdown gives CLIs time to flush.
  • Claude and Codex terminals reattach on refresh — Both Claude and Codex terminals now reconnect to their running process on page refresh instead of spawning duplicates.
  • Large scrollback no longer crashes WebSocket — Terminals with big buffers send snapshots in chunks.
  • Worktree sessions show correct labels — Each git worktree gets its own project group in the sidebar.
  • Token usage is more accurate — Codex and Claude percentages now track closer to what the CLIs report.
  • Better pane dividers — Wider hit area, visible grab indicator on hover, cursor lock during drag.
  • Session indexer is faster — Debounced and throttled refresh cycles reduce latency under load.

v0.4.1

10 Feb 01:21

Choose a tag to compare

What's New

New things you can do

  • See what's running at a glance — Tabs now show a row of icons for each pane type (Claude, Codex, Terminal, Browser, Editor) with color-coded status: green for running, red for error, gray for exited, pulsing while creating. A new "Icons on tabs" setting lets you switch back to the classic dot.
  • Rename pane titles inline — Double-click a pane title to rename it in place. No more popup dialog — works just like tab renaming, with Escape to cancel and Enter to confirm.

Things that got better

  • Tab and pane titles are independent — Renaming a tab no longer prevents the pane title from updating when the terminal sets its own title via escape sequences.
  • Session restore is dramatically more reliable — Deep overhaul of persistence and cross-tab sync: terminal assignments survive cross-tab sync, session IDs are preserved during reconnection, rate-limit bypass works correctly for all reconnecting terminals, and orphaned pane data is cleaned up automatically.

v0.4.0

08 Feb 22:42

Choose a tag to compare

What's New

New things you can do

  • Know when an agent is done — Turn-complete bell and tab attention indicator notify you when a coding CLI finishes its turn in a background tab. No more polling.
  • Pick a directory when launching a CLI — Directory picker with fuzzy search when creating a Claude Code or Codex terminal. Includes recently-used directories.
  • Copy a resume command — Right-click any session (sidebar, pane header, or tab) and copy the CLI command to resume it (e.g., claude --resume <id>).
  • Filter out noise in the sidebar — New toggles to hide subagent and non-interactive sessions. On by default — flip them in Settings to see everything.
  • State syncs across browser tabs — Open Freshell in multiple browser tabs and tab/pane state stays synchronized. Create a tab in one, see it appear in the other.
  • Browser panes work over the network — When accessing Freshell remotely, browser panes that point at localhost dev servers now work via authenticated TCP port forwarding with per-IP isolation.

Things that got better

  • Better session titles — Title extractor skips system context and IDE boilerplate to show what you actually asked.
  • Codex sessions survive server restarts — Codex terminals re-associate with sessions after restart.
  • Faster sidebar updates — Session changes arrive as incremental WebSocket patches instead of full re-sends.
  • Auth persists across tabs — Opening a new browser tab no longer requires re-authenticating.
  • Paste works correctly — All paste paths (keyboard shortcuts, context menu, terminal action) flow through a single pipeline. No more double-pastes.
  • Tab close cleans up split panes — Closing a tab with splits now kills all terminal processes, not just one.
  • Terminal resize on reattach — Refreshing no longer causes terminals to render at 80x24 before fitting to the viewport.
  • Mobile keyboard handling — Terminal correctly resizes when the soft keyboard appears.
  • Recency-pinned is the default sort — Sidebar pins sessions with open panes to the top by default.

v0.3.2

06 Feb 17:33

Choose a tag to compare

What's New

Features

  • Coding CLI options in pane picker with per-provider settings (cwd, icons, scoped shortcuts)
  • Inline tab rename via context menu
  • Deterministic Claude session restore
  • Idle terminal warnings before auto-kill
  • Comprehensive accessibility (a11y) refactor
  • Responsive pane picker with CSS container queries
  • Web Audio synthesizer demo
  • Browser-use LLM-driven smoke testing

Fixes

  • WebSocket correctness (backpressure handling, reconnect on hello timeout, snapshot race prevention)
  • Terminal respawn loop prevention with rate limiting
  • Session repair normalization and legacy migration
  • Server startup issues (duplicate logs, wrong port, proxy errors)
  • node-pty Node.js 25 compatibility
  • Mobile sidebar and browser refresh fixes

v0.3.1

03 Feb 18:45

Choose a tag to compare

What's New

WSL2 LAN Access

  • Automatic port forwarding setup for accessing Freshell from other devices on your LAN when running in WSL2
  • Smart detection of WSL2 environment and Windows host IP
  • Integrated into bootstrap with UAC elevation when needed

UI Improvements

  • Recency (pinned) is now the default sidebar sort mode
  • Added Ctrl+V paste support in terminal panes
  • Increased inactive pane opacity from 70% to 85%
  • Fixed pane focus behavior with xterm.js

Bug Fixes

  • Fixed default working directory handling for Windows shells in WSL
  • Fixed runaway terminal creation loop on exit
  • Improved session handling and project path detection
  • Fixed fs/promises import for Claude provider
  • Made terminal font local-only and bulletproof

Developer Experience

  • Better WSL shell spawning with full paths for cmd/powershell
  • Performance logging now gated on runtime switch
  • Added npm run serve command documentation

v0.3.0

01 Feb 06:45

Choose a tag to compare

A major feature release focused on session discovery and terminal UX.

Features

  • Full-text session search — Search across all your Claude sessions from the sidebar. Search operates in tiers: first matches titles, then recent session content, then full history. Toggle between tiers for speed vs. thoroughness.
  • Terminal activity indicators — Each terminal tab now shows its state: ready (idle), working (output streaming), or finished (work complete). Great for monitoring background tasks.
  • Audio notifications — Get a sound alert when a terminal finishes work and the browser tab isn't focused—never miss when Claude finishes a task.
  • Right-click context menus — Tabs and sidebar items now have context menus for quick actions like close, rename, and duplicate.
  • Restyled tabs — Tabs now have a traditional tab appearance with better visual hierarchy and improved light/dark mode contrast.
  • Terminal visibility optimization — Inactive terminals now use CSS visibility instead of display:none, improving performance when switching tabs.

Fixed bugs with tab renaming keyboard handling, settings merging for new properties, duplicate panes in edge cases, and streaming detection for activity indicators.

v0.2.5

31 Jan 21:01

Choose a tag to compare

Fixed: The Freshell emoji is now correctly displayed as 🐚🔥 everywhere.