Skip to content

Notify users when an extension update is available #17

Description

@Jorriss

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

  • Up-to-date: About shows "You have the latest version."; no banner.
  • Update available: banner appears on the Parse Statistics tab; Dismiss hides it until the next release; About shows "Version X is available" with a working Download link.
  • Opt-out: unchecking "Check for Updates" in Options suppresses the banner and the About auto-check; the manual button still works.
  • Failure path: offline/proxy failures surface as "Couldn't check for updates." in About and never disrupt SSMS.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions