Skip to content

Releases: chmonitor/chmonitor

v0.3.7

Choose a tag to compare

@github-actions github-actions released this 11 Oct 08:57
388751c

The latest release of chmonitor enhances your dashboard experience with updates you won’t want to miss. With streamlined access to data insights, users can focus on what matters most. Explore the new features that provide an even smoother operational experience!

Highlights

  • Dashboard Enhancements

✨ Features

  • Introduce improvements to the dashboard UI for easier navigation and data access.

🐛 Fixes

  • Fix minor bugs affecting user interactions with dashboard elements.

⚡ Performance

  • Enhance the overall responsiveness of the dashboard for better user experience.

📊 Release recap

  • 📦 1 commit across 1 pull request
  • 🗓️ Shipped over 1 day — pace ~1.0 commits/day
  • 🌞 1 daytime · 🌙 0 night-time commits
  • 👥 1 contributor
  • 💬 1 comment back and forth across reviews
  • 🤖 1 AI agent involved
  • 🏆 Shoutout to @github-actions[bot] — 1 comment, 0 code reviews, 0 approvals

🐳 Docker image

This release is published to the GitHub Container Registry as ghcr.io/chmonitor/chmonitor:0.3.7.

docker pull ghcr.io/chmonitor/chmonitor:0.3.7
docker pull ghcr.io/chmonitor/chmonitor:0.3.7

Pin it in your own Dockerfile:

FROM ghcr.io/chmonitor/chmonitor:0.3.7

🔁 Full changelog

Compare: helm-chmonitor-0.2.17...v0.3.7

Built from commit 388751c on 2026-10-11T09:04:12.398Z · summary by anyrouter.

🚚 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 to VITE_*
and server auth moves to CHM_*. 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.3.7 (2026-10-11)

✨ Features

  • agent: add a read-only PeerDB metrics tool (#3446) (6155681)
  • agent: add a tool catalog with a search_tools discovery tool (#3459) (1413eb7)
  • agent: add NVIDIA model discovery and correct the curated model floor (#3447) (ad4d849)
  • agent: control tools on by default for self-hosted, off in cloud (#3758) (5eb8da7)
  • agent: default to a model from whichever provider key is set (#3718) (dff8f20)
  • agent: export conversation history as JSONL (#3693) (3b91c20)
  • agent: get_page_data reads what any dashboard page shows (#3721) (8c481f1)
  • agent: return grouped PeerDB log patterns from the PeerDB tools (#3710) (1713bfe), closes #3678
  • agents: fold all but the first sidebar section, restore header counts (#3441) (9d905cf)
  • agent: sign in with AnyRouter for guests and signed-in users, behind a flag (#3722) (cc3479f)
  • agent: sign in with AnyRouter UI — settings row, expiry prompt, guest entry point (#3725) (c6a2cf4)
  • alerts: add declarative health config loader (#3507) (009269a)
  • alerts: apply alerts.yaml thresholds to the sweep and current findings (#3541) (84eaad6)
  • alerts: merge declarative alert definitions through one source layer (#3533) (9ba36f9)
  • alerts: regroup the seven Advanced sections by job (#3559) (cb82e0c), closes #3438
  • alerts: report per-feature health write capability in /api/v1/config (#3528) (98c20db)
  • alerts: store built-in check alert names in custom_alert_rules (#3557) (61f0bc7)
  • blog: show the post author byline (#3608) (bbb2350)
  • cloud: show a demo-unavailable banner when the demo host is down (#3594) (7a328e9)
  • config: read CHM_CONFIG_FILE for feature permissions (#3506) (55149ab), closes #3494
  • docs: blog-style theme, typography and article header (#3717) (41e7de2)
  • docs: generate rule, tool, env and version lists from code with a drift test (#3724) (7a7017b)
  • docs: ...
Read more

helm-chmonitor-0.2.17

Choose a tag to compare

@github-actions github-actions released this 11 Oct 08:57
a72c7f2

A Helm chart for the chmonitor dashboard

chm-v0.1.4-beta.36

chm-v0.1.4-beta.36 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Oct 20:08
95ac346

What's Changed

  • feat(agents): fold all but the first settings-rail section and restore header counts by @duyet in #3441
  • fix(agents): fold the Conversations rail and drop the duplicate welcome list by @duyet in #3442
  • docs(knowledge): audit metadata-DB-optional configuration by @duyet in #3443
  • fix(agents): MCP server toggles reach the agent runtime without a reload by @duyet in #3445
  • feat(agent): add NVIDIA model discovery and correct the curated model floor by @duyet in #3447
  • feat(agent): add a read-only PeerDB metrics tool by @duyet in #3446
  • feat(health): configure an alert from the detail dialog and show alerting state by @duyet in #3448
  • chore(ops): four desk jobs, issue→research→PR protocol, verify-production skill by @duyet in #3450
  • fix(ci): make the lint gate real again by @duyet in #3451
  • fix(ops): add the compensating data check the prod watch actually needs by @duyet in #3452
  • docs(knowledge): record that the cloud demo host must resolve over public DNS by @duyet in #3453
  • fix(docs): point AGENTS.md at the current source paths by @duyet in #3455
  • fix(docs): point docs/knowledge at the current source paths by @duyet in #3456
  • feat(landing): sponsor slot under the hero, and Donate → Sponsor on /license by @duyet in #3461
  • chore(cloud): point the demo allowlist at the renamed public demo host by @duyet in #3462
  • feat(agent): add a tool catalog with a search_tools discovery tool by @duyet in #3459
  • feat(landing): forward sponsor details to Polar, add AnyRouter, shrink the open slot by @duyet in #3464
  • fix(sponsor): reject placeholder emails before Polar 422s the checkout by @duyet in #3465
  • feat(landing): a $19 rung, a boxless logo row, and no provider in the copy by @duyet in #3466
  • feat(landing): track the sponsor links with ref and utm params by @duyet in #3467
  • docs(agents): teach the current stack in AGENTS.md's live sections by @duyet in #3468
  • fix(ci): exclude in-repo agent worktrees from Biome and git by @duyet in #3470
  • docs(blog): release post for v0.3.5 + v0.3.6 by @duyet in #3471
  • feat(nav): hide unavailable pages by default, and extend hiding to the metadata-DB class by @duyet in #3472
  • fix(docs/knowledge): retire three notes' dead subsystems and dead verify commands by @duyet in #3469
  • docs(knowledge): document the PeerDB insights source in ai-insights.md by @duyet in #3473
  • fix(sponsor): Polar product rename, plus a README and image tags that match the release by @duyet in #3475
  • docs(knowledge): correct the sponsor ladder and drop the dead Cloud Pro tier by @duyet in #3476
  • fix(landing): the sponsor offer guard only ever checked /sponsors by @duyet in #3477
  • fix(insights): drop the unreachable peerdb_ cases from deriveAction by @duyet in #3478
  • fix(observability): point the hosted Sentry DSN at Bugsink by @duyet in #3479
  • fix(api): no-store the /api/healthz readiness response by @duyet in #3481
  • docs(knowledge): the desk has a second silent-death mode, and its plugin runs unreviewed by @duyet in #3484
  • docs(knowledge): Fails is a floor — the 200-record window under-reports desk streaks by @duyet in #3485
  • docs(knowledge): restore the correct self-recovery timestamp by @duyet in #3486
  • chore(desk): add four audit jobs and gate markdown link rot in CI by @duyet in #3489
  • docs(knowledge): correct the metadata-DB premise behind #3440 by @duyet in #3491
  • docs(knowledge): record the #3440 design decisions (B, implement CHM_CONFIG_FILE) by @duyet in #3492
  • docs(knowledge): index the #3440 follow-up issues by @duyet in #3500
  • docs(knowledge): define the config merge contract and its priority order by @duyet in #3501
  • fix(ci): triage issues with the OAuth token and an inline label prompt by @duyet in #3502
  • docs(knowledge): record that the zone caches dashboard responses by @duyet in #3504
  • docs(desk): reconcile run summary claims before the improve job stops by @duyet in #3503
  • fix(ci): name the app label in the triage prompt by @duyet in #3505
  • feat(config): read CHM_CONFIG_FILE for feature permissions by @duyet in #3506
  • feat(alerts): add declarative health config loader by @duyet in #3507
  • fix(healthz): fall back to 3000ms on a non-positive timeout by @duyet in #3517
  • fix(advisor): only query part_log when the existence probe is true by @duyet in #3518
  • fix(sponsor-checkout): build the invalid-tier error from SPONSOR_TIER_IDS by @duyet in #3521
  • fix(insights): rank per-mirror PeerDB findings by severity before the cap by @duyet in #3519
  • fix(nav): collapsed sidebar flyout uses the visible children like the expanded rail by @duyet in #3520
  • refactor(clickhouse-client): reuse the cached table-existence probe in clickhouse-version by @duyet in #3524
  • fix(clickhouse-client): invalidateTable clears the KV L2 entry and column keys by @duyet in #3522
  • test(nav): cover CollapsedSubmenu's own all-children-hidden guard by @duyet in #3523
  • fix(alerts): derive metadataDb.available from the state-backend resolver by @duyet in #3525
  • chore(deps): bump ip-address from 10.5.0 to 10.5.1 in /apps/dashboard by @dependabot[bot] in #3490
  • feat(alerts): report per-feature health write capability in /api/v1/config by @duyet in #3528
  • fix(api): stop menu-counts faking success when the host is down by @duyet in #3530
  • docs(knowledge): record the daemon going dark without a trace by @duyet in #3531
  • style(tests): sort menu-counts test imports to satisfy Biome organizeImports by @duyet in #3532
  • feat(alerts): merge declarative alert definitions through one source layer by @duyet in #3533
  • fix(alerts): make ACK honest when no metadata DB can persist it by @duyet in #3535
  • docs(alerts): document the DB-free operator path by @duyet in #3536
  • fix(host-status): forbid shared caching so a dead host cannot read as up by @duyet in #3537
  • fix(alerts): correct webhook target override copy after id-based merge by @duyet in #3540
  • docs(knowledge): date the undated notes and drop a refactor that finished by @duyet in #3542
  • feat(alerts): apply alerts.yaml thresholds to the sweep and current findings by @duyet in #3541
  • fix(agent): make anyrouter:auto the guest default and drop the client override by @duyet in #3545
  • fix(deps): bump wrangler to 4.143.1+ and floor undici at 7.29.1 by @duyet in #3547
  • fix(api): send private, no-store on per-host and per-user API responses by @duyet in #3546
  • fix(agent-eval): replace meituan/longcat-2.0 with anyrouter:auto and anyrouter:anyrouter/agent by @duyet in #3549
  • fix(charts): classify not-enough-privileges as permission error by @duyet in #3544
  • fix(agent-eval): use a grader model id AnyRouter accepts by @duyet in #3550
  • fix(alerts): restore name-based shadowing of custom webhook targets by @duyet in #3551
  • fix(alerts): discard in-memory alert state on first metadata DB attach by @duyet ...
Read more

v0.3.6

Choose a tag to compare

@github-actions github-actions released this 25 Sep 17:10
23aa39f

📊 Release recap

  • 📦 1 commit across 1 pull request
  • 🗓️ Shipped over 1 day — pace ~1.0 commits/day
  • 🌞 1 daytime · 🌙 0 night-time commits
  • 👥 1 contributor
  • 💬 4 comments back and forth across reviews
  • 🤖 2 AI agents involved
  • 🏆 Shoutout to @github-actions[bot] — 3 comments, 0 code reviews, 0 approvals

🐳 Docker image

This release is published to the GitHub Container Registry as ghcr.io/chmonitor/chmonitor:0.3.6.

docker pull ghcr.io/chmonitor/chmonitor:0.3.6
docker pull ghcr.io/chmonitor/chmonitor:0.3.6

Pin it in your own Dockerfile:

FROM ghcr.io/chmonitor/chmonitor:0.3.6

🔁 Full changelog

Compare: helm-chmonitor-0.2.16...v0.3.6

Built from commit 23aa39f on 2026-09-25T17:17:15.859Z.

🚚 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 to VITE_*
and server auth moves to CHM_*. 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.3.6 (2026-09-25)

✨ Features

  • agent: read-only PeerDB mirror-status tool (#3411) (5ab290a)
  • alerts: add customizable webhook targets (#3418) (b30b862)
  • alerts: configure custom webhooks via Helm (#3419) (b3dcbd4), closes #3414
  • peerdb: issue alerting — classify, format, validate, audit, investigate before delivery (#3408) (f668f22)
  • peerdb: read-only fleet metrics and AI insights support (#3412) (a9d4a47), closes #3410
  • peerdb: runtime alert cycle — collector, orchestrator, sweep dispatch wiring (#3415) (d4e57c1)

🐛 Bug Fixes

  • dashboard: keep header controls right-aligned (#3417) (9a1f842)
  • landing: valid Product JSON-LD for merchant listings (#3402) (d9e91d7)
  • peerdb: close auth and cache isolation gaps (#3425) (19240b7)
  • peerdb: preserve alert auth and recovery state (#3426) (1f1b306)
  • peerdb: secure metrics cache and auth parity (#3420) (0cec85c)
  • peerdb: send uppercase log level and normalize mirror-log shapes (#3409) (968d26d)

helm-chmonitor-0.2.16

Choose a tag to compare

@github-actions github-actions released this 25 Sep 17:09
90f6b96

A Helm chart for the chmonitor dashboard

chm-v0.1.4

Choose a tag to compare

@github-actions github-actions released this 25 Sep 17:02
ea9b1f1

0.1.4 (2026-09-25)

Features

Bug Fixes

  • chm: create credential file with 0600 atomically to close chmod race (#3228) (1790fc9), closes #3224
  • cli: body-read errors, plaintext purge, rust consumer map (#3337) (5421804)
  • rust: format output.rs chain for stable rustfmt (#3238) (4e81bb5)
  • rust: format output.rs chain for stable rustfmt (#3239) (d2901cd)
  • rust: move output fns before test module for clippy (#3234) (f64dfc8)

What's Changed

  • fix(landing): valid Product JSON-LD for merchant listings by @duyet in #3402
  • feat(peerdb): issue alerting — classify, format, validate, audit, investigate before delivery by @duyet in #3408
  • fix(peerdb): send uppercase log level and normalize mirror-log shapes by @duyet in #3409
  • feat(peerdb): read-only fleet metrics and AI insights support by @duyet in #3412
  • feat(agent): read-only PeerDB mirror-status tool by @duyet in #3411
  • feat(alerts): configure custom webhooks via Helm by @duyet in #3419
  • fix(dashboard): keep header controls right-aligned by @duyet in #3417
  • feat(peerdb): runtime alert cycle — collector, orchestrator, sweep dispatch wiring by @duyet in #3415
  • fix(helm): make webhook render test portable by @duyet in #3421
  • fix(peerdb): secure metrics cache and auth parity by @duyet in #3420
  • fix(helm): require HTTPS for webhook targets by @duyet in #3422
  • test(health): isolate PeerDB sweep environment by @duyet in #3423
  • feat(alerts): add customizable webhook targets by @duyet in #3418
  • test(cypress): accept gated timezone response by @duyet in #3424
  • fix(peerdb): close auth and cache isolation gaps by @duyet in #3425
  • fix(peerdb): preserve alert auth and recovery state by @duyet in #3426
  • chore(pstack): vendor project-local validation skills by @duyet in #3429
  • chore(main): release cli chm-v0.1.4 by @github-actions[bot] in #3232

Full Changelog: v0.3.5...chm-v0.1.4

chm-v0.1.4-beta.34

chm-v0.1.4-beta.34 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 25 Sep 17:07
ea9b1f1

What's Changed

  • fix(landing): valid Product JSON-LD for merchant listings by @duyet in #3402
  • feat(peerdb): issue alerting — classify, format, validate, audit, investigate before delivery by @duyet in #3408
  • fix(peerdb): send uppercase log level and normalize mirror-log shapes by @duyet in #3409
  • feat(peerdb): read-only fleet metrics and AI insights support by @duyet in #3412
  • feat(agent): read-only PeerDB mirror-status tool by @duyet in #3411
  • feat(alerts): configure custom webhooks via Helm by @duyet in #3419
  • fix(dashboard): keep header controls right-aligned by @duyet in #3417
  • feat(peerdb): runtime alert cycle — collector, orchestrator, sweep dispatch wiring by @duyet in #3415
  • fix(helm): make webhook render test portable by @duyet in #3421
  • fix(peerdb): secure metrics cache and auth parity by @duyet in #3420
  • fix(helm): require HTTPS for webhook targets by @duyet in #3422
  • test(health): isolate PeerDB sweep environment by @duyet in #3423
  • feat(alerts): add customizable webhook targets by @duyet in #3418
  • test(cypress): accept gated timezone response by @duyet in #3424
  • fix(peerdb): close auth and cache isolation gaps by @duyet in #3425
  • fix(peerdb): preserve alert auth and recovery state by @duyet in #3426
  • chore(pstack): vendor project-local validation skills by @duyet in #3429
  • chore(main): release cli chm-v0.1.4 by @github-actions[bot] in #3232

Full Changelog: v0.3.5...chm-v0.1.4-beta.34

v0.3.5

Choose a tag to compare

@github-actions github-actions released this 21 Sep 10:08
993d169

📊 Release recap

  • 📦 36 commits across 36 pull requests
  • 🗓️ Shipped over 25 days — pace ~1.4 commits/day
  • 🌞 26 daytime · 🌙 10 night-time commits
  • 👥 4 contributors
  • 💬 84 comments back and forth across reviews
  • 🤖 3 AI agents involved
  • 🏆 Shoutout to @github-actions[bot] — 46 comments, 0 code reviews, 0 approvals

🐳 Docker image

This release is published to the GitHub Container Registry as ghcr.io/chmonitor/chmonitor:0.3.5.

docker pull ghcr.io/chmonitor/chmonitor:0.3.5
docker pull ghcr.io/chmonitor/chmonitor:0.3.5

Pin it in your own Dockerfile:

FROM ghcr.io/chmonitor/chmonitor:0.3.5

🔁 Full changelog

Compare: chm-v0.1.3-beta.33...v0.3.5

Built from commit 993d169 on 2026-09-21T10:18:35.006Z.

🚚 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 to VITE_*
and server auth moves to CHM_*. 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.3.5 (2026-09-21)

✨ Features

  • cli: add local named connections (#3356) (2209b61)
  • dashboard: Essential first-run sidebar with hover-add and More flyout (#3345) (2e83247)
  • dashboard: Essential heading dialog to add/remove group children (#3353) (0f582f0)
  • dashboard: slim default sidebar to day-to-day pages (#3294) (766e90e)
  • docs: add Home and Dashboard CTAs on every docs page (#3378) (176ee6b), closes #3376
  • landing: add /clickhouse-dashboard SEO pillar (#3385) (6ff9912), closes #3374
  • landing: add /clickhouse-monitoring SEO pillar (#3384) (9d138f1), closes #3373
  • landing: Polar donate checkout with custom amount (#3369) (1119f89), closes #3368
  • landing: rename Pricing to License and add donate chips (#3367) (a81f892), closes #3366
  • site: shared header/nav between landing and telemetry (#3396) (db4d936)

🐛 Bug Fixes

  • advisor: batch correctness, sanitization, and weekly report integration (#3340) (27d6b7d)
  • api: auth + rate-limit guards on public probe endpoints (#3391) (a95a708)
  • api: redact ClickHouse host credentials in public responses (#3397) (4eb6976)
  • api: validate hostId and harden public route error handling (#3393) (ee3ccf6)
  • auth: harden device/cron/api-key surfaces and add route tests (#3339) (c08807d)
  • ci: pass CHM_POLAR_DONATE_* from cloud-hooks env on deploy (#3370) (f9cc505)
  • cli: assemble report metrics from the repo root (#3357) (28930d8)
  • cli: body-read errors, plaintext purge, rust consumer map (#3337) (5421804)
  • cloud-hooks: billing hardening, logging, and dead-code cleanup (#3342) (36183db)
  • dashboard: a11y polish — labels, focus rings, status announcements (#3395) (419a082)
  • dashboard: address remaining a11y findings from browser sweep (#3401) (9aefc54)
  • dashboard: center the What's new dialog in the viewport (#3344) (df2d270)
  • dashboard: command palette Enter activates the highlighted row (#3350) (3dfd0c6)
  • dashboard: compact 375 day switcher and scroll overview tabs (#3293) (34113ac)
  • dashboard: keep Essential sidebar as parent/child groups (#3349) ([532fc04](https:...
Read more

chm-v0.1.3-beta.33

chm-v0.1.3-beta.33 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 27 Aug 18:23
2209b61

What's Changed

  • fix(advisor): batch correctness, sanitization, and weekly report integration by @duyet in #3340
  • perf(test): StatTile, lazy markdown, query-insights batch, sweep parity, diff tests by @duyet in #3341
  • fix(auth): harden device/cron/api-key surfaces and add route tests by @duyet in #3339
  • fix(cloud-hooks): billing hardening, logging, and dead-code cleanup by @duyet in #3342
  • fix(dashboard): center the What's new dialog in the viewport by @duyet in #3344
  • feat(dashboard): Essential first-run sidebar with hover-add and More flyout by @duyet in #3345
  • fix(dashboard): keep Essential sidebar as parent/child groups by @duyet in #3349
  • fix(dashboard): command palette Enter activates the highlighted row by @duyet in #3350
  • feat(dashboard): Essential heading dialog to add/remove group children by @duyet in #3353
  • feat(cli): add local named connections by @duyet in #3356

Full Changelog: chm-v0.1.3-beta.32...chm-v0.1.3-beta.33

chm-v0.1.3-beta.32

chm-v0.1.3-beta.32 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 26 Aug 18:14
bdb82d6

What's Changed

  • style(rust): cargo fmt credentials purge helper by @duyet in #3343

Full Changelog: chm-v0.1.3-beta.31...chm-v0.1.3-beta.32