SIGN IN SIGN UP

fix(telemetry): normalize version string to always carry v prefix (#387)

The telemetry dashboard was showing duplicate rows for the same release
(e.g. `0.22.0` and `v0.22.0`) because `telemetry.go` emitted whatever
`s.version` contained without normalization. Official mcpproxy releases
embed `v`-prefixed versions, but third-party builds using custom
Dockerfiles with `--build-arg VERSION=0.22.0` drop the prefix, splitting
the cohort.

Add a `normalizeVersion` helper that prepends `v` when the bare string
is a valid semver, leaves already-prefixed strings alone, and passes
through invalid values like `dev` / `development` / `""` unchanged so
the downstream `isValidSemver` gate can still filter them out and debug
logs retain the original garbage.

Apply normalization at the single central point (the `New` constructor)
so every consumer of `s.version` — heartbeat payloads, the upgrade
funnel cursor, the `telemetry show-payload` command — sees the same
normalized form.

Co-authored-by: Claude Code <noreply@anthropic.com>
D
Dumbris committed
f7b7b0134f036465de994242c26a9f10a7feabe8
Parent: 77c2b37
Committed by GitHub <noreply@github.com> on 4/13/2026, 5:09:35 PM