Commit graph

69 commits

Author SHA1 Message Date
Amrit Subramanian d6f853a497 Bump version to 1.0.1-beta.6
Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-08 13:44:33 -04:00
Amrit Subramanian 93f5134291 Use dedicated command runner PTY for claude MCP operations
- Spawn a single persistent PTY at app startup for running claude commands
- Replaces execAsync with login shell to avoid PATH issues with NVM
- PTY has full interactive shell environment with proper PATH
- Commands execute instantly (no shell spawn overhead)
- Fixes "command not found: claude" in compiled DMG
- Detects command completion using isTerminalReady helper

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-08 13:42:40 -04:00
Amrit Subramanian 68cdbb49aa Bump version to 1.0.1-beta.5
Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-08 00:20:36 -04:00
Amrit Subramanian ead8191b22 Fix MCP server removal and execAsync shell invocation
- Fix execInLoginShell to properly wrap commands instead of malformed shell option
- Fix serverMap accumulating deleted servers by clearing on each poll
- Add optimistic UI removal for instant feedback when removing servers
- Add refresh after add operation with loading spinner
- Remove recently removed servers tracking (unnecessary with proper serverMap clear)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-08 00:11:22 -04:00
Amrit Subramanian 45f2aaefa3 Extract and force MCP server refresh after add/remove operations
- Add refreshMcpServers() helper to force immediate list refresh
- Shows loading spinner on add button during refresh
- Waits 500ms for poller to process and return results
- Both add and remove operations now trigger forced refresh
- Ensures UI updates immediately after server changes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-07 23:40:39 -04:00
Amrit Subramanian d3231fcb15 Add animated spinner to MCP add button loading state
Shows loading-spinner animation alongside "Adding..." text
while waiting for MCP server addition to complete.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-07 23:28:45 -04:00
Amrit Subramanian 4dce901166 Remove unused sessionId parameter from MCP handlers
Since MCP commands now run in independent login shells via execAsync,
the sessionId parameter is no longer needed.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-07 23:20:26 -04:00
Amrit Subramanian d687523e4d Use execAsync with login shell for MCP add/remove/get commands
- Replaces PTY-based execution to avoid race conditions with MCP poller
- Uses process.env.SHELL to detect user's preferred shell
- Falls back to /bin/zsh on macOS, /bin/bash on Linux
- Executes in login shell (-l) to ensure PATH is set correctly
- Each command runs in independent shell process (no interference)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-07 23:19:27 -04:00
Amrit Subramanian 84e43f656c Run MCP add/remove/get commands in poller PTY instead of execAsync
- Fixes issue where execAsync spawns non-login shell without claude in PATH
- All MCP operations now run in the session's MCP poller PTY
- Adds executeInMcpPoller helper to run commands and wait for completion
- Uses prompt detection to know when command finishes
- 10 second timeout for safety

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-07 19:37:08 -04:00
Amrit Subramanian 7c344ff0f3 Bump version to 1.0.1-beta.4
Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-07 15:19:13 -04:00
built-by-as 186c970d9d
Merge pull request #7 from built-by-as/revert-5-add-worktree-path-to-session-sidebar
Revert "Add worktree path display to session sidebar"
2025-10-07 15:17:32 -04:00
built-by-as c07124b6e9
Revert "Add worktree path display to session sidebar" 2025-10-07 15:15:54 -04:00
built-by-as d1df3ba093
Merge pull request #5 from built-by-as/add-worktree-path-to-session-sidebar
Add worktree path display to session sidebar
2025-10-07 15:05:09 -04:00
Amrit Subramanian d25d969dde Add worktree path display to session sidebar
Shows the worktree directory path below each session name in the sidebar with subtle gray text to help users identify where each session's files are located.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-07 15:02:14 -04:00
built-by-as 5d02ec3359
Merge pull request #4 from built-by-as/configure-worktree-dir
Add configurable worktree root directory
2025-10-07 14:59:32 -04:00
Amrit Subramanian 2e88696071 Add configurable worktree root directory setting
Users can now configure where worktrees are stored via the settings modal. The setting is persisted and applies to all new sessions created after the change.

