Skip to content

[Feature]: Spec 079 FR-002: upgrade delta follow-up #1081

Description

@loloDawit

Problem / motivation

Spec 079 FR-002 describes a human-readable "N releases / M weeks behind" delta for the upgrade nudge, but this appears to still be outstanding.

PR #798 explicitly deferred this as a follow-up, and the related TODO(spec-079/FR-002) comments are still present on main in internal/updatecheck/checker.go and cmd/mcpproxy/status_cmd.go.

From what I can tell, the subsequent Spec 079 work implemented the other slices, but the release/age delta itself was never added.

I'd be interested in picking this up if it's still something you'd like implemented.

Proposed solution

My initial thought is to extend the existing update-check information with the release/age delta and expose it through the existing upgrade-nudge surfaces.

For a first slice, I was thinking:

  • compute the release/age delta in internal/updatecheck
  • extend VersionInfo additively with the delta information
  • render it through the Go-side surfaces (status, doctor, and the update announcement)
  • add coverage using the existing update-check and status tests

Before I start implementation, I'd like to confirm the intended scope: would you prefer the first PR to cover the Go-side surfaces, with the Web UI/tray integrations following separately, or should FR-002 be implemented across all of the surfaces in one PR?

Alternatives considered

Keep the current latest-version-only messaging as-is. This avoids fetching additional release metadata, but doesn't provide the relative upgrade urgency described by FR-002.

Which edition?

Both / not sure

Pre-submission checklist

  • I searched existing issues and discussions for a similar request

Activity

  1. Dumbris commented on Aug 29, 2026

    @Dumbris
    Member

    Thanks for digging into this @loloDawit — your read was spot on. Those TODO comments were the only place the deferral was still recorded, so nothing in the spec or roadmap would ever have surfaced it. Spec 079 doesn't even have a tasks.md, which is partly why it slipped.

    On the scope question: ended up doing all the surfaces in one pass rather than splitting it. The rendering turned out to be the easy half — the actual blocker was data. The checker only ever fetched /releases/latest, so it had no tag sequence to count and no publish date for the version you're running. That needed sorting first, and once it was, the surfaces were mostly one-liners.

    Shipped in #1085. Sorry for grabbing it after you offered to pick it up — genuinely good catch, thanks for taking the time to trace it properly rather than just filing "delta missing".

  2. added a commit that references this issue on Aug 31, 2026
    0d70772
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions