Skip to content

v1.3.0

Latest

Choose a tag to compare

@SanderMuller SanderMuller released this 15 Aug 15:20
· 3 commits to main since this release
Immutable release. Only release title and notes can be modified.
f7555f9

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" -W

Added

  • project-boost:sync retires laravel/boost's boost.json after a successful sync. The file is laravel/boost's install state, read by boost:install and boost:update and nothing else — not the MCP server (boost:mcp starts a server the ServiceProvider registers unconditionally), not this package (it re-derives from vendor/laravel/boost/.ai/ every run), not boost-core. Retiring it is what stops the automatic re-seed: boost:update bails out when the file is missing, and herd link runs php artisan boost:update on its own whenever vendor/laravel/boost is 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 agents list 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 install pre-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.retired when 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 run php artisan boost:install to regenerate.
    • Only on a real takeover. A sync that injected no laravel/boost skills or guidelines (laravel/boost export-ignores its .ai payload, 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 exits 0, 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; a boost.json recording no agent list is not laravel/boost's live install state — another tool's file, or one boost:update already 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-run reports would-archive and moves nothing. --keep-boost-json opts out entirely.

Changed

  • Requires sandermuller/boost-core ^1.6 (was ^1.0). Two behaviours the retirement flow is documented against landed in 1.6.0: the stale-file sweep is manifest-gated, so the .boost/boost.json.retired archive survives later syncs instead of being reaped as unowned; and boost install pre-selects the agents recorded in laravel/boost's boost.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