Releases: danshapiro/freshell
Releases · danshapiro/freshell
v0.6.0
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 buildif a production server is already running, preventing accidental overwrites. Usenpm run checkfor 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
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
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
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
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
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
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 servecommand documentation
v0.3.0
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
Fixed: The Freshell emoji is now correctly displayed as 🐚🔥 everywhere.
v0.2.4 - Friendly Startup Message
Startup now displays a friendly message with the full URL you can use to access Freshell, including your machine's hostname for LAN access.