[docs] Document VS Code outdated Aspire CLI warning - #1608
Ella Hathaway (ellahathaway) merged 4 commits into
Conversation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Frontend HTML artifact readyThe latest frontend build uploaded the This comment updates automatically when a new frontend build artifact is uploaded. |
Clarified the outdated CLI warning section for better understanding.
There was a problem hiding this comment.
🟡 Changes recommended
The new callout omits key behavioral details (lane matching, silence conditions, and per-path/version suppression scope) described as required by the PR metadata/source PR.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Adds documentation to the VS Code extension “get started” page describing the new warning notification shown when the extension detects it is using an outdated Aspire CLI.
Changes:
- Added an “Outdated CLI warning” note callout under the VS Code command palette section.
- Described when the warning can appear and the available actions in the notification.
File summaries
| File | Description |
|---|---|
| src/frontend/src/content/docs/get-started/aspire-vscode-extension.mdx | Adds a callout documenting the new VS Code outdated Aspire CLI warning behavior. |
Review details
- Files reviewed: 1/1 changed files
- Comments generated: 1
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
David Pine (IEvangelist)
left a comment
There was a problem hiding this comment.
🤖 Automated docs-accuracy review — PR #1608
Source of truth: microsoft/aspire@main @ c8c77cd55acce332fa199a1a96da408394dde8e0 — contains source PR microsoft/aspire#19670 ("Warn when VS Code uses an outdated Aspire CLI", milestone 13.6, merge 039a7c58f1).
⚠️ Branch mismatch (non-blocking). This PR targetsrelease/13.6, which does not exist inmicrosoft/aspire(latest release branch isrelease/13.5). 13.6 is still in development onmain, somainis used as the source of truth — consistent with prior reviews ofrelease/13.6-targeted docs PRs.
Phase A — claims: 5 non-narrative claims → 5 verified · 0 verified-with-nuance · 0 contradicted · 0 unverifiable.
Phase B — doc-tester: exercised /get-started/aspire-vscode-extension/ → HTTP 200, 0 console errors/warnings; insertion region present and correctly placed; the titled :::note[…] aside is already a rendered, reused component on this exact page. No new links or code introduced. Knowledge gap: the running build predates this PR.
Verdict: 🟡 COMMENT
Every factual claim in the added note is verified against source. Verdict is COMMENT (not APPROVE) only because Phase B could validate the page structure, insertion point, and the identical reused aside component, but not the rendered new prose itself (the deployed/local build predates this PR), plus one minor source-side casing nuance noted below. Nothing here blocks the PR.
Phase A — Claim verification
All 5 non-narrative claims in the added :::note[Outdated CLI warning] callout are verified. No inline comments (no contradicted/unverifiable claims).
✅ Verified claims (5) — evidence
Added text (aspire-vscode-extension.mdx, L70–72):
VS Code shows a warning when it uses an Aspire CLI executable that is outdated within its release channel. This can happen when you run or debug an app, use the Aspire terminal, or run an
Aspire: …command. For example, VS Code might warn when it finds stable CLI 13.4.0 while stable 13.5.2 is available. ChooseUpdate Aspire CLIto update the CLI orDon't Show Againto suppress warnings.
C1 — Warns when the in-use CLI is outdated within its release channel. ✅ verified
extension/src/utils/outdatedCliNotifier.ts fires showWarning(...) when compareCliVersionValues(identity.version, recommendation.version) < 0. The message is outdatedAspireCliWarning = "Aspire CLI {0} at {1} has a newer version available for its current channel: {2}." (extension/src/loc/strings.ts). configInfoProvider.ts#getCliUpdateRecommendation is documented as returning "a same-lane update … Stable installations follow stable releases and prerelease installations follow prerelease recommendations." The notifier class doc: "Checks actively used Aspire CLIs for a same-channel update."
C2 — Can appear on run/debug, Aspire terminal, or an Aspire: command. ✅ verified
notifyIfOutdated is wired via onDidResolveCliForOperation (extension/src/extension.ts:114). reportCliResolvedForOperation fires from appHostCliRunner.ts (run/debug the AppHost), AspireTerminalProvider.ts (Aspire terminal), and workspace.ts / AppHostDataRepository.ts / appHostPsPoller.ts / AppHostStopper.ts / AspirePackageRestoreProvider.ts (Aspire: commands, incl. describe/ps/stop/restore). The doc's "This can happen when …" list is a correct, representative (non-exhaustive) subset.
C3 — Example: stable 13.4.0 in use while stable 13.5.2 is available. ✅ verified
Behavior matches: within-lane comparison, warns when installed < recommended (comparison < 0), stable follows stable (getCliUpdateRecommendation doc). The version numbers are explicitly illustrative ("For example …"), so no assertion about actual releases is made.
C4 — Update Aspire CLI action updates the CLI. ✅ verified
strings.updateAspireCliAction = l10n.t({ message: 'Update Aspire CLI', … }) (exact string). package.nls.json command.updateSelf = "Update Aspire CLI". Selecting it executes aspire-vscode.updateSelf.
C5 — Don't Show Again action suppresses warnings. ✅ verified
strings.dontShowAgainLabel = l10n.t("Don't Show Again") — exact casing match to the doc. Selecting it calls _suppressNotification, which persists suppression via OutdatedCliSuppressionStore.
Minor nuance (non-blocking, source-side): package.nls.json localizes the analogous entry as "Don't show again" (lowercase "show"), but the runtime label the notifier actually passes to showWarningMessage is the strings.ts literal "Don't Show Again", which is what the doc quotes — so the doc matches the authoritative source string.
Phase B — Doc-tester results
Focus area: the single affected route derived from the PR diff — /get-started/aspire-vscode-extension/. Exercised as a new user via the browser, without consulting microsoft/aspire source.
| Category | Passed | Failed | Warnings |
|---|---|---|---|
| Content accuracy (blind read) | 1 | 0 | 0 |
| Rendering / components | 1 | 0 | 0 |
| Links | 1 (n/a — no new links) | 0 | 0 |
| Console health | 1 | 0 | 0 |
Critical issues
None.
Warnings
None.
Passed checks
- Page loads —
https://aspire.dev/get-started/aspire-vscode-extension/returns HTTP 200, title "Aspire Visual Studio Code extension | Aspire". - Console clean — 0 errors, 0 warnings (2 info) on load.
- Insertion region present & correctly placed — the Command Palette bullet list containing Aspire: Update Aspire CLI and Aspire: Install Aspire CLI renders immediately before the Live editor integration section, which is exactly where the new note is inserted.
- Reused component proven on this page — the page already renders titled note asides (
:::note[Prerequisites]→ acomplementary"Prerequisites" landmark;:::note[Debugging]). The new:::note[Outdated CLI warning]uses the identical Starlight primitive and will render the same way. - No new links or code — the note is prose plus two inline-code button labels; it introduces nothing that can 404 or fail to compile.
- Blind-user clarity — the note is self-contained: it states when the warning appears, the triggers, a concrete example, and the two actions. Understandable without prior Aspire knowledge.
Recommendations
None required.
Knowledge gap
The deployed site (and any local build) predates this unmerged PR, so the exact rendered new prose could not be observed directly. I validated the page structure, the precise insertion point, and the identical reused aside component instead. A full local PR-branch Astro build was intentionally skipped: the note adds no links or code examples and reuses a component already proven to render on this page, so the marginal value did not justify the heavy build.
Automated docs-accuracy reviewer · Phase A read microsoft/aspire@main c8c77cd5; Phase B ran the doc-tester skill blind against the live docs site. Out of scope (owned by CI): build/lint/formatting/spelling/markdown-style/broken-link checks, editorial tone.
Alistair Matthews (alistairmatthews)
left a comment
There was a problem hiding this comment.
Please consider my suggested wording, which is clearer than that suggested by Copilot.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
David Pine (IEvangelist)
left a comment
There was a problem hiding this comment.
🤖 Automated docs-accuracy review — PR #1608 (re-review of revision 5aa8db58)
Two independent phases were run and merged. Phase A verifies every factual claim against microsoft/aspire source; Phase B (doc-tester) validates the page as a new user, blind to that source. This is a re-review — the note prose was substantially rewritten since my earlier review, so it was re-evaluated in full.
ℹ️ Source-of-truth branch corrected. My earlier review (revision
f9001fe0) fell back tomainbecauserelease/13.6did not yet exist inmicrosoft/aspire. It exists now, so this review uses it — the correct source of truth for a PR targetingrelease/13.6.
Summary
- Phase A source of truth:
microsoft/aspire@release/13.6— SHAf544a9c660afc22ac6cdb5650c21eb2f908b3054(contains source PR microsoft/aspire#19670, merge039a7c58f1). - Claims extracted: 8 non-narrative — ✅ 8 verified ·
⚠️ 0 verified-with-nuance · ❓ 0 unverifiable · ❌ 0 contradicted. - Phase B (doc-tester): 1 route exercised (
/get-started/aspire-vscode-extension/) — 🔴 0 critical · 🟡 1 warning (blind-user clarity / undefined jargon). Page healthy, console clean, reused aside component proven.
Verdict: COMMENT — every factual claim in the rewritten note is verified against release/13.6. Not APPROVE only because Phase B raises a new-user clarity flag on undefined channel jargon (below) and could not observe the rendered new prose directly. Nothing here blocks the PR.
Phase A — Claim verification
All 8 non-narrative claims in the added :::note[Outdated CLI warning] (aspire-vscode-extension.mdx, L70–72) are verified. No inline comments (no contradicted/unverifiable claims).
✅ Verified claims (8) — click to expand evidence (`microsoft/aspire@release/13.6` `f544a9c660`)
Added note text:
VS Code warns when an operation uses an outdated published Aspire CLI. Stable CLIs are compared with stable releases; daily and staging CLIs are compared with prerelease releases. Local, PR, run, or unrecognized builds and cross-channel recommendations don't trigger the warning. The warning identifies the resolved executable path.
Update Aspire CLIrevalidates and updates that path;Don't Show Againsuppresses warnings for that exact path and version.
| id | Claim | Evidence |
|---|---|---|
| B1 | Warns when an operation uses an outdated published CLI | extension/src/extension.ts:127-128 wires onDidResolveCliForOperation(({target,cliPath}) => notifyIfOutdated(...)); parseCliUpdateRecommendationOutput classifies via normalizePublishedCliChannel (stable/daily/staging) — non-published → ineligible (silent). Source comment: "keeps local/PR/run builds silent even when their process environment emulates a published channel." |
| B2 | Stable CLIs compared with stable releases | configInfoProvider.ts:944 expectedRecommendationChannel = identityChannel === 'stable' ? 'stable' : 'prerelease'; latestVersionChannel !== expected → ineligible. |
| B3 | daily/staging CLIs compared with prerelease releases | normalizePublishedCliChannel returns daily/staging; the same ternary maps non-stable → prerelease expected channel. |
| B4 | Local, PR, run, or unrecognized builds don't trigger | identityChannel undefined → { status: 'ineligible' } (configInfoProvider.ts:917-919); explicit source comment names "local/PR/run builds silent". Unrecognized channel → normalizePublishedCliChannel returns undefined → ineligible. |
| B5 | cross-channel recommendations don't trigger | getCliUpdateRecommendation doc: "cross-lane recommendations … are silent"; parse returns ineligible when latestVersionChannel !== expectedRecommendationChannel (:945-951). |
| B6 | Warning identifies the resolved executable path | strings.ts:191 outdatedAspireCliWarning(version, cliPath, recommendedVersion) = "Aspire CLI {0} at {1} has a newer version available for its current channel: {2}." — {1} = cliPath; notifier passes notification.cli.cliPath. |
| B7 | Update Aspire CLI revalidates and updates that path |
On updateAspireCliAction: _getCliVersion(target, cliPath, false) bypasses the 5-min cache (revalidate) + identity-equality guard, then executeCommand('aspire-vscode.updateSelf', target, cliPath). Label strings.ts:192 = 'Update Aspire CLI'. |
| B8 | Don't Show Again suppresses for that exact path and version |
strings.ts:232 "Don't Show Again"; selection → _suppressNotification(notificationKey) where notificationKey = normalize(cliPath) + \u0000 + version; persisted via _suppressionStore.add. |
The rewrite is notably more precise than the previous revision and now matches the release/13.6 lane-classification logic exactly, including the published (stable/daily/staging) vs local/PR/run/unrecognized distinction and the cross-lane silence rule.
Phase B — Doc-tester results (blind to microsoft/aspire source)
Route exercised: /get-started/aspire-vscode-extension/ (the only route in the PR diff).
Method note: production and local heavy builds could not render the unmerged PR content, so the added note (prose only — no links, no code) was validated against the live page structure, its precise insertion point, and the identical reused aside component, plus a blind-user read of the new prose. No microsoft/aspire source was consulted in this phase.
| Category | Passed | Failed | Warnings |
|---|---|---|---|
| Content accuracy (blind read) | 1 | 0 | 1 |
| Rendering / components | 1 | 0 | 0 |
| Links | 1 (n/a — no new links) | 0 | 0 |
| Console health | 1 | 0 | 0 |
🔴 Critical issues
None.
🟡 Warnings
W1 (Low — blind-user clarity / knowledge gap). The note introduces channel terminology that isn't defined anywhere on this getting-started page: a "staging" CLI channel, "published" CLI, and "cross-channel recommendation". "Daily build (dev)" is mentioned in the Command Palette bullet just above, but "staging", "published", and "cross-channel" are undefined jargon for a new user. Nothing is incorrect — the actionable core (the two buttons and their effects) is clear — but the middle two sentences read dense for a first-run VS Code audience. Consider a one-line gloss or a link to the channel/quality concepts (e.g. the install guide's channel dropdown).
✅ Passed checks
- Page loads —
https://aspire.dev/get-started/aspire-vscode-extension/returns HTTP 200, title "Aspire Visual Studio Code extension | Aspire". - Console clean — 0 errors, 0 warnings on load.
- Insertion region present — the Command Palette bullet list containing Aspire: Update Aspire CLI and Aspire: Install Aspire CLI renders (exactly where the diff inserts the new note).
- Reused component proven — the page already renders 7 titled Starlight asides, including custom-titled notes ("Prerequisites", "Renamed polling setting", "Debugging", "AppHost behavior"). The new
:::note[Outdated CLI warning]uses the identical primitive and will render the same way. - No new links / no code — the note is prose plus two inline-code button labels; nothing can 404 or fail to compile.
Knowledge gaps
- KG1: The deployed/live site predates this unmerged PR (it lacks the "AI agent setup" note that the
release/13.6base already contains), so the exact rendered new prose couldn't be observed directly — structure, insertion point, and the identical reused aside were validated instead. A full local PR-branch Astro build was intentionally skipped (heavy build; the note adds no links or code and reuses a proven component). - KG2: The actual VS Code warning notification is native extension UI and cannot be exercised from a browser, so the runtime behavior itself (channel matching, the two buttons' effects) was verified in Phase A against source rather than observed live.
Automated docs-accuracy reviewer · Phase A read microsoft/aspire@release/13.6 (f544a9c660); Phase B ran the doc-tester skill blind against the live docs site. Out of scope (owned by CI): build/lint/formatting/spelling/markdown-style/broken-link checks, editorial tone.
Documents changes from microsoft/aspire#19670
@ellahathawayTargeting
release/13.6based on the source PR milestone13.6.Why
PR microsoft/aspire#19670 adds a new VS Code extension feature: a warning notification shown when an Aspire CLI selected for an operation (run/debug, terminal commands, one-shot AppHost operations,
ps,describe, etc.) is outdated relative to the latest release in its own identity lane (stable vs. daily/staging/prerelease). The warning identifies the exact executable and offers Update Aspire CLI (updates that resolved path) and Don't Show Again (persists suppression for that exact path/version). This is a new user-facing behavior not previously covered anywhere on the docs site.What changed
Updated
src/frontend/src/content/docs/get-started/aspire-vscode-extension.mdx::::note[Outdated CLI warning]callout directly after the existing "Update Aspire CLI" / "Install Aspire CLI" command bullet list, explaining when the warning appears, the two available actions, and the lane-matching behavior (stable-only vs. prerelease-only comparisons, silent for local/PR/unknown builds).No new pages were created; this was a targeted addition to the existing VS Code extension page since the update-related commands were already documented there.