Summary
SSMS 22 has no extension-management UI, so users have no built-in way to learn that a newer Statistics Parser has been released. This adds update-availability notification (no auto-updating — notification only).
Full design: docs/UPDATES.md.
Scope
- Version source ("Option B") — a
latest-version.json committed to the repo root, served from the GitHub raw CDN (avoids the rate-limited GitHub API).
- Passive notification — a dismissible InfoBar-style banner at the top of the Parse Statistics tab when a newer version is known. Network fetch throttled to once per 24h; throttle/dismiss state persisted to
%LocalAppData%\StatisticsParser\update-state.json.
- Active notification — the About window auto-checks on open and offers a manual Check for Updates button, alongside the current version number.
- Opt-out — a "Check for Updates" toggle on the Tools > Options page that gates automatic checks; the manual About button still works when it is off.
Implementation notes
- JSON parsed with
DataContractJsonSerializer (no new package dependency), matching the Core project's no-external-deps style.
- New
source/StatisticsParser.Vsix/Updates/ namespace: UpdateInfo, UpdateCheckResult, VersionManifest, UpdateState, UpdateStateStore, UpdateCheckService.
- Version comparison via
System.Version (never string compare); current version from AssemblyFileVersion.
- Update checks are strictly best-effort — every failure path is swallowed and never delays SSMS startup.
Acceptance criteria
Summary
SSMS 22 has no extension-management UI, so users have no built-in way to learn that a newer Statistics Parser has been released. This adds update-availability notification (no auto-updating — notification only).
Full design: docs/UPDATES.md.
Scope
latest-version.jsoncommitted to the repo root, served from the GitHub raw CDN (avoids the rate-limited GitHub API).%LocalAppData%\StatisticsParser\update-state.json.Implementation notes
DataContractJsonSerializer(no new package dependency), matching the Core project's no-external-deps style.source/StatisticsParser.Vsix/Updates/namespace:UpdateInfo,UpdateCheckResult,VersionManifest,UpdateState,UpdateStateStore,UpdateCheckService.System.Version(never string compare); current version fromAssemblyFileVersion.Acceptance criteria