Run AI coding agents in parallel, one git worktree each, from your desktop, browser, or phone.
This is the first big release since 0.0.1 and it touches nearly everything.
Highlights
One backend everywhere. Desktop and web now share the same server core. Terminal sessions live on the server, so they survive page reloads, window switches, and dropped connections. Close the tab, come back, your agent is still working.
Fleet status. See every agent at a glance: working, needs input, or done. A ding plays when an agent finishes or asks a question, so you can stop babysitting terminals.
Browser preview. When your agent starts a dev server, VibeTree detects the URL and can open the app in a preview pane right next to the terminal. Code on the left, running app on the right.
Changes dock. Review the diff without leaving the worktree. Staged and unstaged views, a maximize mode for real reviews, and a switch to flip between changes and preview. Select a file and send a note straight to the agent as a prompt.
Works on your phone. The web app is an installable PWA. Pair with a QR code and check on your agents from the couch.
New
- Agent presets: drop an agent command in
.vibetree/config.jsonand launch it with one click vibetreeCLI: list, add, and remove worktrees, check status, and run an agent from any terminal- Worktree lifecycle hooks:
.vibetree/hooks/post-createandpre-removefor setup and cleanup scripts - Server directory picker: browse the server and discover repos when opening a project from the web
- Keyboard shortcuts for new worktree, switching worktrees, and toggling changes, shown in menus and on the welcome screen
- Onboarding for first run on desktop and a redesigned welcome screen with recent projects
- Unified titlebar on desktop with window controls blended into the app, Linear style
- Refreshed design: compact monochrome UI, consistent spacing, cleaner dialogs
- Toasts, loading skeletons, and a live session indicator
Fixed
- Keystrokes no longer duplicate when a worktree has multiple terminals
- Terminal resize is smooth and correct with split terminals, plus draggable split dividers
pnpm dev:desktopno longer fails with spawn npx EACCES- Git status parsing no longer miscounts files with unstaged-only changes
- Terminal output no longer overflows or hugs the pane border
Install
Grab the build for your platform from the assets below: dmg or zip for macOS (Intel and Apple Silicon), exe for Windows, AppImage or deb for Linux.
macOS note: builds are not yet signed with an Apple Developer ID. If macOS blocks the app, right-click it and choose Open, or run:
xattr -cr /Applications/VibeTree.app
To run from source: pnpm install && pnpm dev:desktop, or pnpm dev:all for the server and web app.
What's Changed
- feat: implement git status and diff functionalities in the application by @Krishnachaitanyakc in #6
- Fix theme inconsistencies in terminal and git diff view by @Krishnachaitanyakc in #8
- Add Option to delete worktree by @nithish08 in #13
- impl: monorepo architecture by @sahithvibudhi in #19
- Make web app functional by @sathvik-palley in #20
- make terminal theme match to app theme by @sathvik-palley in #27
- remove white border lines on dark theme by @sathvik-palley in #28
- web app - to create worktrees by @sathvik-palley in #29
- Feature/auto load projects with path by @sathvik-palley in #31
- allow mobile lan connections by @sathvik-palley in #33
- feat: open terminal links in default browser instead of in-app browser by @phuongnd08 in #34
- Add workflow build by @phuongnd08 in #35
- fix: resolve terminal newline rendering issue on mobile browsers by @sahithvibudhi in #37
- Multiple features by @phuongnd08 in #40
- Remove convertEol to allow Option+Enter for newlines when entering Claude prompt by @phuongnd08 in #41
- feat: Add terminal search functionality with xterm-addon-search by @phuongnd08 in #42
- feat: Launch file dialog directly when clicking plus button by @phuongnd08 in #43
- feat: Add horizontal terminal split functionality by @phuongnd08 in #44
- feat: Add custom terminal font settings by @phuongnd08 in #45
- fix: Launch terminal shells as login shells to match iTerm2 PATH by @phuongnd08 in #46
- using fix ports for webapp as of now by @sathvik-palley in #47
- Feature/user login webapp by @sathvik-palley in #48
- Fix/login page UI webapp by @sathvik-palley in #49
- Feature/docker for web app by @sathvik-palley in #50
- feat: Add terminal setting to control locale environment variables by @phuongnd08 in #51
- feat: Add quit confirmation dialog by @phuongnd08 in #52
- feat: Add drag-and-drop file support to terminal by @phuongnd08 in #53
- fix: Use exact match for protected branch names in worktree deletion by @phuongnd08 in #54
- feat: Add deletion reporting dialog with PTY process cleanup by @phuongnd08 in #55
- feat: Add robust PTY process cleanup with MVC pattern by @phuongnd08 in #56
- feat: Add View > Stats menu to monitor active PTY processes by @phuongnd08 in #57
- fix: Replace process.exit with electronApp.close() in E2E tests by @phuongnd08 in #62
- feat: Add size limits and scrolling to stats dialog by @phuongnd08 in #61
- Revert PR #61: fix-stats-dialog merge by @phuongnd08 in #64
- fix: Terminal split cannot be closed by @phuongnd08 in #60
- Improve stats dialog by @phuongnd08 in #65
- Fix PTY spawn slot cleanup by waiting for exit event by @phuongnd08 in #59
- Add unit tests for PTY process cleanup when closing projects by @phuongnd08 in #58
- feat: Add flexible custom build script for macOS with product name customization by @phuongnd08 in #68
- feat: Display detailed error backtraces and specific messages when terminal close fails by @phuongnd08 in #67
- Fix terminal split close race condition by @phuongnd08 in #69
- feat: Add system diagnostics to stats dialog for posix_spawn failure diagnosis by @phuongnd08 in #70
- Revert terminal split close race condition fix by @phuongnd08 in #71
- feat: Improve process display in stats dialog with sortable table by @phuongnd08 in #72
- Sort worktrees alphabetically with main branch first by @phuongnd08 in #73
- Improve worktree panel UI with enhanced typography and layout by @phuongnd08 in #74
- feat: Add terminal command scheduler with repeat functionality by @phuongnd08 in #75
- feat: Add launch-with-project script for automated testing by @phuongnd08 in #76
- feat: Add scheduler history to reuse previous commands by @phuongnd08 in #77
- feat: Add resize functionality to worktree list panel by @phuongnd08 in #78
- fix: Make worktree list scrollable within app height by @phuongnd08 in #79
- refactor: Use setTimeout instead of setInterval for repeating scheduler by @phuongnd08 in #80
- feat: Add comprehensive posix_spawn diagnostics button to stats dialog by @phuongnd08 in #84
- fix: Prevent overlapping scheduler executions causing gibberish terminal input by @phuongnd08 in #82
- fix: Persist scheduler state when switching between projects by @phuongnd08 in #85
- feat: Add blue color indicator for worktrees with active terminals by @phuongnd08 in #87
- feat: Add PTY device tracking to diagnostics by @phuongnd08 in #86
- fix: Prevent race condition in scheduler stop causing extra command executions by @phuongnd08 in #88
- fix: Resolve worker teardown timeout by properly handling recursive scheduler promises by @phuongnd08 in #89
- fix: Prevent terminal links from opening in in-app browser by @phuongnd08 in #91
- feat: Add visual indicator for worktrees with active schedulers by @phuongnd08 in #92
- refactor: Extract git repo creation logic into shared e2e test helper by @phuongnd08 in #94
- feat: Implement fork-per-terminal architecture with PTY isolation by @phuongnd08 in #95
- refactor: Simplify initialization and remove reload functionality by @phuongnd08 in #98
- fix: Remove ELECTRON_RUN_AS_NODE from terminal shell environment by @phuongnd08 in #102
- fix: Remove process.exit(0) from global teardown to fix CI failure reporting by @phuongnd08 in #104
- fix: Clean up terminal DOM cache when worktree is deleted by @phuongnd08 in #100
- feat: Add husky pre-commit hook to disallow waitForTimeout in tests by @phuongnd08 in #103
- fix: Add dark mode styling to terminal search input by @phuongnd08 in #106
- feat: Add native OS notifications for Claude Code CLI completion by @phamvmnhut in #105
- feat: Add confirmation dialog when closing a project by @phuongnd08 in #107
- Restructure: unified server architecture, terminal persistence, worktree hooks, PWA, onboarding by @sahithvibudhi in #109
- Design pass: compact, aligned, monochrome UI by @sahithvibudhi in #110
- UX improvements: status indicators, toasts, shortcuts, skeletons, agent ding by @sahithvibudhi in #111
- Redesign the welcome screen in the VS Code / Cursor style by @sahithvibudhi in #112
- Server directory picker and repo discovery on the landing page by @sahithvibudhi in #113
- Mission control: desktop fixes, unified chrome, fleet status, presets, diff-to-prompt, CLI by @sahithvibudhi in #115
- Pane workspace: browser preview, Changes drawer, unified dock switch by @sahithvibudhi in #116
- release: bump versions to 0.2.0 by @sahithvibudhi in #117
- ci: allow cutting a release via workflow dispatch by @sahithvibudhi in #118
- fix: prebuild workspace packages for every dev entry point by @sahithvibudhi in #119
- ci: drop the pnpm store prune step from the release workflow by @sahithvibudhi in #120
- ci: fix the native rebuild step in the release workflow by @sahithvibudhi in #121
- ci: pin the Windows node-gyp override to a Node 20 compatible major by @sahithvibudhi in #122
- fix: add the package metadata the deb target requires by @sahithvibudhi in #123
- Quiet desktop chrome: sidebar parity, slim titlebar, segmented views by @sahithvibudhi in #124
- ci: build Windows releases on windows-2022 by @sahithvibudhi in #125
- ci: harden the release pipeline after the monorepo move by @sahithvibudhi in #127
New Contributors
- @Krishnachaitanyakc made their first contribution in #6
- @nithish08 made their first contribution in #13
- @sathvik-palley made their first contribution in #20
- @phuongnd08 made their first contribution in #34
- @phamvmnhut made their first contribution in #105
Full Changelog: v0.0.1...v0.2.0