← All changes

SummerCMS 0.5.3

v0.5.33 min readFramework

Highlights

  • 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.
Subscribe via RSS