summer make:* produces code that works without hand fixes: plugins land under plugins/<vendor>/<name>, admin controllers boot with their model, a delete button and an AdminFS, and migrations made in the same second run in the order they were created.
Uploads that are not plain raster images are stored as downloads, so a public bucket or CDN no longer renders an uploaded HTML file.
The admin tells open tabs when a new version has been deployed, and reloads once by itself when a deploy removed a code chunk the tab still needed.
--help, list and shell completion no longer print plugin boot logs.
Added
Admin reload banner. boardwalk computes a build id from the embedded admin and the binary's build info (Go version, VCS revision, dependency versions), sends it as X-Summer-Build, answers {prefix}/build.json and writes it into the admin page. An open tab checks it on focus, on visibility and every five minutes, and shows a non-blocking "new version" banner with Reload and Close. A failed chunk load after a deploy reloads the page once.
Role holders. The Roles form has an Administrators tab listing who holds the role. Superusers stay hidden from editors who are not superusers.
Admin action audit log. A successful toolbar or field action run is logged with the admin id, controller, action and kind. Posted values and record contents are never logged.
attach.IsInlineContentType, the one list of types served inline (JPEG, PNG, GIF, WebP, AVIF); the uploads route uses it too.
bonfire.FlagBool and bonfire.ErrWriter; diary.Options.Args.
make:admin-controller --model, defaulting to the singular of the controller name.
make:command functions may take *backpack.App.
Changed
make:plugin acme.blog now creates plugins/acme/blog. Existing plugins/<name> layouts keep working; moving one is optional (see "Upgrading: plugins without a vendor directory" on the Scaffolding page).
Scaffolded files you edit start with //summer:make <kind> instead of a "Code generated … DO NOT EDIT" header, so linters check them. Files with the old header are still picked up.
summer new puts its starter plugin under plugins/<vendor>/<name>.
attach.Store saves Content-Disposition: attachment with every blob that is not an inline raster image. PDFs and SVGs served straight from a public bucket or CDN now download instead of opening in the browser; the built-in uploads route already behaved this way.
A delegated command that dies by a signal exits with 128+n (130 for Ctrl+C) instead of 1.
The console no longer depends on fang; help and error rendering are bonfire's own.
lagoon.AfterCommit logs a warning when work is registered after the statement's after-commit flush already ran (that work never runs).
Fixed
make:*, plugin:add and summer new no longer add a second toolchain line to a go.mod or go.work that already has one, which made Go refuse to load the workspace.
The global flags' =value forms are read correctly, invalid UTF-8 no longer slips past output sanitising, and live views keep blank lines, print errors above themselves and shut down cleanly on a signal.
A forced-colour console no longer drops records meant only for terminals.
The lagoon README's OnDatabase example registers its callback before GORM's commit, and pivot-ordered reads are documented with an explicit join.