# Changelog
## Version 0.7.0 (2026-01-30)
* Add `bob list` command for querying package status.
* Add `environment` config section for controlling the sandbox process
environment. Set up default strict environments to avoid host pollution.
* Add `ifset` conditional field on sandbox actions, with `{var}` variable
substitution. Used by example configs to automatically create `build_user`
home directories.
* Add `read_pkgpaths(file)` Lua function for loading package lists from files.
* Unify sandbox lifecycle. The scan sandbox is now reused for subsequent
builds, avoiding an unnecessary destroy/create cycle between scan and build.
* Defer dependency discovery for limited scans, only scanning dependency
pkgpaths when resolution determines they are needed. This matches pbulk
behaviour, and can slightly reduce the number of packages that are built.
* Overhaul sandbox discovery and cleanup. More reliable detection of old or
incomplete sandboxes.
* Improve macOS sandbox support: switch to `diskutil unmount` with retry logic,
per-mount process killing with system daemon filtering, and `mdns-listener`
script for DNS resolution inside chroots.
* Add `bindfs` sandbox config option for specifying the bindfs binary path.
* Improve error messages throughout, with full error chain context for sandbox
operations and clean single-line error display.
* Add `bob_sandbox_path` environment variable for non-chroot `cmd` actions.
* Rename `bob util import-pscan` to `bob util import-scan`, which now supports
both `pscan` and `presolve` files from pbulk.
* Enable crossterm `use-dev-tty`, fixing TUI issues with piped input.
## Version 0.6.0 (2026-01-20)
* Overhaul pkgsrc variable configuration. Variables are fetched directly via
`show-vars` at the start of a run, leaving `mk.conf` to be the single source
of truth. Rename `scanenv` to `cachevars`, which is now simply a list of
variable names to fetch and cache.
* Collapse idle workers in the TUI, leaving more vertical space for active
build logs. More efficient TUI updates and refresh handling.
* Add `rebuild -a` flag to rebuild all packages, clearing any cached build
results but reusing the scan and dependency resolution.
* Add `pkg_summary.gz` generation with `FILE_CKSUM` support.
* Add `chroot` flag to `cmd` actions to run commands inside sandbox. Remove
`cwd` argument, the semantics were too confusing with too much magic.
* Parallel sandbox creation/destruction, and parallel package discovery during
full scans.
* Execute bmake directly rather than via shell for scan phase.
* Overhaul logging: use `log_level` in config, override with `RUST_LOG`.
Improve many output messages and ensure consistency.
* Improve sandbox shutdown and cleanup reliability, especially during
interruptions.
* `bob clean` now removes the entire log directory, `bob clean -l` removes just
the package log directories.
* `bob db` no longer prints column headers.
* Add `bob report` command. HTML reports are no longer generated
automatically.
* Default `tar` to "tar" in PATH, only required when bootstrap is enabled.
## Version 0.5.0 (2026-01-08)
* Add `bob db` command for arbitrary SQL queries.
* Improve scan performance and pbulk compatibility with regards to resolver
failures. Add `strict_scan` to configure whether resolver errors are fatal.
* Allow simpler configs if running in scan-only mode. Improve error messages
for config issues.
* Remove stats module, statistics are now recorded to the database.
* Various report and TUI fixes.
## Version 0.4.0 (2026-01-03)
* Rewrite pkg-build and pkg-up-to-date scripts in native Rust to improve
reliability. Fixes various issues with exit status not being tracked
correctly.
* Overhaul database architecture and improve scan caching, including fast
path for completed full scans and better support for resuming builds.
* Add `rebuild` command and pkgpath argument support for `build`.
* Various bug fixes plus improvements to the log viewer and report.
## Version 0.3.0 (2026-01-01)
* Package resolver is now 100% bug-for-bug compatible with pbulk, generating
identical `presolve` files. Bob may now be suitable for building a full
pkgsrc tree, though this is currently untested.
* Add database support for caching scan and build results. Interrupted
operations will now resume from where they left off.
* Add `bob clean` command to clear database state ready for building against
an updated pkgsrc.
* Add and move various utility commands to under `bob util ...` subcommand.
* Allow `bob init` to run on an existing empty directory.
* Fix log handling when retrying builds.
## Version 0.2.0 (2025-12-24)
* Support full pkgsrc tree scans. Various fixes and enhancements to scans,
including signal handling support, resolve logs, and a new `strict_scan`
option.
* Add stats module for performance analysis.
* Add new `scanenv` configuration table. Useful for inserting environment
variables that are calculated before `mk.conf` is loaded and avoid expensive
forks for every package scan.
## Version 0.1.0 (2025-12-22)
* First version that is considered to be minimally useful for users to start
building packages. Sandbox support for NetBSD, Linux, illumos, and macOS.