v0.2.10
We're excited to announce the release of chmonitor v0.2.10! In just one day, our team delivered 8 impactful commits and 34 review comments. With contributions from 2 dedicated developers, including our star contributor, @github-actions[bot], who led the way with insightful feedback, this release is a testament to our commitment to enhancing your ClickHouse monitoring experience. Get ready for improved functionality and a more seamless installation process!
✨ Features
- Serve the chart repository via Cloudflare Pages at
charts.chmonitor.devfor easier access and reliability.
🐛 Fixes
- Ensure the
/api/healthzendpoint is properly bounded and includes parameterized chart probes with dual-runtime guard. - Make the chart-releaser idempotent by skipping existing releases during deployment.
- Fix the bootstrap process for the
gh-pagesbranch on the first chart release to ensure successful initial deployments. - Remove the unnecessary Pages-enable step that consistently caused
📊 Release recap
- 📦 8 commits across 8 pull requests
- 🗓️ Shipped over 1 day — pace ~8.0 commits/day
- 🌞 8 daytime · 🌙 0 night-time commits
- 👥 2 contributors
- 💬 34 comments back and forth across reviews
- 🤖 5 AI agents involved
- 🏆 Shoutout to @github-actions[bot] — 12 comments, 0 code reviews, 0 approvals
🐳 Docker image
This release is published to the GitHub Container Registry as ghcr.io/duyet/clickhouse-monitoring:0.2.10.
docker pull ghcr.io/duyet/clickhouse-monitoring:0.2.10
docker pull ghcr.io/duyet/chmonitor:0.2.10Pin it in your own Dockerfile:
FROM ghcr.io/duyet/clickhouse-monitoring:0.2.10🔁 Full changelog
Compare: helm-chmonitor-0.2.9...v0.2.10
Built from commit
e18c955on 2026-06-18T16:12:22.397Z · summary byanyrouter.
🚚 Migration — upgrading to v0.3 (Next.js → TanStack Start)
v0.3 switches the runtime app from the legacy Next.js dashboard to
dashboard-tsr(TanStack Start). The ClickHouse connection vars are
unchanged, but client-side (NEXT_PUBLIC_*) vars are renamed toVITE_*
and server auth moves toCHM_*. The Docker entrypoint changed too.
What changed
| Concern | v0.2 (Next.js) | v0.3 (TanStack Start) |
|---|---|---|
| Client env prefix | NEXT_PUBLIC_* |
VITE_* (build-time inlined) |
| Auth provider (client) | NEXT_PUBLIC_AUTH_PROVIDER |
VITE_AUTH_PROVIDER |
| Clerk key (client) | NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY |
VITE_CLERK_PUBLISHABLE_KEY |
| Conversation DB flag | NEXT_PUBLIC_FEATURE_CONVERSATION_DB |
VITE_FEATURE_CONVERSATION_DB |
| Auth provider (server) | derived from NEXT_PUBLIC_AUTH_PROVIDER |
CHM_AUTH_PROVIDER (none|clerk|proxy, wins on server) |
| Docker entrypoint | node server.js (OpenNext standalone) |
node server/index.mjs (Nitro node-server) |
| ClickHouse vars | CLICKHOUSE_HOST/USER/PASSWORD/NAME |
unchanged |
| Secrets | CLERK_SECRET_KEY, etc. |
unchanged (still server secrets) |
The old NEXT_PUBLIC_* names still work as a compatibility fallback — the
rename is recommended but not required, nothing breaks if you skip it. Client
VITE_* vars are build-time inlined — set them when building the image /
Worker, not only at runtime. Server vars (CLICKHOUSE_*, CHM_*, *_API_KEY)
are read at runtime as before and are unchanged.
Full per-platform steps: see Migrate to v0.3.
Paste this into any AI assistant to migrate your config
You are migrating a chmonitor deployment from v0.2 (Next.js) to v0.3 (TanStack Start).
Here is my current environment (.env / docker-compose / wrangler / k8s manifest):
<PASTE YOUR ENV HERE>
Rewrite it for v0.3 applying EXACTLY these rules, and output the migrated config
plus a short list of what you changed:
1. Rename every client var prefix NEXT_PUBLIC_ -> VITE_. Specifically:
NEXT_PUBLIC_AUTH_PROVIDER -> VITE_AUTH_PROVIDER
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY -> VITE_CLERK_PUBLISHABLE_KEY
NEXT_PUBLIC_FEATURE_CONVERSATION_DB-> VITE_FEATURE_CONVERSATION_DB
(any other NEXT_PUBLIC_X -> VITE_X)
2. Add server-side auth var CHM_AUTH_PROVIDER (none|clerk|proxy) mirroring the
client provider. It is authoritative on the server; keep VITE_AUTH_PROVIDER too
so the browser bundle agrees.
3. Do NOT rename server vars: CLICKHOUSE_HOST, CLICKHOUSE_USER, CLICKHOUSE_PASSWORD,
CLICKHOUSE_NAME, CLICKHOUSE_MAX_EXECUTION_TIME, CLERK_SECRET_KEY, *_API_KEY — keep as-is.
4. VITE_* vars are build-time inlined: ensure they are present at image/Worker BUILD time
(Docker build-args or CI build env), not only at container runtime.
5. If this is a Docker deployment, change the container start command from
`node server.js` to `node server/index.mjs`. Port 3000 and the /api/healthz
healthcheck are unchanged.
6. Flag anything that has no v0.3 equivalent instead of silently dropping it.
0.2.10 (2026-06-18)
✨ Features
- agent: add AgentState as a conversation-history backend option (#1673) (9080602)
- agent: add scatter/radial/bar-list chart types to chat visualization (#1658) (a9b8a3f)
- agent: expand skill library with 9 new skills (#1655) (3accc86)
- agent: route AnyRouter upstream through @anyr/ai-sdk-provider (#1682) (eec305e)
- agent: route prod conversations to AgentState backend (#1731) (cf15bbb)
- auth: add SSO/SAML scaffold (enterprise-gated, community inert) (#1700) (c948e3f)
- brand: flatten chmonitor mark across landing, docs & dashboard (#1661) (5277eec)
- brand: use chmonitor mark in host switcher (#1662) (7873e44)
- ch-capabilities: add capability-diff report formatter (Plan 10c offline) (#1724) (ff6f7da)
- ch-compat: add capability discovery + diff harness (#1703) (e7b279d)
- charts: redesign query activity heatmap as github-style year calendar (5f9f137)
- ci: add Claude Code GitHub Workflow (#1664) (08f4ea4)
- deploy: add Railway/Render/Fly one-click templates (#1708) (e61d41c)
- docs: generate ClickHouse platform support matrix (#1702) (a7d1deb)
- docs: redirect /docs to docs.chmonitor.dev, remove in-app reader (#1663) (6eea45b)
- edition: add open-core edition module (default community, fail-open) (#1690) (cc78c22)
- health: redesign Health Summary with severity banner, filters & sparklines (#1680) (24d6765)
- helm: publish chart to OCI and GitHub Pages on release (8636352)
- helm: serve chart repo via Cloudflare Pages at charts.chmonitor.dev (#1747) (a5c5d1e)
- landing: add chmonitor logo system + /brand page (#1660) (77d15d3)
- menu: surface 5 orphaned pages in navigation (#1735) (762d915)
- overview: add multi-disk Disk Usage breakdown card (#1674) (f1fafa1)
- overview: break Query Activity Heatmap into compact per-month blocks (#1725) (d491024)
- overview: icons on heatmap metric pills, compact KPI cards, hidden scrollbar (#1727) (93eae72)
- overview: move query activity heatmap to top, full width (#1668) (d6d4876)
- overview: redesign Query Activity Heatmap as multi-metric full-width banner (#1681) (0dc0a36)
- overview: restyle backup size card empty state (#1677) (fea30f7)
- overview: restyle disk size card to match storage redesign (#1675) (a30082c)
- overview: restyle storage tab — partition health stat-triad, RankBars, grid (#1678) (b48dfb6)
- query-config: add clickhouseSettings to declarative schema; migrate tables-overview + stack-traces (#1717) (c940031)
- query-config: add declarative config loader behind CHM_CONFIG_SOURCE (default ts) (#1689) (43c1d31)
- query-config: add declarative config schema + validator (#1685) (91f3837)
- query-config: declarative docs as plain string + migrate query-cache/merge-performance (#1718) (c875dc7)
- query-config: declarative expandable spec, migrate settings/users (#1728) (d119b03)
- query-config: declarative permission field + migrate query-detail/mergetree-settings/metrics (#1721) (640ea18)
- query-config: declarative rowStyle (compiles to rowClassName) + migrate kafka-consumers (#1719) (e3d82e5)
- query-config: migrate explorer/ domain to declarative catalog (behind flag) (#1693) (63595e5)
- query-config: migrate keeper/ domain to declarative catalog (behind flag) (#1694) (2e555d0)
- query-config: migrate logs/security/anomaly/merges domains to declarative (behind flag) (#1697) (dbe6de1)
- query-config: migrate more/ domain to declarative catalog (behind flag) (#1695) (3d86388)
- query-config: migrate part-info/projections/user-processes to declarative catalog (#1716) (a6c133e)
- query-config: migrate part-log + mutations to declarative rowStyle (#1720) (26dd40c)
- query-config: migrate queries/ domain to declarative (behind flag) (#1696) (2996fca)
- query-config: migrate system/ domain to declarative catalog (behind flag) (#1691) (4507be8)
- query-config: migrate tables/ domain to declarative catalog (behind flag) (#1692) (ba5ea86)
- query-config: resolve declarative catalog in registry behind CHM_CONFIG_SOURCE (default ts) (#1699) (9a545ae)
- rbac: add RBAC scaffold (community all-access, fail-open) (#1698) (1d54595)
- telemetry: add opt-in daily instance ping (dark by default) (#1688) (964f6b3)
- telemetry: add opt-in telemetry core (off by default) (#1683) (87b6de0)
- telemetry: capture deploy target + ClickHouse version/flavor dimensions (#1686) (6ac19ce)
- telemetry: wire activation events + define activation metric (#1684) (9a3137e)
🐛 Bug Fixes
- agent: separate reasoning & tool blocks, local grouping, auto-collapse (#1657) (e20b996)
- charts: degrade optional chart with missing table to empty 200 (#1733) (ef5161c)
- charts: mount charts eagerly to stop scroll-triggered skeleton flashing (dd398dc)
- charts: stop disks-usage query OOM by pre-filtering metrics (#1736) (8c2e920)
- ci: publish chmonitor multi-arch manifest on push to main (#1751) (36ffe49)
- conversation-store: widen AgentState list scan to keep older history (#1737) (69ec855)
- dashboard: responsive audit — min-w-0 on about FeatureCard (#1666) (65fc2e6)
- data-table: contain horizontal scroll within table on mobile (#1670) (e58ca6e)
- healthz: add /healthz route and fix k8s probe crash loop (e3886b6)
- healthz: add /heathz typo alias sharing the same handler (47cbed4)
- healthz: bound /api/healthz ping + parameterize chart probes + dual-runtime guard (#1749) (67b49c8)
- helm: bootstrap gh-pages branch on first chart release (#1745) (b676241)
- helm: drop dead Pages-enable step that 403s every run (#1746) (c4ff1d6)
- helm: skip existing releases so chart-releaser is idempotent (#1748) (b05072c)
- insights: add auto-rows to charts grid to prevent blank space (#1671) (047648a)
- insights: align card title padding between skeleton and loaded states (#1667) (35c8a3c)
- insights: give charts-section grid definite row height (7e70f1d)
- landing: correct stale OpenNext deploy copy on the marketing page (#1714) (5ba0eb9)
- overview: remove stray tab strip scrollbar (#1665) (b4e8d7c)
- shell: resolve app-shell Lighthouse a11y failures (aria, label, skip-link) (#1734) (200cdc7)
- ui: explorer tree a11y — name toggle buttons, fix list nesting (#1740) (f09751d)
- ui: give data-table Select triggers accessible names (#1741) (405e9bf)
- ui: give Progress bars accessible names (aria-progressbar-name) (#1743) (bfe4e1e)
- ui: host switcher accessible name matches visible label (WCAG 2.5.3) (#1742) (ea9ae2f)
- ui: name the icon-only query-row action links (a11y link-name) (#1739) (786f2e0)
- ui: raise contrast of data-table "N records" count (WCAG AA) (#1744) (492ca08)
- ui: raise contrast on muted labels and the "New" badge (WCAG AA) (#1738) (8f64428)