Changes:
- Added worktreeDir field to TerminalSettings interface
- Added UI controls in settings modal for selecting worktree directory
- Updated worktree creation logic to use configured directory
- Defaults to ~/worktrees for backward compatibility
2025-10-07 14:55:35 -04:00
Amrit Subramanian 17b7e81bda Use readable project names for worktree directories
- Worktrees now use project basename: ~/worktrees/FleetCode/session1
- Adds collision detection with .fleetcode-project marker file
- If collision detected, appends short hash: FleetCode-a3b2c1
- MCP config moved to ~/worktrees/ProjectName/mcp-config.json

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-07 14:47:00 -04:00
Amrit Subramanian 0f748493af Move worktrees from .fleetcode to ~/worktrees
- Worktrees now live in ~/worktrees/<project-hash>/<session-name>
- MCP config files also moved to ~/worktrees
- Removed ensureFleetcodeExcluded function (no longer needed)
- Uses MD5 hash of project directory to organize worktrees by project

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-07 14:44:57 -04:00
Amrit Subramanian 26d349169b Bump version to 1.0.1-beta.3
Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-07 13:34:38 -04:00
Amrit Subramanian ea581b76c6 Hide MCP section when deleting last active session
When a session is deleted and there are no remaining active sessions,
hide the MCP servers section to match the behavior of closeSession.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-07 13:28:15 -04:00
Amrit Subramanian 6d45f36310 fix checking ready for setup commands 2025-10-07 13:25:26 -04:00
Amrit Subramanian 917edcf5ec Add HTTP support to MCP server parsing and extract terminal ready check
- Update MCP server regex to handle HTTP type servers in addition to SSE and stdio
- Extract terminal readiness detection into reusable isTerminalReady() helper function with configurable start position

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-07 13:03:38 -04:00
Amrit Subramanian 2d97d3171a wait for terminal ready after running each setup comand 2025-10-07 12:59:22 -04:00
Amrit Subramanian 8b18f47902 Add Claude Code auto-connect troubleshooting section
Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-07 11:20:30 -04:00
Amrit Subramanian 5f2eb9d26f Bump version to 1.0.1-beta.2
Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-07 10:56:02 -04:00
Amrit Subramanian fbf35409cd Update README with macOS quarantine fix and remove tech stack section
Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-07 00:09:11 -04:00
Amrit Subramanian bc30ef22fe Start MCP poller immediately when session starts 2025-10-06 20:46:04 -04:00
built-by-as ad3c2928cf
Merge pull request #3 from built-by-as/clear-mcp-sidebar
Clear MCP sidebar when switching between sessions
2025-10-06 18:39:35 -04:00
Amrit Subramanian d33ed2c40e Clear MCP sidebar when switching between sessions
Fixes issue where MCP servers from previous session would remain visible
in sidebar until new session's servers loaded.
2025-10-06 18:38:26 -04:00
built-by-as 3854eaa6b5
Merge pull request #2 from built-by-as/sidebar-name-truncate
Fix session name truncation to prevent overlap with close button
2025-10-06 18:25:56 -04:00
Amrit Subramanian e9d528324e Fix session name truncation to prevent overlap with close button
Added min-width: 0 to session-name-container to allow flex children to shrink below their content size, enabling proper text truncation when session names are long.
2025-10-06 18:24:38 -04:00
Amrit Subramanian 2930290662 resizing works, delete git branch when deleting session 2025-10-06 18:05:14 -04:00
built-by-as 0de5e77e99
Merge pull request #1 from built-by-as/feature/terminal-resize
Upgrade to @xterm/addon-fit from xterm-addon-fit
2025-10-05 21:18:33 -04:00
Amrit Subramanian d0e5122077 Upgrade to @xterm/addon-fit from xterm-addon-fit
- Replaced deprecated xterm-addon-fit with modern @xterm/addon-fit package
- Updated import statement to use scoped package name
- No functional changes, just using the newer maintained package

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-05 21:12:37 -04:00
Amrit Subramanian fcd62c27bb Add custom branch name feature
Users can now specify a custom branch name when creating a session. If provided, the custom name is used as both the git branch name and the session display name.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-05 17:09:48 -04:00
Amrit Subramanian 9405824d7b Add loading spinner to MCP add button during polling
- Send mcp-polling-started event from main process before each poll
- Show spinner on add button when polling starts
- Restore + button when mcp-servers-updated event received
- Spinner shows on initial load and every 60s refresh
2025-10-05 16:13:23 -04:00
Amrit Subramanian 639ec0ab08 Add per-project MCP configuration support
- Extract MCP servers from ~/.claude.json for each project
- Write project MCP config to .fleetcode/mcp-config-<hash>.json
- Pass --mcp-config flag to Claude CLI on session start
- Update MCP poller to run in project directory instead of worktree
- Reduce first poll delay from 2s to 500ms for faster UI updates
- Add unique UUID suffix to git branch names to prevent conflicts
- Store mcpConfigPath in persisted sessions
2025-10-05 16:01:59 -04:00
Amrit Subramanian 54e7a1adb4 Implement per-session MCP server polling with headless PTY
- Add headless PTY poller for each session that runs in session's worktree directory
- Spawn MCP poller when Claude shows > prompt (authenticated context)
- Parse MCP server output with regex, merge servers by name to handle chunked data
- Show/hide MCP section based on active session
- Clean up MCP pollers on session close/delete
- Add unique UUID suffix to branch names to prevent conflicts on recreate
- Remove global MCP polling interval in favor of per-session polling
2025-10-05 13:47:37 -04:00
Amrit Subramanian 8dfe6be026 Bump version to 1.0.1-beta.1 2025-10-04 23:03:56 -04:00
Amrit Subramanian cd4e0f64c8 Add login shell support, session creation loading state, and refactoring
- Spawn PTY as login shell (-l flag) to properly source shell configs (fixes pyenv issues)
- Add animated loading spinner to session creation button
- Refactor duplicate PTY spawning logic into shared spawnSessionPty() function
- Fix unread indicator bugs (clear timers on session switch/close/delete)
- Configure electron-builder to publish releases instead of drafts
- Remove Windows builds (node-pty compilation issues)
2025-10-04 22:49:33 -04:00
Amrit Subramanian 0a1c6fd7b4 use electron builder publishing 2025-10-04 20:57:48 -04:00
Amrit Subramanian 579411721d dont publish in build 2025-10-04 20:53:12 -04:00
Amrit Subramanian 4c3d2dd105 more build fixes 2025-10-04 20:46:25 -04:00
Amrit Subramanian 4b41e858bb icons 2025-10-04 20:36:20 -04:00
Amrit Subramanian 4627907ca1 remove windows build 2025-10-04 00:53:53 -04:00
Amrit Subramanian b2b8b40a26 windows config 2025-10-04 00:40:22 -04:00
Amrit Subramanian c05449b96c add permissions 2025-10-03 17:28:47 -04:00
Amrit Subramanian ee560d4fc4 author email 2025-10-03 17:20:28 -04:00
Amrit Subramanian aa73518f6e github workflow to publish executable 2025-10-03 17:16:48 -04:00
Amrit Subramanian 9a5886c348 add image to readme 2025-10-03 17:13:55 -04:00