Changelog
All notable changes to laravel-worktree will be documented in this file.
1.5.0 - 2026-08-01
What's Changed
worktree:teardownnow also drops the{name}_test_{token}databases parallel test runs derived from the worktree's databases, covering both paratest worker indexes and mozex/laravel-test-lanes lanes, so they no longer outlive the worktree. Only token-shaped suffixes (digits, orlaneplus digits) qualify, which keeps a sibling worktree whose slug happens to extend the prefix untouched, and every discovered name passes the same main-database guard as the worktree's own databases.- Database drops are now keyed by server and name together, so two connections that provision the same database name on different servers both get their database dropped instead of one being quietly left behind.
Full Changelog: 1.4.0...1.5.0
1.4.0 - 2026-07-20
What's Changed
- Added an
env.replaceoption that rewrites env values per worktree, such as a Redis or cache prefix. Each entry maps a key to a template built from the worktree's tokens and the key's current value, so the value carries the worktree's slug without a hardcoded handler for it. The rewrites apply to the copied.envand to every file inenv.copy. - Added isolation for more than one database connection. List each connection under
database.connections, and every worktree gets its own database on all of them, application and test, created on setup and dropped on teardown. Teardown guards each connection against its own database in the main.env. This replaces the singledatabase.nameanddatabase.testsettings. - Added an opt-in
dependenciesoption that copiesvendorandnode_modulesfrom the main repository instead of installing them, as long as the worktree's lock file matches. A warm copy ofvendorran about five times faster thancomposer installin testing. A branch that changed its lock installs normally, andnpm cinow lives in this block rather than insteps. - A published config file is now merged with the package defaults one level deeper, so a config written before one of these options existed still receives it instead of losing the whole block.
Full Changelog: 1.3.1...1.4.0
1.3.1 - 2026-07-16
What's Changed
- The config defaults for
herdanddatabase.migrateare now plain strings instead of enum values. A published config kept the enum imports, and on a production deploy without dev dependencies those classes do not exist, so loading the configuration failed.
Full Changelog: 1.3.0...1.3.1
1.3.0 - 2026-07-16
What's Changed
- Added
worktree:list, which shows every worktree with its branch, path, URL, and database. - Added an
env.copyoption that copies extra gitignored env files (.env.testingby default) into the worktree, with the host rewritten. worktree:setupnow resumes a worktree that already exists for the branch, so a failed provisioning step no longer forces a full teardown.- Worktree sites are linked in Herd before being secured. A worktree in a nested path such as
.worktreesused to get a certificate for a site that never answered. - Every command now refuses to run from inside a linked worktree and points back at the main repository.
- Fixed the test database being created and dropped on the app's default connection instead of the one
phpunit.xmlpins. A project that develops on SQLite and tests against MySQL used to fail setup outright. - Teardown refuses
--prand--intoon a detached worktree, database names are capped at the server's identifier limit, failed commands report their stdout when stderr is empty, andexport KEY=valueenv lines are recognized when isolating child processes.
Full Changelog: 1.2.1...1.3.0
1.2.1 - 2026-07-16
What's Changed
- Depend on the split
illuminate/*components (console, contracts, filesystem, process, support) instead oflaravel/framework. This keeps the package clear of the framework's security advisories while still supporting Laravel 11, 12, and 13.
Full Changelog: 1.2.0...1.2.1
1.2.0 - 2026-07-16
What's Changed
- The default Node step is now
npm ciinstead ofnpm install. Laravel'spackage.jsonships without aname, sonpm installrewrote the trackedpackage-lock.jsonwith the worktree's own directory name;npm ciinstalls from the lockfile and leaves it untouched. - Reworked the Warp tab configs with tab titles and clearer names (Create, Resume, Finish).
Full Changelog: 1.1.0...1.2.0
1.1.0 - 2026-07-16
What's Changed
- Fixed a blank or quoted branch name creating a
repo-''worktree. A blank branch now auto-generates a name, as the docs always said it would. - Added
--print-pathtoworktree:setup, which prints only the resolved worktree path so a shell button cancdstraight into the new worktree. - Fixed the Warp terminal config so leaving the branch blank works and drops you into the worktree, generated name and all.
Full Changelog: 1.0.0...1.1.0
1.0.0 - 2026-07-16
What's Changed
- Initial Release
Full Changelog: https://github.com/mozex/laravel-worktree/commits/1.0.0