Release Notes: v0.5.0¶
Release Date: 2026-08-17
This release polishes the static viewer (viewer/index.html) with a light/dark theme toggle and consistent numeric formatting, fixes a pre-existing broken build in builder/, adds ESLint and Prettier tooling to the builder/ and renderer/ TypeScript workspaces (neither had ever been configured), and resolves every pre-existing "error discard without comment" finding in datasource/ and internal/server/ per the org's error-handling protocol.
Highlights¶
- Theme Toggle - Light/dark toggle in the static viewer header, persisted via
localStorageand defaulting to the OS'sprefers-color-scheme; re-initializes ECharts widgets with the official dark theme - Numeric Formatting - Chart tooltips, value-axis labels, and metric tiles now cap numeric display to 2 decimal places, plus a new
"currency"metric format - Error Handling - All 10 pre-existing "error discard without comment" findings in
datasource/andinternal/server/resolved via proper return/panic handling, not just documented-and-ignored - Lint/Format Tooling -
builder/andrenderer/now have ESLint (flat config) and Prettier configured, with every resulting finding fixed - Dependency Fix -
builder/'s@grokify/echartifyimport was never declared as a dependency;typecheck/buildwere broken before this release
What's New¶
Added¶
- Light/dark theme toggle (
63e771c) - Header control in the static viewer; toggles the previously-unused[data-theme="dark"]CSS variable block, re-inits ECharts widgets with the dark theme, and makes chart backgrounds transparent so they blend into the surrounding card in either theme - Numeric formatting and currency metric format (
8a71a1c) - A sharedformatMetricNumberhelper caps chart tooltips and value-axis labels to 2 decimal places; a new"currency"metric format (previously undocumented-but-unimplemented — only"percent"and"number"were handled)
Fixed¶
- Missing
@grokify/echartifydependency (6287ef0) -builder/src/types/chartir.tsimports it, but it was never inpackage.json;typecheck/buildwere broken before this release builder/ESLint findings (257d865) - Empty-interface cleanup, tworeact-hooks/set-state-in-effectfixes (remount-via-key, and switching touseQueryto match existing patterns elsewhere in the codebase), a Fast-Refresh export split, and a hoisteduseMemodependencyrenderer/ESLint findings (a1a875c) - Wired up the previously-unusedonInteractionprop intoUIForgeContextValue, refactored two hook patterns flagged byeslint-plugin-react-hooksv7's newer React-Compiler-oriented rules, removed dead test imports- Discarded errors in
datasource/manager.goandinternal/server/server.go(eea77fc) - Log previously-discarded connection-close and response-write errors instead of silently dropping them - Discarded errors in the MySQL/PostgreSQL providers and
internal/server/db/db.go(c7ef2dc) -Query()now uses named returns so a deferredrows.Close()failure is actually returned instead of discarded; adb.Close()after a failed ping is joined into the returned error viaerrors.Join; astrings.Builderwrite that can never fail now panics instead of silently ignoring its (impossible) error
Documentation¶
- Documented the static viewer's theme toggle and numeric formatting in
README.mdanddocs/index.md
Dependencies¶
- Pinned
authzed/cel-goto v0.20.2 forspicedbv1.56.0 compatibility (2101350) - a priorgo get -uhad bumped it to v0.30.0, which changedcel.NewStaticOptimizer's signature and broke the build - Routine transitive dependency updates via
go mod tidy(8e4d264,f744e45)
Internal¶
- Added
eslint.config.js/.mjs,.prettierrc.json, and.prettierignoretobuilder/andrenderer/; applied Prettier formatting across both workspaces (whitespace/quote-style only, no behavior change) (e313925) - Rebuilt
builder/dist(committed forgo:embed) andrenderer/distto reflect the dependency fix, lint fixes, and formatting;renderer/distwas also independently stale, missing compiled output for several modules that already existed insrc/(5796c33) - Investigated bumping the Go toolchain to 1.26.6 to clear 7
govulncheck-found stdlib CVEs, but reverted to 1.26.5 (1dd32ad): the sharedplexusone/.githubreusablego-ci.yamlpinsGOTOOLCHAIN=localafter resolving"1.26.x", so it doesn't auto-upgrade to a newer patch just becausego.modasks for one. The CVEs remain unaddressed pending a fix to the shared workflow or CI's cached Go version catching up.
Breaking Changes¶
None.
Known Issues¶
cube/(the Cube.js semantic-layer directory) still has no lint/typecheck/format tooling — it never had any (no devDependencies, no scripts for it), andatrelease's auto-detection flags it as a false positive. Left out of scope for this release;builder/andrenderer/are unaffected.- 7 stdlib CVEs (
encoding/xml,encoding/asn1,net/http) fixed in go1.26.6 remain unaddressed — see Internal above.
Installation¶
Migration Guide¶
From v0.4.0¶
No breaking changes. If you run builder/'s or renderer/'s npm run lint/npm run format locally for the first time after pulling this release, run npm install first to pick up the new ESLint/Prettier devDependencies.
Full Changelog¶
See CHANGELOG.md for the complete list of changes.