Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.53.0 (2026-07-24)
Features
- composer-resolver: alias version-like vcs branches to x-dev (#551) (21469b6)
- composer-resolver: warn when a declared repository is unsupported (#553) (807df5b)
- login: default
bougie login(no URL) to Bougie Cloud (#550) (dda7621) - login: discover the registry endpoint via a DNS SRV record (#549) (5349f5c)
- php: render
php installoutput like uv'spython install(#552) (c953309) - tunnel: extract the wire protocol into a shared bougie-tunnel-protocol crate (#545) (102c402)
0.52.0 (2026-07-21)
Features
- add
bougie doctor— team-aware setup checkup (#529) (3ecfb20) - ci: add
bougie ci init— generate parity CI from the project (#541) (21462be) - composer-resolver: install packages from a git source (#538) (fe3dc0d)
- composer-resolver: resolve versions from a git (vcs) repository (#540) (c24272d)
- composer-resolver: typed, actionable errors for git (vcs) failures (#543) (fef1934)
- login: add
bougie login --ci— zero-secret CI login via OIDC JWT (#539) (d906d0e) - make: fold team-shared recipe tasks from the manifest (#536) (6c19493)
- services: relax dev MariaDB/MySQL durability by default (#531) (ccee3bf), closes #482
- share: make Magento base_url request-relative via an injected module (#542) (bce87b1)
Bug Fixes
- server: arm filesystem watches for projects registered while running (#534) (6bd6ec4)
- sync: stop seeding a global composer shim on PATH (#544) (f605cc5)
0.51.0 (2026-07-18)
Features
- composer-resolver: install native tar dists (#523) (f5dfc7c), closes #420
- db: snapshot-awareness guards —
db statusstaleness + reseed confirm (#526) (3858d37) - server: set opcache.revalidate_freq=0 in the dev pool (#524) (73467fa)
- services: grant mariadb tenants a scratch-database namespace (#530) (2b7abc6), closes #480
- share: add bougie-tunnel outbound relay client (#519) (884cf7a)
- share: add the
bougie sharecommand (#525) (3911ff5)
Bug Fixes
- composer: dump-autoloader inherits the installed tree's dev mode (#528) (7329b4e), closes #499
- patches: defer patches sourced from a vendor package (#527) (48fdce7), closes #421
0.50.0 (2026-07-18)
Features
- db: add
--profileto db pull/refresh — pick a data-profile snapshot (#517) (afab667) - db: add
bougie db get --source <name>from the team manifest (#509) (dd5d19e) - db: add
bougie db get— on-demand prod row-graph into the local DB (#508) (3dc4c72) - recipe: seed the DB from the team snapshot instead of setup:install (#506) (54cf613)
- telemetry: record a successful self-update as an
updateevent (#513) (a420843) - tool: let
bgx/tool runselect which bin to run (#514) (0dc61e4)
Bug Fixes
- daemon: inherit bougied's PATH for rabbitmqctl probes on non-FHS hosts (#511) (f5691fa)
- patches: accept cweagans array-of-strings patch format (#520) (8dfcc0a), closes #422
0.49.0 (2026-07-11)
Features
- db: add
bougie db pullto fetch prod-shaped snapshots from the registry (#500) (8a1d969) - db: default
bougie db pulltarget from the team manifest snapshot (#502) (4c2b11c) - db: make
bougie db seedone-shot + addbougie db refresh(#504) (37a3569) - services: multi-instance services + real multi-version mysql (integrate onto main) (#492) (33948ec)
- service: surface all catalog versions in
service catalog(#498) (fc24f27) - sync: source the repo overlay from the git-remote-keyed team manifest (#495) (80bc69d)
- telemetry: record clap parse failures as the usage outcome (#494) (52e25e5)
Bug Fixes
0.48.0 (2026-07-10)
Features
- composer: install composer-plugin package files (hooks stay skipped) (#491) (6b0f6b9)
- diagnose: failure ring with repeat-collapsing replaces the single slot (#490) (a42e49f)
Bug Fixes
0.47.0 (2026-07-09)
Features
0.46.1 (2026-07-07)
Bug Fixes
0.46.0 (2026-07-07)
Features
0.45.0 (2026-07-06)
Features
Bug Fixes
- composer-resolver: apply patches before the magento2-base deploy (#468) (7f3bdec)
- patches: declared patch files are skipped by the patches/ scan (#470) (5e91f4f)
0.44.0 (2026-07-06)
Features
- server: warn when DNS blocks *.bougie.run loopback answers (#464) (5de12e2)
- service: credentials subcommand for tenant connection info (#462) (b3aca75)
- tool: prefetch + Sigstore-verify native binaries via composer extra (#467) (5a04bfb)
Bug Fixes
- server: self-escalate hosts apply instead of hinting sudo bougie (#466) (b6ef2ac)
- tool: forward leading tool args past clap in tool-exec (#465) (a92fca7)
0.43.2 (2026-07-05)
Bug Fixes
0.43.1 (2026-07-05)
Bug Fixes
- daemon: namespace service cgroups by home so concurrent daemons don't reap each other's services (#457) (a3d18c3), closes #456
- recipe: skip rabbitmq + amqp wiring when the Amqp module is absent (#459) (dc6ac52)
- services: capture bougied stderr to state/bougied.log (#455) (2bef601)
0.43.0 (2026-07-04)
Features
0.42.0 (2026-07-04)
Features
- script: uv-style single-file PHP scripts with inline dependencies (#429) (b8ea30a)
- tool: project-aware bgx runs, derived extensions, CLI memory-limit lift (#446) (a8fd293)
0.41.0 (2026-07-04)
Features
- telemetry: close the plan's schema gaps; retire TELEMETRY_PLAN.md (#449) (bb0ead3)
- telemetry: docker images default BOUGIE_TELEMETRY=off (overridable) + Windows flush smoke (#450) (6e2665b)
- telemetry: opt-in anonymous telemetry, crash reports, and bougie diagnose (#447) (8d094f1)
- telemetry: wire the perf fields — download_bytes, cache_hit_pct, autoload_ms (#451) (acf2d23)
0.40.0 (2026-07-03)
Features
0.39.0 (2026-07-03)
Features
Bug Fixes
0.38.1 (2026-07-02)
Bug Fixes
- four tier-1 correctness/safety bugs (extraction, autoloader, cache key, license) (#432) (9a7c619)
- server: surface php-fpm startup errors and stop orphaning workers (#438) (6bd9701)
- tier-2 service-supervision correctness (grace window, restart, rotation, sandbox, flock) (#436) (d1b2abe)
0.38.0 (2026-07-02)
Features
0.37.0 (2026-07-02)
Features
- patches: apply multi-package top-level patches at the project root (#430) (33e1124)
- php-discovery: only use system PHP for one-off runs by default (#433) (a934e49)
Bug Fixes
0.36.0 (2026-06-28)
Features
0.35.1 (2026-06-28)
Bug Fixes
0.35.0 (2026-06-28)
Features
Bug Fixes
0.34.0 (2026-06-23)
Features
- services: show service binding in
services statustext output (#412) (d68ddec) - services: warn on
upwhen a service's TCP port is already in use (#413) (1c520f6)
0.33.0 (2026-06-21)
Features
- recipe: add localdev task to disable 2FA and set indexers realtime (#409) (796e187)
- services: integrate mailpit SMTP test server (#408) (54f5682)
- services: warn on
upwhen env.php DB user != provisioned tenant (#411) (85f3c6c)
Bug Fixes
0.32.2 (2026-06-20)
Bug Fixes
- composer-resolver: accept
{"packagist": false}BC alias to disable Packagist (#402) (5940298) - composer-resolver: key repo auth by origin incl. port (#404) (01e8e9b)
- daemon: run service health probe off the Supervisor mutex (#405) (9db5d61), closes #219
0.32.1 (2026-06-19)
Bug Fixes
0.32.0 (2026-06-19)
Features
0.31.1 (2026-06-18)
Bug Fixes
0.31.0 (2026-06-18)
Features
0.30.0 (2026-06-17)
Features
- composer-resolver: support Composer
type: pathrepositories (#382) (c4fbb7f) - init: scaffold
--starter laravelvia the laravel installer (#383) (7fa7c08) - patches: native cweagans/composer-patches reimplementation (#384) (85a3ec9)
- starter: prompt for per-user placeholder tokens (#385) (e236910)
- top-level
bougie projects+ uv-style--resolution(#381) (09b0d5c)
Bug Fixes
0.29.0 (2026-06-13)
⚠ BREAKING CHANGES
- cli:
bougie makewith no task argument now lists the available recipe tasks instead of running thestarttask. Usebougie start(orbougie make start) to bring the project up.
Features
- cli: reorganize the CLI around start/stop, group --help (#378) (a0c629b)
- tool: forward bgx/tool-run args after the package without
--(#376) (41a99b4)
Bug Fixes
- autoloader: emit root package autoload-dev when dev deps are included (#380) (07eb2a1)
- sync: re-resolve stale extensions after the active interpreter changes (#379) (4b24785)
0.28.0 (2026-06-13)
Features
- node: Node.js toolchain via nodejs.org + run PATH overlay (#371) (72b0e4d)
- paths: move project toolchain into vendor/bougie; durable state under $BOUGIE_HOME (#372) (2c92332)
Bug Fixes
- dist: make installers prefer the origin mirror (hosting=[simple,github]) (#374) (e627774)
- format: pin wick 0.2.3 (#375) (55c73dc)
0.27.0 (2026-06-13)
Features
- format: add
bougie format, theuv formatmodel for PHP (#368) (2b0e567) - run: add
--phpto select the interpreter for one run (#366) (bf47d59)
Bug Fixes
0.26.0 (2026-06-13)
Features
- cli: promote
services projectsto top-levelbougie projects(#365) (da52e1d) - server: run the dev server against a system PHP (#363) (9890626)
0.25.2 (2026-06-12)
Bug Fixes
0.25.1 (2026-06-12)
Bug Fixes
- daemon: set TMPDIR for opensearch so bash heredocs work under macOS sandbox (#358) (40664e5)
- dist: build linux-gnu at glibc 2.17 via custom in-container job (#357) (6188e00)
- self-update: fall back to newest release with assets for the target (#356) (47a1df2)
0.25.0 (2026-06-12)
⚠ BREAKING CHANGES
- composer: bougie no longer bundles or runs the Composer phar. The
composerargv[0] shim now dispatches to bougie's native subcommands, socomposer install(recipes, PATH) runs the native installer. Unrecognized subcommands (create-project, archive, bump, …) error with a pointer tobougie tool install composer/composer— the deliberate escape hatch. Removed: bougie-composer fetch/request/resolve modules + install_composer; paths.composer_phar; the resolved-composer state file; the[composer] versionconfig field; sync's phar fetch and SyncResult.composer_{version,path}.
Features
- cli: add
bougie lock— minimal lockfile refresh (#351) (ca6056a) - cli: native uv-style verbs — add, remove, tree, outdated (#350) (b74126f)
- composer: native uv-pip Composer surface; drop the phar (#348) (0d491f6)
- dist: build linux-gnu against glibc 2.17 in manylinux2014 (#355) (4ce19eb)
- php: system PHP support (uv's system-Python model) (#354) (32eef2e)
Bug Fixes
0.24.0 (2026-06-10)
Features
Performance Improvements
0.23.1 (2026-06-08)
Bug Fixes
0.23.0 (2026-06-07)
Features
Bug Fixes
0.22.0 (2026-06-07)
Features
- services: stream stopping/starting progress on restart (#335) (9bebd13)
- services: write PhpStorm data source on
bougie up(#336) (126fec6)
Bug Fixes
- autoloader: exclude PSR-fallback volatile roots from the classmap (#332) (346463b)
- installer: don't flash a progress bar when baseline extensions are all installed (#334) (630a568)
- self-update: don't update to a release with no assets yet (#331) (9664f49)
0.21.0 (2026-06-07)
Features
- composer: distinguish -w and -W in partial update (#330) (515a562)
- composer: partial update (composer update <packages>) (#328) (bcf4ecd)
0.20.0 (2026-06-07)
Features
0.19.0 (2026-06-06)
Features
0.18.1 (2026-06-05)
Bug Fixes
0.18.0 (2026-06-05)
Features
- server: redesign
bougie serveras a project verb over the shared daemon (#318) (131a4d5) - services: add
bougie services projects(list provisioned tenants) +purge(#320) (c66de18)
Bug Fixes
- autoloader: widen PackageSorter weight to i64 to match Composer (#319) (75fcb2f)
- cli: make
bgx --versionwork (#311) (747a54d) - composer-resolver: don't let a replaced original's back-edge break the solve (#317) (abade97)
- sandbox: enforce ProtectHome/inaccessible/read-only paths on Linux (#208) (#316) (ff885a5)
- services: derive tenant from project dir, not composer name, to stop collisions (#321) (32959c3)
0.17.0 (2026-06-03)
Features
0.16.0 (2026-06-03)
Features
Bug Fixes
- composer: warn instead of erroring on stale composer.lock (#304) (0a9bfcf)
- fetch: build the step bar with its draw target to stop a stranded frame (#303) (bc97eb8)
- recipe: pin bougie on PATH for check scripts (#301) (addbd4e)
0.15.0 (2026-06-03)
Features
- daemon: graceful shutdown + opensearch jdk runtime dep (#297) (a21a051)
- installer: count progress for baseline extension install (#296) (045fee6)
- SIGQUIT activity dump + shared resolver metadata cache (#295) (fc7c3cb)
Bug Fixes
0.14.0 (2026-06-02)
Features
- server: default web (php-fpm) memory_limit to 1G (#294) (cf61811)
- shim: default CLI php to memory_limit=-1 (FPM unchanged) (#292) (94a04b5)
Bug Fixes
0.13.0 (2026-06-02)
Features
Bug Fixes
- daemon: anchor bougied cwd so provisioner probes survive a deleted launch dir (#289) (a30a83c)
- daemon: derive mariadb passwords so they survive down/purge/re-provision (#287) (4eee91f)
- daemon: derive rabbitmq passwords too (stable across re-provision) (#290) (98d1025)
- server: keep generated/ classmap entries fresh instead of dangling (#288) (dcbc3be)
0.12.0 (2026-06-02)
⚠ BREAKING CHANGES
- composer:
bougie composer {fetch,uninstall,list,find,pin,dir,upgrade}are removed. Pin the composer version via bougie.toml instead.
Features
- composer: trim surface to native ops; make Composer a default project-aware tool (#277) (970c751)
- daemon: cgroup-v2 supervision backend — reap daemonized escapees (e.g. epmd) (#283) (535e198)
- init: add --name flag and a new <directory> command (#284) (e184eb9)
- self-update: only update a binary bougie's installer placed (#279) (f929f26)
Bug Fixes
- babysit: SIGKILL the service via PR_SET_PDEATHSIG if the babysit dies abnormally (#282) (df48680)
- backend: clearer error for an unsupported host target (musl/Alpine) (#274) (9c789cb)
- release: bump-minor-pre-major so pre-1.0 breaking changes stay pre-major (#280) (fa36828)
- server: serve on-disk static assets before the front-controller rewrite (#281) (43e4cd5)
0.11.0 (2026-06-01)
Features
0.10.1 (2026-06-01)
Bug Fixes
- daemon,recipe: restore services on daemon restart; pin recipe bougie to current exe (#267) (0988460)
- daemon: plan the whole tool tree up front so the download bar total is accurate (#271) (819c1bc)
- fetch: add stall timeout, retries with backoff, and extraction progress (#270) (8245965)
- resolver: honor root composer.json wildcard
replace(#269) (e14720d)
0.10.0 (2026-05-31)
Features
0.9.0 (2026-05-31)
Features
0.8.3 (2026-05-31)
Bug Fixes
0.8.2 (2026-05-31)
Bug Fixes
- release: let release-please own the whole release; dist only uploads (#260) (d404a11)
- release: suppress the candidate PR on release-merge runs (#258) (ed025ce)
0.8.1 (2026-05-31)
Bug Fixes
0.8.0 (2026-05-30)
Features
- installers: native Composer install-plugin support (Magento, composer/installers, Laravel) (#248) (ebdf9c3)
Bug Fixes
- recipe: Mage-OS one-command bring-up — detect mage-os, redis-over-socket, lock re-stamp (#251) (4d29004)
- release: push the release tag (draft Releases don't auto-tag) (#249) (469ee13)
0.7.0 (2026-05-30)
Features
- cli: uv-style --version with git sha, date, and target triple (#243) (06293c3)
- self: implement bougie self update (#244) (3f0f200)
- sync: one-command install — create lock + vendor, learn PHP/exts from the lock (#241) (7bd6a21)
Bug Fixes
- release: jq key-access syntax for release-please-manifest (#242) (7c0a5f4)
- release: let release-please own the draft GitHub Release (#245) (6b8ce18)
0.6.4 (2026-05-30)
Bug Fixes
- release: let dist own the GitHub Release; release-please pushes tag only (#238) (55ef8e5)
- resolve whole-project review findings (#207–#231) (#234) (4f873e9)
0.6.3 (2026-05-30)
Bug Fixes
- composer: Mage-OS resolve fixes — caret ^0, self-replace, fetch retry (#232) (96cef9e)
- release: make release-please actually rewrite Cargo.toml (#237) (ca40f63)
- release: unblock musl + windows dist targets (#233) (87705a9)
[Unreleased]
0.4.0 - 2026-05-16
Added
- (up) surface resolved tool dependencies in json-v1
- (daemon) warn on catalog vs requires_tools drift
- (daemon) recursively install requires_tools[] inner tools
- (daemon) walk closure[] when auto-fetching tool tarballs
- (index) add requires_tools to manifest schema
- (services) auto-detect supervised server docroot
- (cli) [breaking] promote
services up/services downto top-levelup/down - (services) auto-fetch service tarballs on first
services up - (services) babysit shim for crash-safe process-group supervision
- (services) rabbitmq provisioner (Phase 10)
- (services) bougied self-restart on version mismatch (Phase 9)
- (services) bougie server as a managed service
- (services) opensearch provisioner with per-tenant index templates
- (services) mariadb provisioner + integration tests against real binary
- (services) log rotation +
bougie services logs [-f] [-n N] - (services) inject BOUGIE_SERVICE_* env into
bougie run - (services) redis provisioner + service.{up,down,status} IPC + CLI
- (daemon) supervisor state machine, sandbox compilation, tenants ledger
- (services) offline subcommands — add/remove/list/catalog
- (services) built-in catalog + [services] config schema
- (services) bougie services daemon
- (daemon) bougied entry point + JSON IPC dispatcher
- (daemon) vendor sandbox-run + wire bougied shim role and paths
Fixed
- (services) re-sync rabbitmq password to broker after
bougie down(#31) - (babysit) install SIGTERM handler before spawning the service
- (opensearch) pin OPENSEARCH_JAVA_HOME + detect early child exit in health probe
- (services/mariadb) pass --no-defaults to every mariadb invocation
Other
- (index) drop RequiresTool.manifest_sha256
- [breaking] Debian-faithful baseline + --bare / --without flags
- (services) convert opensearch pre_start file I/O to tokio::fs
- (services) make opensearch provisioner async
- Merge remote-tracking branch 'origin/main' into feat/services-babysit
- Set default binary
- Merge pull request #14 from cresset-tools/feat/services-opensearch
- (opensearch) dump opensearch.log on services-up failure
- (services/mariadb) pick per-target tarball for the test fixture
- fix macOS-specific failures surfaced in PR #8 validation
- (services) end-to-end redis up/down/status integration tests
- (services) integration tests for bougied auto-spawn + IPC roundtrip
- [breaking] relicense from Apache-2.0 OR MIT to EUPL-1.2
0.3.0 - 2026-05-14
Added
- (composer) add lts channel as a version request
- (cli) unify list commands with shared coloured renderer
Other
- Merge pull request #7 from cresset-tools/worktree-unified-list
0.2.0 - 2026-05-14
Added
- (server) colourise text-mode request log on TTY stderr
Fixed
- (ci) switch release-plz to git_only mode
Other
- (release-plz) authenticate via GitHub App instead of PR_BOT PAT
- refresh lockfile and bump sha2, md-5, anstream to latest majors
- prune stale per-project runtime dirs at startup + shutdown
- make
ext add,run --xdebug, and server routing all work - pre-download xdebug into the store without enabling it
- split conf.d into conf.d-debug; auto-activate xdebug on first request
- make project arg optional, auto-detect from composer.json
- warn on missing web root / missing index at add + run
- filter notify Access events in watcher to fix reload loop
- sudo-aware server.toml resolution
- canonicalize project path on
server add - phase 6 — control socket + live
server list - phase 5 — /etc/hosts auto-sync via manage_etc_hosts flag
- phase 4 — pool lifecycle (idle-out, LRU cap, watch reload)
- phase 3 — per-request xdebug pool routing
- phase 2 — FastCGI dispatch to per-project php-fpm pools
- phase 1 — foreground HTTP server with static-file dispatch
- phase 0 — config schema + add/remove/list helpers
- phased build order for bougie server
- one aggregate progress bar per orchestrator call
- strip storeName prefix on closure tarballs, link store/ peer
- walk manifest closure + fix conf.d prefix ordering
- Improve wording
- auto-install composer.json's require.ext-* (CLI.md §3.3 step 4(c))
- install and auto-enable a default extension set per CLI.md §3.5.1.1
- ext list: --only-available keeps the
installedmarker visible - honor config.sort-packages when editing require maps
- ext add/remove: drop composer subprocess; do the work ourselves
- manifest LoadDirective + install_extension + conf.d fragment writer
- lockfile + composer.json IO and editing primitives
- byte-exact PHP json_encode + Locker::getContentHash port
- add unzip role so composer's ZipDownloader prefers our extractor
- php list: colorize output uv-style, honoring NO_COLOR and pagers
- release v0.1.0
- use PR_BOT PAT for release-plz so it can open PRs and fan out
0.1.0 - 2026-05-10
Other
- use PR_BOT PAT for release-plz so it can open PRs and fan out
- add release-plz for tag + GitHub release automation
- drop the release-mode matrix axis
- run cargo test across {ubuntu, macos} ×
- gate BOUGIE_TRUST_ROOT_PATH on a Cargo feature, not debug_assertions
- phase4 — pass
fetch_roota verifier factory - ext list: implement filter flags and fix status taxonomy
- php list: implement filter flags
- php install/uninstall: accept multiple targets
- document every flag and render errors uv-style
- pin PHP_BINARY so composer @php scripts find the right php
- composer list: show all channel versions, paged on a tty
- bougie-managed phars with project-shim integration
- build verifier lazily in fetch_root
- ext list: show installed (.so on disk) and available (index) extensions
- strip leading
install/prefix when extracting tarballs - locate project root from env, argv[0] path, or cwd ancestors
- make
--optional, auto-sync, export BOUGIE_PROJECT_ROOT - follow versioned section URLs from the snapshot root
- switch to lean section + fat manifest wire schema
- anchor relative manifest URLs at the actual section file path
- Sigstore Bundle verification against pinned signer identity
- structured variants with operation + url + hint context
- point repository at cresset-tools/bougie
- point default index URL at index.bougie.tools
- phase 8: remaining commands
- phase 7: bougie sync end-to-end
- phase 6: blob fetch + bougie php install/uninstall/list/find
- phase 5: resolver + locks
- phase 4: index protocol + signature verification
- phase 3: config + request grammar + bougie init
- phase 2: trivial commands + shim dispatch
- phase 1: split into lib + foundation modules
- rework help text + magenta clap color theme
- tighten subcommand help text
- initial scaffolding