Releases: danshapiro/freshell
Releases · danshapiro/freshell
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.
v0.2.3 - Fix Serve Precheck
Fixed: Port availability check now only runs in dev mode, not when running npm run serve in production.