Changelog¶
All notable changes to Burrow are documented here. This project uses Conventional Commits.
Unreleased¶
Breaking Changes¶
- Template engine migration: Replaced Templ with Go's standard
html/template. Alltempl.Componenttypes are replaced bytemplate.HTML. Apps now contribute templates viaHasTemplates, static functions viaHasFuncMap, and request-scoped functions viaHasRequestFuncMap. - LayoutFunc signature changed:
func(title string, content templ.Component) templ.Componentis nowfunc(w http.ResponseWriter, r *http.Request, code int, content template.HTML, data map[string]any) error. - NavItem.Icon type changed:
templ.Componentis nowtemplate.HTML. burrow.Render()replaced byburrow.RenderTemplate(): Handlers now callRenderTemplate(w, r, statusCode, "app/template", data)instead ofRender(w, r, statusCode, component).
Added¶
contrib/htmx— dedicated contrib app with request detection and response helpers, inspired by django-htmx.contrib/jobs— in-process SQLite-backed job queue with worker pool, retry logic, and admin UI via ModelAdmin.contrib/uploads— pluggable file upload storage with local filesystem backend and content-hashed serving.contrib/ratelimit— per-client rate limiting middleware using token bucket algorithm.contrib/authmail— pluggable email renderer interface with SMTP implementation (authmail/smtpmail).contrib/admin/modeladmin— generic Django-style CRUD admin with list fields, filters, search, row actions, and i18n.HasShutdowninterface for graceful app cleanup (called in reverse registration order).HasTemplatesinterface for apps to contribute.htmltemplate files.HasFuncMapinterface for apps to contribute static template functions.HasRequestFuncMapinterface for apps to contribute request-scoped template functions.- Auto-sorting of apps by
HasDependenciesdeclarations inNewServer. - Form binding with validation via
burrow.Bind()andburrow.Validate(). - i18n-aware validation error translation via
i18n.TranslateValidationErrors(). - Graceful restart via SIGHUP using tableflip.
- TLS/ACME support for standalone deployment.
- Dark mode toggle with theme persistence in the Bootstrap app.
- Offset and cursor-based pagination helpers.
- Flash messages via
contrib/messageswith Bootstrap alert templates.
Changed¶
- Migrated all contrib apps from Templ to
html/template. - Bootstrap Icons are now inline SVG functions returning
template.HTMLinstead oftempl.Component. - Admin panel uses HTMX with explicit
hx-get/hx-targetinstead ofhx-boost. - Replaced
Registry.Bootstrap()withRegistry.RegisterAll(). - Options pattern adopted for
auth.New(),admin.New(),jobs.New(),uploads.New(), andratelimit.New(). - Unified auth context helpers to
context.Contextpattern.
Changed¶
- SQLite connection defaults aligned with dj-lite recommendations: added
busy_timeout=5000,temp_store=MEMORY,mmap_size=128MB,journal_size_limit=26MB,cache_size=2000, andIMMEDIATEtransaction mode for better production concurrency.
Fixed¶
- Auth pages now render with a minimal layout instead of full app chrome.
- WebAuthn cleanup goroutine uses context-based cancellation.
buildManifesterrors are propagated instead of silently discarded.Seedis called onSeedableapps during server bootstrap.
Documentation¶
- Rewritten project description (README and docs index) with clear positioning, target audience, and API-only disclaimer.
- Simplified Quick Start to a minimal app without layout, session, or healthcheck.
- New guides: Database, TLS, Routing, Contributing.
- New reference page: Core Functions documenting all exported functions and types.
- Added code examples to every interface in the Core Interfaces reference.
- Added dependency declarations (
Depends on:) to all contrib app docs. - Reorganized guide sidebar into Core, Templates & UI, Advanced, and Deployment groups.
- Added copyright footer to documentation site.
- Fixed broken cross-links and removed redundant content across docs.
- Expanded auth Renderer and Auth Layout documentation with usage examples.
2026-02-19 — Initial Release¶
- App-based architecture with
burrow.Appinterface and optional interfaces. - Pure Go SQLite via
modernc.org/sqlite(no CGO required). - Per-app SQL migration runner with
_migrationstracking table. - Chi v5 router integration with
burrow.HandlerFuncerror-returning handlers. - Cookie-based sessions via
gorilla/sessions. - WebAuthn/passkey authentication with recovery codes.
- CSRF protection via
gorilla/csrf. - i18n with Accept-Language detection and
go-i18ntranslations. - Content-hashed static file serving.
- Admin panel coordinator.
- CLI configuration via
urfave/cliwith flag, env var, and TOML support. - CSS-agnostic layout system.