v0.2.11
> We're thrilled to announce the release of chmonitor v0.2.11, which showcases the incredible work of 4 contributors over 5 days, resulting in 133 commits and a brisk daily pace of 26.6 changes! Nighttime contributions outpaced daytime efforts, with 75 commits made while most of us were dreaming. A big shoutout to our most active AI agent, who made 75 contributions through comments—proof that collaboration powers our dashboard's evolution!
Add an AI insights panel on the /insights page, merging plans into documentation for enhanced usability.
Introduce browser notifications on by default, providing real-time updates without additional setup.
Implement total-time sort, metric bars, and a cluster-load summary for expensive queries, improving monitoring visibility.
Redesign insights settings with search capabilities and a live example to enhance user experience.
Offer configurable AI insights generation options, including model selection and prompt style customization.
📦 133 commits across 126 pull requests
🗓️ Shipped over 5 days — pace ~26.6 commits/day
🌞 58 daytime · 🌙 75 night-time commits
👥 4 contributors
💬 201 comments back and forth across reviews
🤖 5 AI agents involved
🏆 Shoutout to @github-actions[bot] — 75 comments, 0 code reviews, 0 approvals
This release is published to the GitHub Container Registry as
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
agent: persist MCP server config to localStorage (#1833) (723f7b3)
ai-insights: redesign panel + persist & auto-load insights + settings link (#1819) (bc9d633)
alerts: browser notifications on by default (out-of-box, opt-out) (#1858) (6a21a28)
auth: add 'trusted' reverse-proxy auth mode with forwarded identity (#1755) (094391a)
auth: show "via trusted proxy" source label in sidebar user menu (#1824) (3193f89)
expensive-queries: total-time sort, metric bars, and cluster-load summary (#1827) (f7d3830)
explain: syntax highlighting, FORMAT/semicolon tolerance, multi-query tabs (#1826) (41e8e8b)
insights-settings: redesign page — searchable model picker w/ provider icons + docs links (#1820) (8be8555)
insights: add AI insights panel to /insights page, merge plans into docs (2ba9fe4)
insights: AI Insights settings page + panel link, wired into generation (#1782) (6bfd0aa)
insights: configurable AI insight generation (model, prompt style, enrichment) (#1767) (8ef2977)
insights: global AI Insights header popover on every page (#1783) (c04f2fa)
insights: pluggable AI Insights storage backends (#1797) (7cdd146)
insights: preview generation with current settings on the settings page (#1786) (039a5d2)
insights: redesign settings — templates, icon grid, side-by-side live example (#1790) (5f2e3dc)
insights: surface enrichment availability + default model in settings (#1787) (463c825)
seo: complete docs icon set + add robots.txt to docs & dashboard (#1837) (0062a09)
seo: keyword-rich descriptions + schema.org structured data (#1838) (e4f832f)
sql-console: multi-query results, database picker, tree sidebar, buttons below editor (#1822) (e5de0a8)
ui: overview design pass — palette, cards, chart colors, heatmap (#1836) (b148009)
a11y: add aria-labels to icon-only buttons (#1874) (cf930ab)
agent-api: gate unconditional debug logs behind AGENT_DEBUG_LOGS (#1791) (e15cd7a)
agent: explain_query use EXPLAIN PLAN indexes=1 for indexes mode (#1781) (25795e5)
agent: explore_table_schema query valid system.parts columns (#1780) (e8d6f6c)
agents: wire MCP panel status to real /api/v1/mcp/info data (#1831) (03ca2d8)
api: gate /api/health metadata on genuine auth, not public-read (#1834) (a61dfc6)
api: harden actions/explain/explorer input & output handling (#1785) (4f1b4ea)
api: hide deployment metadata from anonymous /api/health callers (#1829) (f0905ee)
api: reject negative and fractional hostId at route boundary (#1760) (214389c)
api: return 503/504 for unreachable ClickHouse upstream, not 500 (#1840) (2064493)
api: return 503/504 for unreachable ClickHouse upstream, not 500 (#1841) (1412df1)
auth: gate sidebar identity on runtime auth provider, not build-time (#1812) (ee77b94)
ci: label apps/dashboard as 'app: dashboard', not legacy (#1886) (3949b3a)
ci: retry transient Cloudflare 10215 conflict when setting worker secrets (#1896) (d7d2872)
ci: skip dashboard deploy steps for dependabot PRs (#1835) (bcc1fc8), closes #1809
clickhouse-client: default to web client on all runtimes (Docker fix) (#1752) (a1970ed)
clickhouse-client: honor versioned queryConfig.sql[] in fetchJsonEachRowAsNormalizedJson (#1806) (b1fb977)
dashboard-storage: remove dead @ts-expect-error directives (7f420ae)
dashboard: repair dev-mode crashes + UI/UX audit a11y/error fixes (#1814) (fc2e66d)
insights: render generated insights immediately, independent of persistence (#1792) (6855eb8)
lint: apply biome auto-fixes to test files (9efa76f)
mcp: secure-by-default — deny anonymous access unless CHM_MCP_PUBLIC=true (#1830) (5109f56)
mutations: redesign sparse summary cards with denser hierarchy + empty state (#1817) (1e612f1)
query-config: query-metric-log 500 on modern ClickHouse (aggregate alias in WHERE) (#1815) (32d2d34)
query-config: query-metric-log 500 on modern ClickHouse (aggregate alias in WHERE) (#1816) (72544d0)
security: constant-time CRON_SECRET comparison in health-sweep (#1893) (72f93b2)
security: redact ClickHouse error details from action API responses (#1894) (6f20ae9)
seo: inject JSON-LD via effect to avoid hydration mismatch (#1839) (f0da6bc)
sql-builder: add splitSqlStatements source for orphaned test on main (#1821) (c4355ba)
sql-builder: only strip trailing FORMAT for known ClickHouse formats (#1828) (a5fded5)
sql-validator: stop rejecting legitimate read-only queries (#1758) (ee4894b)
ui: align chart skeleton min-height to loaded chart to cut CLS (#1865) (8adc563)
ui: prevent mobile horizontal overflow on toolbar + explain tabs (#1864) (9eb5216)
ui: tabular-nums on live/columnar numeric displays (#1875) (9713041)
charts: lazy-load chart-error diagnostics dialog (react-markdown) (#1877) (1a5fb4a)
charts: use REFRESH_INTERVAL presets for refresh intervals (#1772) (#1811) (4192e50)
data-table: memoize render-path allocations (#1771) (#1810) (72c6273)
keeper: memoize cluster grouping + React.memo NodeCard (#1876) (332252d)
overview: memoize OverviewChart and tab chart filters (#1895) (5be08c4)
running-queries: memoize chart transforms with useMemo (#1857) (1595ed1)
charts: collapse charts to compact row instead of hiding (#1818) (3547aa1)
charts: use REFRESH_INTERVAL constant in data-freshness (#1799) (#1801) (359c450)
clickhouse-client: remove dead query() helper (Workers trap) (#1789) (bb02046)
dedup formatDuration + tighten data-table types (review-ready, supersedes #1823) (#1825) (5f14b25)
docs: replace custom theme with native Astro Starlight (#1757) (32b2841)
insights: redesign insight card with tinted icon box (978e011)
remove deprecated variants property from QueryConfig type schema (#1765) (14a5ff4)
Full release notes
ghcr.io/duyet/clickhouse-monitoring:0.2.11.
```bash
docker pull ghcr.io/duyet/clickhouse-monitoring:0.2.11
docker pull ghcr.io/duyet/chmonitor:0.2.11
```
Pin it in your own Dockerfile:
```dockerfile
FROM ghcr.io/duyet/clickhouse-monitoring:0.2.11
```
Compare: helm-chmonitor-0.2.10...v0.2.11
> Built from commit 446ceb0 on 2026-06-23T17:36:30.424Z · summary by anyrouter.
> **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 to VITE_***
> and server auth moves to CHM_*. The Docker entrypoint changed too.
| 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](/docs/migrating/v0-3).
```text
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):
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.
```
---
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!
Serve the chart repository via Cloudflare Pages at
Ensure the
Make the chart-releaser idempotent by skipping existing releases during deployment.
Fix the bootstrap process for the
Remove the unnecessary Pages-enable step that consistently caused
📦 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
This release is published to the GitHub Container Registry as
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
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)
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)
health: batch health checks into one request + show cached values instantly (#1669) (9be95d8)
agent: trim tools to lean primitives (63 to ~18) (#1656) (6879bf1)
Full release notes
charts.chmonitor.dev for easier access and reliability./api/healthz endpoint is properly bounded and includes parameterized chart probes with dual-runtime guard.gh-pages branch on the first chart release to ensure successful initial deployments.ghcr.io/duyet/clickhouse-monitoring:0.2.10.
```bash
docker pull ghcr.io/duyet/clickhouse-monitoring:0.2.10
docker pull ghcr.io/duyet/chmonitor:0.2.10
```
Pin it in your own Dockerfile:
```dockerfile
FROM ghcr.io/duyet/clickhouse-monitoring:0.2.10
```
Compare: helm-chmonitor-0.2.9...v0.2.10
> Built from commit e18c955 on 2026-06-18T16:12:22.397Z · summary by anyrouter.
> **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 to VITE_***
> and server auth moves to CHM_*. The Docker entrypoint changed too.
| 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](/docs/migrating/v0-3).
```text
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):
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.
```
---
v0.2.9
> We're excited to announce the release of chmonitor v0.2.9, packed with 51 commits and 43 pull requests over just 3 days, averaging 17 updates per day! Our contributors worked diligently, with a remarkable 44 commits during the day and 7 at night. A big shoutout to our most active AI assistant, which generated 76 comments and conducted 33 reviews.
Add an AI insights panel to the overview with cached, dismissible suggestions.
Collapse root redirect to improve response times and avoid TTFB regression.
Introduce a host switcher feature allowing secure storage for added hosts.
Implement per-page social cards for dashboard query pages.
Redesign the marketing site and align the documentation theme with updated aesthetics.
Add static Open Graph images for landing, docs, and dashboard pages.
Fix connection pool leak in ClickHouse by properly releasing the client.
Stabilise
📦 51 commits across 43 pull requests
🗓️ Shipped over 3 days — pace ~17.0 commits/day
🌞 44 daytime · 🌙 7 night-time commits
👥 3 contributors
💬 222 comments back and forth across reviews
🤖 6 AI agents involved
🏆 Shoutout to @gemini-code-assist[bot] — 76 comments, 33 code reviews, 0 approvals
This release is published to the GitHub Container Registry as
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
ci: align release docker cache scope + diagnosable container health checks (#1610) (ae78ad9)
ci: pass -R to gh workflow run in release-please (#1608) (da18863)
Full release notes
ghcr.io/duyet/clickhouse-monitoring:0.2.9.
```bash
docker pull ghcr.io/duyet/clickhouse-monitoring:0.2.9
docker pull ghcr.io/duyet/chmonitor:0.2.9
```
Pin it in your own Dockerfile:
```dockerfile
FROM ghcr.io/duyet/clickhouse-monitoring:0.2.9
```
Compare: v0.2.8...v0.2.9
> Built from commit aa8b987 on 2026-06-17T06:37:07.719Z · summary by anyrouter.
> **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 to VITE_***
> and server auth moves to CHM_*. The Docker entrypoint changed too.
| 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](/docs/migrating/v0-3).
```text
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):
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.
```
---
v0.2.8
> We're excited to announce the release of chmonitor v0.2.8, delivering a stellar performance with 48 commits across one high-output day! Our dedicated team of three contributors kept an impressive pace, making 38 of those contributions during daylight hours and tackling additional challenges at night. A special shoutout goes to our most active agent, whose feedback shaped our development with 83 insightful comments. Let's dive into the highlights of this release!
Add tiered LLM notes system to enhance the dashboard's intelligence.
Implement "Running Queries" and "Clusters" as top-level sidebar items for easier navigation.
Fix type checks for the menu-counts test to avoid disruption in CI workflows.
Enforce authentication on key API endpoints and sanitize error responses for improved security.
Resolve accessibility violations within health, dashboard, and menu components.
Prevent normalization of numeric strings with leading zeros in data processing.
📦 48 commits across 36 pull requests
🗓️ Shipped over 1 day — pace ~48.0 commits/day
🌞 38 daytime · 🌙 10 night-time commits
👥 3 contributors
💬 251 comments back and forth across reviews
🤖 6 AI agents involved
🏆 Shoutout to @github-actions[bot] — 83 comments, 0 code reviews, 0 approvals
This release is published to the GitHub Container Registry as release: tiered LLM notes (Copilot→Models→AnyRouter), recap stats, docker pin (#1582) (3009f99)
add Running Queries and Clusters as top-level sidebar items (#1569) (74fc5eb)
api: enforce auth on clean/init/pageview endpoints and sanitize error responses (#1602) (9b9d239)
clickhouse-client: harden http status code regex in clickhouse-fetch (#1578) (0d27e33)
clickhouse-client: redact inline credentials from host config debug logs (#1581) (6d0609b)
dashboard-tsr: bridge CLICKHOUSE_DATABASE and EVENTS_TABLE_NAME on workers (#1576) (8096672)
dashboard-tsr: fix a11y violations in health, dashboard, and menu (#1588) (5340ce8)
dashboard-tsr: listen for swr:revalidate event to refresh TanStack Query cache (#1579) (7927f18)
dashboard-tsr: skip hash-anchor URLs in prerender crawl to unblock Docker build (#1583) (f001263)
dashboard-tsr: type menu-counts test to unblock type-check:test (#1605) (850162e)
e2e: expand collapsible menu sections before checking sidebar links (#1568) (cc6cdbd)
logger: safely guard process.env access for browser and serverless runtimes (#1589) (36f3b1d)
rust/ch-json: prevent normalization of numeric strings with leading zeros (#1590) (eb9a091)
validate-docker: bundle @clickhouse/client-common + follow root redirect (#1604) (6d280d9)
dashboard-tsr: optimize menu counts endpoint to use single batched query (#1591) (dff6ed4)
dashboard-tsr: unmount collapsed chart rows to stop background polling (#1580) (1400632)
Full release notes
ghcr.io/duyet/clickhouse-monitoring:0.2.8.
```bash
docker pull ghcr.io/duyet/clickhouse-monitoring:0.2.8
docker pull ghcr.io/duyet/chmonitor:0.2.8
```
Pin it in your own Dockerfile:
```dockerfile
FROM ghcr.io/duyet/clickhouse-monitoring:0.2.8
```
Compare: v0.2.7...v0.2.8
> Built from commit ae78ad9 on 2026-06-14T08:08:57.882Z · summary by anyrouter.
---
v0.2.7
v0.2.6
Built from commit
Stable aliases:
Commit tag:
Agent Workflows: Implemented an AI agent workflow harness using dynamic templates.
Context & Memory: Added persistent agent findings tools (record_finding, list_recent_findings) and auto-generated chat titles.
Clerk Auth for MCP: Wired up Clerk OAuth login, consent flows, and REST verification tokens for the Model Context Protocol (MCP) worker.
Cluster Topology: Rebuilt the /cluster page into a data-driven Cluster Topology node visualization.
New System Views: Added dedicated monitoring pages for:
- system.dropped_tables
- system.moves
- system.warnings
- system.replicated_fetches
- system.replicated_merge_tree_settings
- system.user_processes
Queues & Timelines: Introduced a Kafka consumer lag view, a part lifecycle timeline (system.part_log), and an explain plan tree visualizer.
PeerDB monitoring.
Data Table Engine: Redesigned table.
Declarative Mobile Cards: Added a responsive card grid fallback view across all system entity and diagnostic pages.
UX Upgrades: Added global time-range and auto-refresh persistence to localStorage, direct CSV exports from chart cards, and a first-run onboarding flow.
Test Suite Hardening: Fixed cross-file mock pollution across 34 files, driving failures to 0 and boosting unit coverage (90%+ on core library modules).
CI Optimization: Accelerated Docker validation by reusing pre-built images and quarantined flaky headless table-polling tests.
Kubernetes: Vendored a production Helm chart and Kustomize base directly in-repo, backed by kubeconform and helm-lint CI gates.
---
chore: add screenshots by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1206
ci: optimize docker build in release workflow by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1207
feat(charts): render correct units in compact chart row mode by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1208
feat(peerdb): PeerDB monitoring by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1209
perf(peerdb): memoize smoothPath in sparkline/area charts by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1213
fix(peerdb): normalize log-level casing in mirror logs panel by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1211
fix(maintenance): guard PeerDB cache envs and release reruns by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1215
chore: address react-doctor mechanical findings (safe, behavior-preserving) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1210
feat(keeper): Keeper monitoring by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1214
chore(dead-code): remove 36 unused files flagged by react-doctor by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1217
refactor(monorepo): add tsconfig.base.json + Turbo pipeline (Phase 0) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1219
refactor(monorepo): extract Tier-1 packages + break HostInfo cycle (Phase 1) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1221
chore(peerdb): apply react-doctor mechanical fixes by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1218
perf(react-compiler): enable React Compiler and strip redundant manual memoization by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1216
chore(deps): upgrade dependencies to latest and fix breaking changes by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1220
refactor(monorepo): move web app into apps/web/ (Phase 2) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1222
fix(cf): resolve nested standalone path in stub script for monorepo by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1223
refactor(rust): unify tools/ into the rust/ Cargo workspace by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1224
style(rust): format ch-pivot for unified workspace cargo fmt by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1226
refactor(monorepo): move mcp worker into apps/mcp-worker (Phase 3) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1225
chore(docs): remove dead Nextra site, recover doc screenshots by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1227
refactor(monorepo): extract @chm/logger package (Phase 4a) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1228
docs(knowledge): monorepo refactor handoff note by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1231
refactor(monorepo): extract @chm/clickhouse-client + @chm/mcp-server (Phase 4) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1230
chore(monorepo): add depcruise boundaries, changesets, MCP worker CI (Phase 5) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1232
docs: update monorepo refactor status + add depcruise to CLAUDE.md by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1233
fix(peerdb): correctness fixes + code review P1 fixes (#1212) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1234
fix(agents): gate useUser behind isClerkEnabled + fail-fast query-config test by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1235
fix(test): abort query-config version probe instead of request_timeout by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1236
fix(test): bound query-config probe with a wall-clock race by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1237
feat(agents): show chat UI for everyone, gate sending on sign-in by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1238
feat(agents): polish agents page — dialogs, scrollable popovers, header cleanup by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1239
fix(agents): don't auto-scroll the welcome screen on open by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1240
feat(ui): keeper cards + connections expand, health cards, security charts, menu by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1241
fix(agents): break mcp-panel↔dialog import cycle by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1242
chore(scripts): consistent test: prefixes + relocate promptfoo config by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1243
feat(health): SQL in detail dialog + audit-prompt toggles & token count by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1244
perf(ci): validate-docker reuses prebuilt amd64 image by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1245
fix(ci): stop component-test 30-min hang by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1247
fix(ci): make component-test green (Recharts mount size + quarantine headless flakes) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1250
fix(ci): quarantine flaky table-client polling test by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1251
feat(tables): expandable "more info" rows for config tables by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1248
fix(charts): stabilize scroll while lazy charts render by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1246
feat(tables): card view for low-cardinality tables by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1249
test(sql-builder): add comprehensive unit tests for 90%+ coverage by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1252
test(clickhouse-client): add unit tests for client, config, pool, and fetch by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1255
test(charts): add structural validation tests for chart query configs by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1253
test(logger,mcp,utils): add unit tests for logger, MCP auth, and utility modules by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1256
feat(keeper): render /keeper/info with KeeperNodeCards by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1257
fix(charts): add missing dictionary-count client chart by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1258
fix(data-table): replace pill bars with clean full-height background bars by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1259
test(swr): add unit tests for SWR data-fetching hooks by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1254
fix(explorer): dedup @codemirror/state to fix SQL editor crash by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1260
feat(readonly-tables): expandable diagnostics row + AI fix prompt action by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1261
fix(explorer): reseed query tab SQL when selected table changes by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1262
fix(readonly-tables): render is_readonly in red (readonly = problem state) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1263
fix(charts): convert query-duration and query-memory to area charts by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1264
fix(ui): unify chart-grid and stack spacing rhythm by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1265
feat(charts): extract ProportionList primitive from 3 duplicated progress-bar charts by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1266
feat(charts): route status colors through shared tokens by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1267
fix(ui): remove redundant padding from insights page by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1268
fix(clusters): remove redundant breadcrumb and add Suspense to table by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1269
feat(ui): shared PageHeader primitive — kills H1 fragmentation across health/cluster/running-queries by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1270
test(lib): add tests for engine-icons, peerdb-config, permissions, hooks, API utils by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1271
test(api): add unit tests for charts, cluster-counts, dashboard API routes by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1272
test(agent-tools): unit tests for batch 1 tools (6 modules) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1273
test(agent-tools): add batch 2 unit tests for 12 tool modules by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1274
fix(data-table): re-render memoized body on row expansion by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1275
fix(charts): stop dictionary-count 500 + resilient chart route by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1276
feat(data-table): SQL-hero mobile cards + table/card toggle on mobile by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1278
feat(running-queries): SQL-first card view + table/card toggle by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1280
fix(test): stop global mock.module pollution in the unit suite by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1281
chore(deps): update actions/ai-inference action to v2 by @renovate[bot] in https://github.com/duyet/clickhouse-monitoring/pull/1277
test: fix mock contamination across 34 files (80→0 failures, +207 tests) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1283
feat(agent): workflow harness with dynamic workflow templates by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1279
test(agent): fix context-tools mock contamination from #1279 by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1285
ci: include package tests in coverage report by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1284
test: harden unit suite against cross-file bun mock pollution by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1287
fix(ui): overview scroll-jump, agent menu gating, host badge truncation by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1289
feat(monitoring): add system.dropped_tables view at /dropped-tables by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1290
feat(monitoring): add system.moves view at /moves by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1291
feat(monitoring): add system.warnings view at /warnings by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1292
feat(monitoring): add system.replicated_fetches view at /replicated-fetches by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1294
feat(monitoring): add system.replicated_merge_tree_settings view at /replicated-merge-tree-settings by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1295
feat(monitoring): add system.user_processes view at /user-processes by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1293
feat(peerdb): enhance peers table with logos + mirror stats, center topology expand button by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1297
feat(agent): multi-provider config + chat UI redesign by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1296
perf(build): optimizePackageImports for webpack production build by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1298
fix(docker): healthcheck hits /api/healthz instead of root by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1299
feat(tracking): persist global time range to localStorage + URL by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1300
feat(docs): surface AI Agent, Env Reference, PeerDB in sidebar nav by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1301
fix(ui): error-page hero icon, redirect skeletons, root 404 by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1302
feat(monitoring): part lifecycle timeline from system.part_log by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1303
feat(alerting): autonomous scheduled health-sweep cron by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1305
feat(deploy): vendor production Helm chart in-repo by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1306
feat(monitoring): Kafka consumer lag view from system.kafka_consumers by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1304
feat(tracking): persist auto-refresh interval across reloads by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1307
perf(sidebar): batch menu-count requests into a single endpoint by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1308
feat(monitoring): per-query resource timeline from system.query_metric_log by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1309
feat(tracking): direct CSV export from any chart card by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1311
docs(content): add MCP server page + configuration hub, reconcile .env.example by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1310
feat(agent): persist agent findings + record_finding/list_recent_findings tools by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1312
feat(ux): first-run onboarding, explorer skeleton, explain empty state by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1313
feat(deploy): kustomize base + kubeconform/helm-lint CI gate + k8s guide by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1314
chore(brand): rename product to chmonitor by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1315
fix(overview): keep page scrollable to bottom during loading by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1316
feat(failed-queries): add filters + fix truncated action-column header by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1317
feat(ui): premium redesign of Request Info (SQL) dialog by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1318
feat(agent): auto-generate conversation titles from first message by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1319
feat(expensive-queries): redesigned responsive table with expand, filters, highlight by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1320
feat(running-queries): split into running + recently-completed tables with live transition by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1321
feat(slow-queries): redesigned responsive table with expand, filters, highlight by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1322
feat(part-log): redesign page with lifecycle charts, KPIs, and rich events table by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1323
perf(query-metric-log): optimize query for Worker limits + surface server errors by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1324
feat(explain): render query plan as a tree visualization by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1325
feat(user-processes): format columns (user badge, memory bars, readable values) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1326
feat(disks): redesign disks page with bento grid cards by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1327
feat(cluster): upgrade /cluster into Cluster Topology visualization by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1328
test: fix unit-tests CI — add getClient to agent-tool mocks by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1329
fix(cluster): address Cluster Topology review feedback by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1331
feat(running-queries): cap completed list to 10, add Done badge per row by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1330
feat(cluster): real-data topology API for all cluster shapes (Keeper-optional, all nodes) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1332
feat(seo): add sitemap.xml and robots.txt by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1333
feat(cluster): robust offset-hull cluster overlays for all topology shapes by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1334
refactor(cluster): merge topology into /clusters page by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1335
fix(query-tables): deduplicate shared components and fix filter/sort bugs by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1336
fix(refactor): extract shared query-table components, deduplicate 15 code smells by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1337
fix(topology): fix node overlap, dark-mode visibility, and text readability by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1338
feat(data-table): declarative card layout via QueryConfig.card by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1339
feat(data-table): declarative rich expand panels via createExpandedPanel by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1340
feat(query-config): card + rich expand for query-log query lists by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1341
feat(query-config): card view for all table/replication pages by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1342
feat(query-config): card view for merges + system entity pages by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1343
feat(query-config): card view for more/ + keeper/ pages by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1344
feat(query-config): card view for remaining query diagnostic pages by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1345
feat(data-table): responsive card grid for entity pages by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1346
fix(data-table): card review follow-ups (empty-state, hit area, zone dedup) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1347
fix(a11y): BackgroundBar progressbar semantics + GPU-composited fill by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1348
feat(menu): sidebar table-availability muting + version-mismatch/permission UX by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1349
feat(topology): redesign cluster topo — distinct node shapes, CH logo, fix black fills by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1350
fix(data-table): pass view='table' in component tests by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1351
fix(overview): swap tabs without re-flashing the KPI cards by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1352
fix(topology): stop label overlap, enclose keeper labels, move cluster pills to bottom by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1353
feat(topology): label & toggle physical clusters, data-driven height, Claude palette by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1354
feat(web): enhance data table with search, filters, and sleek headers by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1355
fix(clerk): handle signOut error gracefully by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1356
fix(data-table): unify query-page toolbar + exclude action column from filters by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1357
fix(data-table): address Gemini review on filterable columns by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1358
fix(filters): hide filter bar when empty, keep display options open, normal button sizes by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1359
fix(data-table): stop Presets full-page re-render + redesign column headers by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1360
fix(data-table): redesign column headers (Cloudflare-style) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1361
fix(data-table): content-aware column widths, stop header truncation, square table corners by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1362
fix(data-table): move card Sort into toolbar, add density support to cards by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1363
feat(filters): add per-page quick filters with segmented control by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1365
fix(data-table): render filter chip label as single text node by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1366
docs(deploy): add self-host quick start for cloudflare, docker, k8s by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1367
chore(mcp): rename apps/mcp-worker → apps/mcp by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1368
chore(dashboard): rename apps/web → apps/dashboard by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1369
feat(landing): add Astro marketing scaffold (chmonitor.dev) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1370
feat(landing): add remaining marketing sections by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1371
feat(docs): add standalone Astro Starlight docs scaffold by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1373
feat(docs): sync dashboard docs into Starlight site by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1374
fix(docker): build dashboard only, exclude standalone astro apps by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1375
feat(workers): rename workers and wire chmonitor.dev subdomains by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1376
ci(cloudflare): deploy landing and docs workers by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1377
docs: update domains and stale paths for the 4-app topology by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1378
fix(dashboard): unblock production deploy (cron over account limit) + shiki type by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1380
ci: add manual decommission workflow for old workers by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1381
fix(dashboard): restore health-sweep cron after decommission by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1382
fix(dashboard): improve mobile layout for page header and table cards by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1384
docs: revamp docs site theme, fix sidebar, add app READMEs by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1387
fix(charts): stop lazy charts reloading on scroll-back by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1383
refactor(mcp): unify MCP HTTP handler across worker + in-process route by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1386
feat(cloudflare): cloud→dash 301 via edge Redirect Rule + track MCP secret by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1385
ci(cloudflare): per-app preview subdomains mirroring prod topology by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1389
fix(deps): update dependency astro to v6 [security] by @renovate[bot] in https://github.com/duyet/clickhouse-monitoring/pull/1372
feat(mcp): Clerk OAuth for MCP — login/consent flow + REST verify by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1388
fix(docs): add remark-gfm for markdown table rendering in MDX by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1390
fix(mcp): wire CLERK_SECRET_KEY to MCP worker deploys + bound Clerk verify by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1391
feat(dashboard-tsr): TanStack Start substrate spike by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1406
feat(dashboard-tsr): shared config + env bridge + @chm/* seam by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1407
feat(dashboard-tsr): @chm/clickhouse-client on workerd + 3 API routes by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1408
feat(dashboard-tsr): dual-target build — Cloudflare Workers + Docker/Node by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1410
feat(dashboard-tsr): routing + TanStack Query + static prerender by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1411
feat(dashboard-tsr): 4 more API routes (timezone, host-status, notifications, health) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1412
feat(dashboard-tsr): Clerk auth provider gating (@clerk/tanstack-react-start) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1413
refactor(dashboard-tsr): address CodeRabbit review findings by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1414
feat(dashboard-tsr): query-config + chart/table registry foundation by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1415
feat(dashboard-tsr): shadcn UI primitives + skeletons foundation by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1416
docs(knowledge): TanStack Start migration roadmap to 100% by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1417
feat(dashboard-tsr): data-table system + chart base + shared components (#1393) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1418
feat(dashboard-tsr): chart components + API routes + query-config bulk port (#1394) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1419
feat(dashboard-tsr): port 75 dashboard pages → TanStack Start (Phase 4, #1402) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1420
feat(dashboard-tsr): port ~22 Next API routes to TanStack Start (Phase 5, #1396) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1422
feat(dashboard-tsr): in-process MCP route + fix logs/ gitignore drop (#1398) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1421
fix(dashboard-tsr): P1 runtime fixes from Codex review (#1421) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1423
feat(ci): add preview deployment for TanStack Start dashboard by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1424
feat(dashboard-tsr): port logs/peerdb/docs pages + simple/infra API routes + lint-clean (#1396 #1402) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1425
feat(dashboard-tsr): port AI agent subsystem to TanStack Start (#1401) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1426
fix(dashboard-tsr): stub browser-only libs in SSR to fit 3 MiB worker limit by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1427
feat(dashboard-tsr): port cluster-topology API + fix explorer 400 validation (#1392) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1429
feat(dashboard-tsr): port middleware.ts to TanStack auth guards (#1397) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1428
fix(dashboard-tsr): perf + dual-target build fixes (#1392) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1430
test(dashboard-tsr): fix stale clerk test + add test script (#1392) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1431
fix(dashboard-tsr): drop trailing-slash redirect (~55ms/page) (#1392) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1432
feat(dashboard-tsr): wire app chrome + port shadcn theme (#1392) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1433
refactor(dashboard-tsr): split the 4 largest faithful-port components (#1392) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1434
fix(dashboard-tsr): migrate client env NEXT_PUBLIC_* → VITE_* (#1392) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1435
feat(dashboard-tsr): post-deploy verify skill + env normalization (#1392) by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1436
Full Changelog: https://github.com/duyet/clickhouse-monitoring/compare/v0.2.5...v0.2.6
Full release notes
eb64ac5 on 2026-06-04T03:40:58.673Z.
ghcr.io/duyet/clickhouse-monitoring:0.2.6
ghcr.io/duyet/clickhouse-monitoring:0.2, ghcr.io/duyet/clickhouse-monitoring:0, and ghcr.io/duyet/clickhouse-monitoring:latest.
ghcr.io/duyet/clickhouse-monitoring:sha-eb64ac5
v0.2.5
This release introduces significant UI/UX overhauls, major enhancements to AI agent capabilities, improved performance, and critical security hardening.
AI Agent Enhancements:
Redesigned Agent page featuring a welcome screen, settings sidebar, and collapsible rail.
Advanced features: Chain-of-thought processing, ghost reasoning, real-time stats/timing, and theme-aware mermaid diagram rendering.
Improved diagnostic tools and streamlined chat UI.
UI/Design System Overhaul:
Unified design across Overview, Running Queries, and Query detail pages.
Enhanced Data Table components: added row expansion, per-column filters, filter bars, and virtualized scrolling for large datasets.
Refined styling: removed residual shadows for a cleaner look and improved mobile responsiveness.
Query & Monitoring:
Redesigned Query Activity Heatmap with KPI summaries and direct click-through to history.
Added Query Views Log page and improved diagnostic capabilities.
Performance & Infrastructure:
Significant performance gains in table rendering and chart loading.
Optimized Cloudflare worker deployment (reduced bundle size).
Enforced stricter authz boundaries and SQL validation.
Hardened MCP and Agent API endpoints with mandatory API key/bearer auth.
Removed browser-exposed API key flows and improved DNS pinning for browser fetches.
Patched critical CVE dependencies.
CI/CD: Optimized Docker workflows, updated build dependencies (Node 24, pnpm v11), and stabilized test environments.
Code Quality: Pruned dead code, refined automation scripts, and improved documentation accessibility via prerendered pages.
Bug Fixes: Resolved various UI alignment issues, TypeErrors, memory handling bugs in tables, and improved query-id identity handling.
---
*For the full list of changes and detailed commit history, view the [Full Changelog](https://github.com/duyet/clickhouse-monitoring/compare/v0.2.4...v0.2.5).*
fix(history-queries): apply URL filter params by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1011
fix(history-queries): parse empty numeric filters by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1012
refactor(history-queries): share filter predicates by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1014
docs(claude): note code-smell maintenance workflow by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1015
fix(history-queries): preserve zero filter params by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1016
feat(ui): upgrade shadcn chart config by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1013
refactor(agents): split chat area components by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1017
feat(wasm): add Rust WASM benchmark pilot by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1018
chore(maintenance): remove dead chat prop by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1022
docs(claude): add direct script workflow commands by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1023
test(wasm): fix monitor core mock exports by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1024
feat(query): add Query Views Log page and legacy query_log fallbacks by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1020
fix(explorer): prevent SQL editor change feedback loop by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1019
feat: query views monitoring, chart refactoring, CI coverage by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1025
test(clickhouse): remove empty cleanup hook by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1026
docs(claude): add missing workflow script commands by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1027
Add Rust CLI tools, API key auth, CI/release workflows, and benchmarks by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1021
Use timing-safe API key check and reduce agent production logging; add security scan report by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1029
fix(query): use query views peak memory column by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1028
fix(charts): guard chart render callbacks by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1030
chore(code-quality): prune dead shared mapper helpers by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1031
chore(code-quality): add 2026-05-07 smell scan report by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1032
feat: add AI agent query insights, mermaid rendering, and insights page by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1033
feat(insights): add date range support, busy day stats, and auto-hide empty charts by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1034
feat(docs): split dashboard and docs layouts by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1035
ci(docker): extend arm64 build timeout by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1036
fix(cli): update ratatui for lru advisory by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1037
refactor(skills): rewrite query-optimization SKILL.md by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1042
refactor(skills): deduplicate troubleshooting SKILL.md by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1043
refactor(skills): rewrite clickhouse-best-practices SKILL.md by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1047
fix(skills): standardize format for 3 remaining skills by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1048
fix(skills): add missing export and strip quotes from descriptions in skills registry by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1049
feat(skills): enrich migration-patterns SKILL.md by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1050
feat(skills): enrich cluster-operations SKILL.md by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1045
chore(skills): regenerate skills registry after optimization by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1051
chore(deps): update dependency @hono/node-server to v2 by @renovate[bot] in https://github.com/duyet/clickhouse-monitoring/pull/1053
chore(deps): update nextjs monorepo to v16.2.6 - autoclosed by @renovate[bot] in https://github.com/duyet/clickhouse-monitoring/pull/1038
feat: add more insight KPI metric cards and Context7 integration by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1054
feat: add SVG favicon by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1056
chore(deps): update pnpm to v11 by @renovate[bot] in https://github.com/duyet/clickhouse-monitoring/pull/1057
chore(deps): update dependency lint-staged to v17 by @renovate[bot] in https://github.com/duyet/clickhouse-monitoring/pull/1055
chore(deps): update actions/checkout action to v6 by @renovate[bot] in https://github.com/duyet/clickhouse-monitoring/pull/1039
chore(deps): update commitlint monorepo to v21 (major) by @renovate[bot] in https://github.com/duyet/clickhouse-monitoring/pull/1046
chore(deps): update dependency @cypress/request to v4 by @renovate[bot] in https://github.com/duyet/clickhouse-monitoring/pull/1052
chore(deps): update actions/upload-artifact action to v7 by @renovate[bot] in https://github.com/duyet/clickhouse-monitoring/pull/1041
chore(deps): update codecov/codecov-action action to v6 by @renovate[bot] in https://github.com/duyet/clickhouse-monitoring/pull/1044
chore(deps): update actions/github-script action to v9 by @renovate[bot] in https://github.com/duyet/clickhouse-monitoring/pull/1040
fix(deps): update dependency @opennextjs/aws to v4 by @renovate[bot] in https://github.com/duyet/clickhouse-monitoring/pull/1059
chore(deps): update softprops/action-gh-release action to v3 by @renovate[bot] in https://github.com/duyet/clickhouse-monitoring/pull/1058
feat: add SVG favicon and clean up AI agent artifacts by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1060
chore: replace transition-all with specific transition properties by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1063
feat: add navigation link to /docs in sidebar and README by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1064
fix(deps): update rust crate toml to v1 by @renovate[bot] in https://github.com/duyet/clickhouse-monitoring/pull/1062
fix(deps): update rust crate dirs to v6 by @renovate[bot] in https://github.com/duyet/clickhouse-monitoring/pull/1061
fix(ui): card shadows, badge hover, zoom dialog, add chart insights by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1065
fix(agent): require bearer auth for agent API by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1066
fix(ci): disable automatic PR preview deploy trigger by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1069
fix(agent): sanitize client message history roles by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1083
fix(agents): disable runtime skill registration endpoint by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1082
fix(agent): disable destructive control tools by default by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1080
fix(auth): fail closed for conversation db user resolution by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1079
fix(mcp): require api key auth for mcp endpoint by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1078
fix(agents): remove query-param auto-submit flow by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1077
fix(security): pin init events table to system database by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1076
fix(agents): disable runtime skill registration endpoint by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1075
fix(agents): sanitize chart config keys in style vars by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1074
fix(ci): restrict PR Docker workflow publish permissions by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1073
fix(ci): validate and sanitize release tag handling by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1072
fix(auth): remove browser-exposed api key flow by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1071
fix(api): enforce query allowlist for GET /api/v1/data by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1070
fix(ci): disable PR-triggered cloudflare deploy workflow by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1068
fix(auth): enforce Clerk auth on actions API by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1067
fix(ci): avoid running repo secret script in preview by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1081
feat(auth): add ClerkAuthProvider and fix lint issues by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1084
fix(ci): add explicit release types to fix startup_failure by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1086
fix(ci): remove invalid job-level permissions escalation by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1088
fix(security): harden mcp auth and trim dead code by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1090
fix(agents): resolve chat memo dependency warning by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1091
refactor(docs): read docs content from source files by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1092
chore(security): add bun package age gate by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1093
chore(docs): add core automation memory by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1094
refactor(docs): consolidate docs into linked knowledge graph by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1095
fix(api): dashboard settings reduce on non-array by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1096
fix(automation): harden settings route and sync core memory by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1097
feat(auth): add sparse feature permissions by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1098
chore(security): harden dependencies and docs by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1099
fix(ci): use Node 22 for Cloudflare deploy by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1100
fix(ci): keep Cloudflare deploy on Wrangler by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1101
fix(deploy): reduce Cloudflare worker size by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1102
chore(automation): remove dead exports from recent changes by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1103
fix(security): harden browser connection fetch by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1104
fix(deploy): avoid bundling undici in worker by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1105
fix(security): harden browser fetch DNS pinning by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1106
fix(auth): inline NEXT_PUBLIC_AUTH_PROVIDER at build time by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1107
feat(agents): user tracking for OpenRouter analytics by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1108
fix(overview): stabilize card heights and add chart variety by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1109
feat(agents): unify app attribution headers across providers by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1110
fix(ci): stabilize docker install and agent tests by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1111
fix(ci): avoid bun prepare during docker install by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1112
fix(ci): restore docker deps for cloudflare build import by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1113
docs(workflow): document worktree fallback for PR operations by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1116
chore(deps): update cloudflare/wrangler-action action to v4 by @renovate[bot] in https://github.com/duyet/clickhouse-monitoring/pull/1114
chore(deps): update dependency node to v24 by @renovate[bot] in https://github.com/duyet/clickhouse-monitoring/pull/1115
feat(agents): add ClickHouse diagnostics tools by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1119
chore(automation): record empty-window scan fallback by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1120
fix(auth): default agent and actions features to authenticated by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1117
fix(ai): prevent provider key fallback leakage by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1118
feat(agents): improve AnyRouter errors and metadata UI by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1121
fix(agents): simplify followup UI state by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1122
chore(automation): remove dead export and refine scan commands by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1123
fix(ui): improve agent errors and overview charts by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1124
fix(deps): patch critical CVE advisories by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1125
fix(api): prevent client queryConfig SQL override by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1126
fix(api): prevent client queryConfig SQL override by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1129
fix(security): enforce authz boundaries and harden SQL validation by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1128
fix(security): enforce authz boundaries and harden SQL validation by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1127
chore(automation): remove unused overview helpers by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1131
fix(api): address conversation migration and agent UX bugs by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1130
feat(running-queries): add syntax highlighting and beautify to query dialog by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1132
feat(docs): prerender documentation pages by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1133
fix(table): allow standard cells to wrap by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1134
fix(table): stop default polling by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1135
perf(table): avoid row key scans by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1136
fix(table): keep paginated rows standard by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1137
perf(table): commit resize on drag end by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1138
fix(table): cap API result rows by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1139
feat(table): show capped result state by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1140
refactor(table): use alert for missing tables by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1141
fix(table): stack footer controls on small screens by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1142
refactor(table): use button for clear filters by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1143
refactor(table): use button for column options by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1144
refactor(table): use button for expandable cells by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1145
fix(running-queries): improve mobile query UI by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1148
refactor(data-table): use checkbox component for row selection by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1149
fix(data-table): virtualize large table pages by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1150
refactor(table): use button for drag handles by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1146
refactor(data-table): use shadcn empty state by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1151
fix: resolve correctness bugs from repository bug scan by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1147
feat(charts): optimize card loading, rendering performance, and error presentation by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1154
feat(running-queries): improve process table layout by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1153
fix(layout): improve mobile query header by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1152
feat(history-queries): schema-driven dynamic filter system by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1155
feat(running-queries): redesign as compact card list by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1156
feat: apply new design to Overview & Running Queries by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1157
fix(running-queries): harden query-id identity handling by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1159
feat(agents): migrate /agents UI to assistant-ui by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1158
fix(e2e): remove hardcoded visit timeouts by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1160
chore(deps): update dorny/paths-filter action to v4 by @renovate[bot] in https://github.com/duyet/clickhouse-monitoring/pull/1162
fix(query): guest visibility for /query + history-queries column overflow by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1164
feat(agent): collapsible left rail, per-tool toggles, instant model switch by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1168
feat(agent): redesign AI Agent page with welcome screen + settings sidebar by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1167
feat(query): redesign /query detail page with CHM design system by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1163
chore(deps): update pnpm to v11 by @renovate[bot] in https://github.com/duyet/clickhouse-monitoring/pull/1166
chore(deps): update github artifact actions (major) by @renovate[bot] in https://github.com/duyet/clickhouse-monitoring/pull/1165
chore(deps): update docker/metadata-action action to v6 by @renovate[bot] in https://github.com/duyet/clickhouse-monitoring/pull/1161
fix(cf-deploy): prerender pages to ASSETS, split MCP worker, fit 3 MiB cap by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1169
fix: running-queries TypeError and history-queries alignment by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1171
fix(query-detail): remove non-existent query_finish_time column by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1172
fix(data-table): fix header alignment and font consistency by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1173
fix(data-table): vertically center cell content by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1174
feat(agent): use @preset/chmonitor as default model by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1175
fix(agents): polish chat UI and add thread title generation by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1176
fix(agents): apply web interface guidelines by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1177
feat(ui): adopt transitions by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1178
feat(charts): redesign Query Activity Heatmap with KPIs, click-through to history queries by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1179
fix(data-table): sort/resize hit areas + dense BackgroundBar by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1180
fix: table resize + agent UI cleanup + longer agent step budget by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1181
fix(agent): change default model away from broken preset by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1182
fix(agents): tighten SQL/code block vertical spacing by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1184
feat(agents): MCP config panel in right sidebar by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1185
feat(agents): theme-aware mermaid diagrams in chat by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1186
feat(agents): Streamdown audit + theme-aware syntax highlighting by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1187
fix(data-table): scale heading in compact/dense density modes by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1183
feat(agents): chain-of-thought, error, stats, timing, ghost reasoning by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1188
fix(tests): green up unit-tests on main by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1189
fix(agents): mobile-responsive settings via shadcn Drawer by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1190
fix(tables): broken data tab query, large column OOM, and table re-render performance by @levivannoort in https://github.com/duyet/clickhouse-monitoring/pull/1191
fix(explorer): share truncateLargeValues across query and preview routes by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1192
fix(feedback): render table guidance instructions as markdown by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1194
feat(charts): smart compact chart row with KPI summaries while hidden by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1195
fix(data-table): restore column resize, sort, and header layout by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1196
fix(agents): hide Thinking on error, surface CF 1027 cleanly by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1197
feat(host): show version and uptime in host switcher popover by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1199
feat(data-table): row expansion, per-column filters, filter bar by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1193
feat(health): expand checks, drop shadows, add threshold + alert config by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1198
style(ui): remove box-shadow from cards and buttons by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1200
perf(tables): make the
style(ui): drop residual shadow utilities from cards and buttons by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1202
fix(explorer): render deep-linked tab and stop 500 on missing ddl queue by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1203
fix(explorer): preserve selected tab when switching tables in tree by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1204
fix(agent): coerce string hostId in tool calls and add system-tables skill by @duyet in https://github.com/duyet/clickhouse-monitoring/pull/1205
@levivannoort made their first contribution in https://github.com/duyet/clickhouse-monitoring/pull/1191
Full Changelog: https://github.com/duyet/clickhouse-monitoring/compare/v0.2.4...v0.2.5
Full release notes
query pane be able to be rendered by @levivannoort in https://github.com/duyet/clickhouse-monitoring/pull/1201