Skip to content

Changelog

  • Demo video — 25s silent promo embedded on the landing page (/#demo): real example output, real report screenshots, install command. Composition committed under website/video/.
  • Live Dashboard guide — routes, configuration, CORS, and reconnection replay for the live/ sub-package.
  • README trust sections — “Who is this for?” and “When NOT to use this”.
  • GOEXPERIMENT=jsonv2 documented for consumers — downstream builds fail without the flag; the error text and fix are now in the Installation guide.
  • Docs retrofitlastUpdated + “Edit this page” on every page, curated “Where to go next” sections, OG image, sibling libraries in Related Tools.
  • Changelog page was two releases stale (stopped at v0.8.0); now includes v0.9.0 and v0.10.0.
  • API reference: added RunID, SetOnEvent, Enable, Write*String, StreamEvents, MultiWriter; Config fields completed; sample schema version corrected to 0.3.0.
  • Contributing page coverage gate corrected to 94% (was 95%).
  • Landing demo terminal now matches real example output.

A minor release for integrations that must create the plugin before they know their runtime configuration. Non-breaking.

  • Plugin.SetOnEvent(fn) — sets or replaces the OnEvent callback after New(). Race-safe with recording goroutines; replaces (does not chain) any Config.OnEvent callback — compose with MultiWriter beforehand if several sinks must all keep receiving events.
  • Plugin.Enable() — turns audit logging on after construction, regardless of Config.Enabled or DO_AUDITLOG_ENABLED. Idempotent.
  • Dependency upgrades: go-sse v0.5.0, go-atomic-write v0.5.0.

A minor release introducing RunID for cross-system event correlation, MultiWriter for event fan-out, StreamEvents for callback-based NDJSON replay, SSE reconnection replay with a ring buffer, Write*String convenience methods, time-based flush for NDJSONStreamer, and full keyboard navigation across both dashboards. The health/ sub-package was extracted to its own project, go-health.

Breaking: NewRecorder and NewReport signatures gained a RunID parameter. Report schema version bumped from 0.2.0 to 0.3.0 (old reports are auto-upgraded via MigrateReport).

  • RunID branded type — 128-bit hex correlation ID, auto-generated via crypto/rand and stamped on every Event and the Report. Override via Config.RunID.
  • MultiWriter — event fan-out to multiple OnEvent callbacks simultaneously (streaming + live dashboard + custom handlers from a single recorder). Thread-safe, preserves callback order.
  • StreamEvents — callback-based NDJSON reader for replaying event files without full materialization.
  • WithFlushInterval — time-based flush option on NDJSONStreamer for bounded-latency flushing.
  • Write*String methodsWriteMermaidString, WritePlantUMLString, WriteDOTString, WriteD2String, WriteHTMLString, WriteTreeString, WriteHTMLTreeString, WriteTableString return output as a string — no io.Writer needed.
  • SSE ring-buffer replay (live/) — reconnecting clients with a Last-Event-ID header receive missed events via the configurable ReplayBufferSize.
  • Full keyboard navigation in both dashboards — skip link, ARIA tablist, ? shortcuts dialog with focus trap, / focus search, sortable column headers with aria-sort.
  • Timing deltas in DiffResultTotalBuildDurationMsDelta and TotalShutdownDurationMsDelta.
  • Exported testhelpers/ — write integration tests against the audit-log types from downstream modules.
  • Goreleaser + RELEASE.md — release automation for the auditlog CLI binary (linux/darwin amd64/arm64).

A minor release: ALPHA→BETA status promotion, exported sentinel errors, and dependency upgrades (go-atomic-write v0.4.0, go-error-family v0.10.0, go-output v0.32.0, go-sse v0.2.1). Go 1.26.5 is now the required minimum. Non-breaking.

  • Project status: ALPHA → BETA. The README.md and STABILITY.md pre-1.0 notices have been updated accordingly.
  • Exported sentinel errors — 11 previously-unexported sentinels (e.g. errContainerIDPathSepErrContainerIDPathSep) are now exported so consumers can match them with errors.Is.
  • Adopted the new go-atomic-write APIWriteFunc(path, fn, Fingerprint{}) migrated to the plain WriteFunc(path, fn) variant.
  • Go 1.26.5 required minimum across go.mod, the Nix devShell, CI, and docs.
  • DiffResult.HasChanges() — polarity reconciliation with the go-workflow-auditlog twin.

A patch release: Go version regression. Non-breaking.

  • Go 1.26.5 → 1.26.4 in go.mod, aligning with the documented Nix devShell pin and docs. (Re-bumped to 1.26.5 in v0.8.0 — see above.)

A feature release: real-time SSE live dashboard, cross-project feature ports (error classification, atomic writes, NDJSON streaming, diagram direction, table column selection), typed identifiers, ServiceInfo domain split, and go-output v0.31.1. Includes breaking changes for typed identifiers and the ServiceInfo split.

  • Real-time live dashboard (live/ sub-package): SSE streaming HTTP server with an interactive warm-amber HTML dashboard. Six endpoints with configurable route prefix. 35 tests.
  • Cross-project feature ports from go-workflow-auditlog: go-error-family classification, go-atomic-write crash-safe writes, NDJSON streaming, diagram direction option, table column selection.
  • Typed identifiers + ServiceInfo domain split (ContainerID/ScopeID/ServiceName named string types; ServiceInfo split into ServiceIdentity/ServiceLifecycle/ServiceHealth/ServiceGraph embedded structs). Breaking for composite literals.
  • GitHub Actions SHA pinning in ci.yml.

A feature release: public documentation website, Nix flake modernization, and comprehensive docs-accuracy audit. Non-breaking.

  • Public documentation website: full Astro v7 + Starlight + Tailwind v4 site deployed at do-auditlog.lars.software with 11 docs pages, landing page, Firebase hosting, and CI deploy workflow.
  • Newsletter subscription component on the project website.
  • Nix flake modernization: migrated from flake-utils/eachDefaultSystem to flake-parts with treefmt-nix for standardized formatting checks.
  • Nix build check: added build output as a check in the treefmt configuration.
  • Dependency updates: golang.org/x/sync v0.21.0 to v0.22.0, golang.org/x/sys v0.46.0 to v0.47.0, golang.org/x/term v0.44.0 to v0.45.0, nixpkgs bumped to latest.
  • TODO_LIST.md cleanup: all 127 completed items removed — they are comprehensively documented in this CHANGELOG. The file now contains only the 2 genuinely deferred items and 5 explicitly rejected proposals.
  • Docs-accuracy audit: corrected linter count (108 to 109), GraphStyle to NodeStyle (renamed in go-output v0.30.0), Go version (1.26.3 to 1.26.4 in go.mod), coverage gate threshold (95% to 94% in 4 locations to match actual CI config), MigrateReport description, RenderTableData to RenderTable, stale test/parallelism counts, release versioning pattern (v0.0.x to v0.x.y).
  • BuildFlow go-auto-upgrade revert: reverted a catastrophic automated migration to encoding/json/v2 + encoding/json/jsontext (build-constraint-excluded in Go 1.26.4) that left the project uncompilable. Documented the incident and the encoding/json/v2 exclusion policy in AGENTS.md.
  • godoclint false positive: godoclint reported “package has more than one godoc” because it counted the // templ: version: header in generated html_templ.go as a second package doc. Added a text-based exclusion rule in .golangci.yml.
  • Stale HTML golden file: testdata/golden/report.html was from a pre-formatting-normalization commit, causing TestReport_WriteHTML_GoldenFile to fail. Regenerated via UPDATE_GOLDEN=1.
  • govulncheck CI: replaced golang/govulncheck-action@v1 with direct go run golang.org/x/vuln/cmd/govulncheck@latest to avoid action version drift.

A patch release: go-output hotfix bump. Non-breaking.

  • go-output v0.30.0 to v0.30.1: picked up upstream patch fixes across all go-output modules.

A maintenance release: go-output v0.30.0 API adoption. Non-breaking.

  • go-output v0.23.x to v0.30.0: adopted the go-output v0.30.0 API across diagram and table rendering code.
    • d2.NewD2Diagram() to d2.NewDiagram().
    • output.GraphStyle to output.NodeStyle (diagram theming).
    • output.TableData to output.Table, output.RenderTableData() to output.RenderTable().

A maintenance release: daghtml SDK adoption, hook refactoring, and dependency upgrades. Non-breaking.

  • daghtml SDK adoption: replaced 306 lines of inline Sugiyama DAG JavaScript in html.templ with the go-output/daghtml SDK.
  • Hook refactoring: centralized per-hook preamble logic into hookContext helpers in hooks.go.
  • CSS token extraction: extracted inline CSS color values into named constants for maintainability.
  • Test infrastructure: centralized test fixtures and extracted shared helpers into helpers_test.go.
  • Go 1.26.4: bumped Go version and updated tooling dependencies.

A feature release: tree and table export formats, plus CLI coverage. Non-breaking.

  • Tree export: dependency DAG rendered as ASCII tree or HTML nested-list tree.
  • Table export: service summary table in 16+ formats (table, json, csv, tsv, markdown, xml, d2, yaml, html, tree, mermaid, dot, jsonl, asciidoc, toml, plantuml).
  • CLI convert subcommand extensions: tree, htmltree, and table output formats.

A feature release: D2 diagram export, go-output adoption, and Plugin API parity. Non-breaking.

  • D2 diagram export via go-output/d2.
  • Plugin-level diagram wrappers: all 9 export formats now have both Write and Export methods.
  • Diagram rendering adopted go-output: replaced the hand-rolled diagramFormatter interface with validated go-output renderers.

A milestone release: CLI tool, replay engine, NDJSON import/export, JSON Schema, CSV/TSV/DOT export.

  • Replay engine (ReplayEvents): reconstructs a Report from a flat event stream.
  • NDJSON reader (ReadEvents): line-delimited JSON events with 1 MB max-line guard.
  • Loader API (LoadReport): auto-detects JSON vs NDJSON.
  • CSV/TSV export: service data as delimited values.
  • DOT diagram export: Graphviz digraph.
  • JSON Schema: Draft 2020-12 schema generated from Go types.
  • CLI tool (cmd/auditlog): info, convert, diff, validate, schema subcommands.
  • NewReport constructor: builds a validated Report from core data.
  • Real-time event streaming via Config.OnEvent callback.
  • Removed LoadReportFromJSON (use MigrateReport).
  • Removed LoadReportFromNDJSON (use LoadReportFromReader with FormatNDJSON).
  • MigrateReport scope counting: migration now reuses countScopeNodes.
  • Filtered reports: functional options to slice by name, type, scope, event type, time range.
  • PlantUML export: component diagram format.
  • Mermaid export: flowchart format for GitHub/GitLab/Notion.
  • Health check recording: RecordHealthCheck wrapper.
  • Config.OnEvent callback.
  • Initial release.
  • Plugin with hooks for registration, invocation, shutdown.
  • JSON and NDJSON export.
  • HTML visualization with warm amber dark theme.
  • Dependency graph inference via invocation stack.
  • Scope tree tracking.
  • Service type detection (lazy, eager, transient, alias).