Releases: gocov/gocov
Release list
v0.12.0
Upgrading
Connected workspaces need one reconnect. GOCOV_SECRET_KEY is now hex-decoded straight into the AES-256 key instead of being hashed, so grant refresh tokens sealed by an earlier build no longer open. The variable's required shape is unchanged (64 hex characters) — no config edit is needed. On first boot each connected workspace loads with its grant marked broken, uploads keep succeeding with status/comment pushes skipped, and the workspace settings page offers a reconnect that re-seals under the new derivation. GitHub App connections are unaffected.
The server image is distroless. The runtime stage is now gcr.io/distroless/static-debian13:nonroot: no shell, no BusyBox, no apk. Two things follow from that if you run your own compose file — healthchecks must call gocov-server healthcheck rather than wget, and the container user is uid 65532, so a mounted github-app.pem has to be readable by it (see deploy/README.md).
Highlights
- Dashboard v2 — workspace switcher, statement-weighted rollups, a "needs attention" list for failing gates and stale feeds, and 30-day sparklines with client-side search, filter and sort.
- Repo detail v2 + a repo settings page — a gate verdict card that states the decision in prose, a trend with the gate minimum drawn as a threshold line, a "where coverage is missing" ranking, and a members-only settings page for the base branch, per-repo gates, the upload token, the badge embed and repo removal.
- PR and feature-branch uploads baseline against the default branch — before → after and the touched-files view now appear on the builds that need them most, instead of falling back to a flat file list.
- A styled 404 page for browser navigations; API clients keep the plain-text 404.
- Two open redirects closed in the post-login
nextparameter:/%09/evil.exampleand/./\evil.exampleboth resolved off-origin in a browser. The target is now parsed and rejected unless it carries no authority of its own. - Configuration is one tagged struct per binary (
internal/config), validated before the database is touched, with a test that fails the build ifdocs/configuration.mddrifts from it. - The coverage logic left the HTTP package —
internal/coreowns the gate, the merge, the forge report and the connection upkeep, and imports neithernet/httpnorhtml/template. - The README is a docs/ tree, and the GitHub path leads with
gocov/gocov-action@v1rather thango run, so teams without a Go toolchain get a setup path that works.
What's Changed
- Pin onboarding/README CI snippets to gocov CLI v0.11.0 by @bykclk in #43
- Baseline PR/feature-branch uploads against the default branch by @bykclk in #44
- Fix coverage bars rendering all-green (onboarding .cov bleed) by @bykclk in #45
- Redesign repo detail (v2) and add repo settings page by @bykclk in #46
- Redesign the dashboard (v2): workspace switcher, rollups, sparklines by @bykclk in #47
- Add a styled 404 page for browser navigations by @bykclk in #48
- README: lead with the hosted option by @bykclk in #49
- Split the README into a docs/ tree by @bykclk in #50
- Docs: lead the GitHub path with gocov-action, not
go runby @bykclk in #51 - Move environment configuration into a tagged internal/config by @bykclk in #53
- Split gocov-server start-up from its dependency wiring by @bykclk in #54
- Split the upload flow out of one 1200-line file by @bykclk in #55
- Give every page, every auth concern and every test file a home by @bykclk in #56
- Move the coverage logic out of the HTTP package by @bykclk in #57
- Run the server on a distroless base image by @bykclk in #58
- Take the at-rest key as key material, not as a passphrase by @bykclk in #59
- Decide the redirect target by parsing it, not by inspecting it by @bykclk in #60
- Say the scheme-relative rule outright instead of implying it by @bykclk in #61
- Spell the authority check in the form CodeQL recognizes by @bykclk in #63
Full Changelog: v0.11.0...v0.12.0
v0.11.0
What's Changed
- Redesign the sign-in page with forge brand marks by @bykclk in #33
- Bump checkout/setup-go actions to Node 24 runtimes by @bykclk in #34
- Fix Postgres 18 data volume mount in docker-compose by @bykclk in #35
- Three-stage guided onboarding wizard by @bykclk in #36
- Self-heal the GitHub install claim gate with one-click re-auth by @bykclk in #37
- Remove token-based forge credentials, leaving only one-click connections by @bykclk in #38
- Remove server admin CLI, open workspace registration to private mode by @bykclk in #39
- Redesign workspace settings (v2): sidebar, unified reporting, delete by @bykclk in #40
- Redesign source view (v2): miss-map rail, folds, coverage delta by @bykclk in #41
- Redesign upload detail (v2): verdict card, before→after files, provenance by @bykclk in #42
Full Changelog: v0.10.0...v0.11.0
v0.10.0
v0.9.0
What's Changed
- Make the hosted server the built-in CLI default by @bykclk in #18
- Fix onboarding snippets: release-binary install, drop redundant GOCOV_SERVER by @bykclk in #19
- Add GitHub App / Marketplace webhook endpoint by @bykclk in #20
- Pass GOCOV_GITHUB_WEBHOOK_SECRET through to the prod container by @bykclk in #21
- Add SECURITY.md and restrict CI workflow permissions by @bykclk in #22
- Rewrite sanitizeNext to clear CodeQL open-redirect alerts by @bykclk in #23
- Require GOCOV_SECRET_KEY to be 64 hex characters by @bykclk in #24
- Add coverage badge to README by @bykclk in #26
- Upload CI coverage with gocov-action instead of go run by @bykclk in #27
- Add Clover XML and SimpleCov resultset parsers by @bykclk in #28
- Onboard Bitbucket users with the gocov pipe by @bykclk in #29
- Merge multiple coverage reports per commit by @bykclk in #25
Full Changelog: v0.8.3...v0.9.0
v0.8.3
v0.8.2
What's Changed
Full Changelog: v0.8.1...v0.8.2
v0.8.1
What's Changed
- Fix repo table horizontal scroll and PR chip wrapping by @bykclk in #12
- Read GOCOV_BASE_URL from the environment in docker-compose by @bykclk in #13
Full Changelog: v0.8.0...v0.8.1
v0.8.0
What's Changed
- GitHub App: one-click workspace connect (One-Click Connect P1) by @bykclk in #10
- Bitbucket grant: one-click workspace connect (One-Click Connect P2) by @bykclk in #11
Full Changelog: v0.7.0...v0.8.0
v0.7.0
What's Changed
- Add a coverage trend chart to the repo page by @bykclk in #4
- Add GitHub forge support: core client and CI auto-detect (P1+P4) by @bykclk in #5
- Publish coverage as a GitHub Check Run with inline annotations (P2) by @bykclk in #6
- Add Sign in with GitHub for the web UI (P3) by @bykclk in #7
- Workspace-scoped access: multi-tenancy (M2) by @bykclk in #8
- Self-service signup, workspace settings & onboarding (M3) by @bykclk in #9
Full Changelog: v0.6.0...v0.7.0
v0.6.0
What's Changed
- Attach coverage to Bitbucket PRs via Code Insights by @bykclk in #2
- Show tracked workspaces on /login only after a denial by @bykclk in #3
Full Changelog: v0.5.0...v0.6.0