·
3 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
project-boost:sync now retires laravel/boost's boost.json once it has taken over what that file describes — the step that stops herd link from silently re-seeding guidance behind this package. Additive; no migration.
Action required: this release requires sandermuller/boost-core ^1.6 (up from ^1.0).
composer require --dev "sandermuller/project-boost-laravel:^1.3" -WAdded
project-boost:syncretireslaravel/boost'sboost.jsonafter a successful sync. The file is laravel/boost's install state, read byboost:installandboost:updateand nothing else — not the MCP server (boost:mcpstarts a server the ServiceProvider registers unconditionally), not this package (it re-derives fromvendor/laravel/boost/.ai/every run), not boost-core. Retiring it is what stops the automatic re-seed:boost:updatebails out when the file is missing, andherd linkrunsphp artisan boost:updateon its own whenevervendor/laravel/boostis present (Herd's bundled valet CLI), which otherwise rewrites the guidance files inside laravel/boost's marker and reinstalls its skill directories behind this command's back.- Adopt before retire. The file's
agentslist is the only record of what was picked in laravel/boost's installer, and nothing imports it automatically. While it names an agent the project's own config does not declare, the file stays put and the sync says which agent and how to adopt it —vendor/bin/boost installpre-selects exactly that set. An agent boost-core has no case for (antigravity,factory,grok_build,pi,zed) can never be adopted, so it never blocks; the sync names it instead, because nothing this package emits reaches that agent and retiring the file ends laravel/boost's updates for it too. - Archived, not deleted. The file moves to
.boost/boost.json.retired(or.config/boost/boost.json.retiredwhen the project uses that config layout — the layout decides, not whichever directory happens to exist). Both directories are gitignored by boost-core and skipped by its stale-file sweep, so the archive survives later syncs and never dirties the working tree. An existing archive is never overwritten: identical content means the source is simply dropped, and different content is archived alongside under a content-addressed name. Restore from there, or runphp artisan boost:installto regenerate. - Only on a real takeover. A sync that injected no laravel/boost skills or guidelines (laravel/boost export-ignores its
.aipayload, so a prefer-dist install has none), or that skipped a guidance path because it is a live symlink, has taken over nothing — neither case is an error, so the sync still exits0, and in both the file is kept with the reason printed. - Further guards: with gitignore management off there is no state directory to archive into, so the file is kept rather than parked somewhere untracked; a symlink anywhere on the destination path is refused (
rename()would follow it out of the project); an archive name already taken by different content is refused rather than overwritten; aboost.jsonrecording no agent list is not laravel/boost's live install state — another tool's file, or oneboost:updatealready refuses to act on — and is kept; a failed sync keeps the file, since laravel/boost's own path stays the fallback; a failed archive leaves the original in place. --dry-runreportswould-archiveand moves nothing.--keep-boost-jsonopts out entirely.
- Adopt before retire. The file's
Changed
- Requires
sandermuller/boost-core ^1.6(was^1.0). Two behaviours the retirement flow is documented against landed in1.6.0: the stale-file sweep is manifest-gated, so the.boost/boost.json.retiredarchive survives later syncs instead of being reaped as unowned; andboost installpre-selects the agents recorded in laravel/boost'sboost.json, which is the adoption step this command waits for before retiring the file.
--keep-boost-json joins the frozen CLI surface in PUBLIC_API.md from this release. Validated across the CI matrix (PHP 8.3/8.4 × Laravel 12/13, prefer-lowest and prefer-stable).
Full Changelog: 1.2.0...1.3.0