Grove v1.4.1
Release date: 2026-03-04
What's new
🖥️ Intelligent grove dev output formatting
grove dev now processes the running application's stdout/stderr and formats it intelligently instead of printing raw output to the terminal.
Structured JSON logs (slog / zap / zerolog)
Log lines emitted as JSON are automatically parsed and rendered as human-readable coloured output:
08:38:28 INF Booting application...
08:38:28 INF OpenTelemetry initialized service=grove-app endpoint=localhost:4318
08:38:28 ERR Failed to boot application error=failed to connect to database: ...
- Timestamp is trimmed to
HH:MM:SSfor readability - Level badges:
INF(green) ·WRN(yellow) ·ERR(red) ·DBG(gray) - Extra fields (e.g.
service=,error=) are shown inline, dimmed - Works with any structured logger that emits
level,msgandtimefields — including Go's standardslog,zapandzerolog
Panic recovery block
Panics and their goroutine stack traces are captured and rendered as a styled block instead of raw text:
PANIC
.env not found
goroutine 1 [running]
main.main()
/Users/.../cmd/api/main.go:21 +0x410
PANICbadge in red- Panic message in bold red
- Function names in gray
- File/line references dimmed
💡 Actionable hints for common startup errors
When a known error pattern is detected in the application output, Grove prints a HINT block immediately below with the exact next step to take.
.env file not found
HINT Environment file not found.
cp .env.example .env
# then edit .env with your database credentials
Triggered by: panic: .env not found or any log entry containing .env not found.
Database connection refused
HINT Cannot connect to the database.
# make sure your database is running:
docker compose up -d
# or check your DB_HOST / DB_PORT in .env
Triggered by: connection refused, dial error, failed to connect, or failed to initialize database in any log field.
Hints are shown once per rebuild — if the same error persists after the next file save, the hint appears again. No spam within the same run.
Bug fixes & polish
grove dev: application output is now indented consistently with the rest of Grove's terminal UI.grove dev: panic state and hint tracking are reset on every rebuild so stale state never carries over between runs.
Upgrade
go install github.com/caiolandgraf/grove@latest
grove -v # → v1.4.1Breaking changes
None.
Full Changelog: v1.4.0...v1.4.1