Problem
QuickStartService emits user-facing text as plain English strings on StageEvent.message / StageEvent.error
and QuickStartStatus.errorMessage. The webview renders them verbatim
(setSuccessMessage(event.message), setErrorMessage(event.error ?? event.message)) and the Connections view
renders status.errorMessage as the tree row description.
PR #798 wraps these in vscode.l10n.t with {0} placeholders (finding M2, option A) as the immediate fix.
That resolves the localization gap but leaves presentation concerns in the service layer.
Proposed work (the end state)
Replace the free-text messages with a typed message key on StageEvent and localize in the webview.
This is the pattern the same feature already uses for Docker diagnosis: the extension host returns typed keys
(DockerGuidanceKey, DockerFailureKind, DockerStartLabelKey, DockerRecoveryNoteKey, …) and
LocalQuickStart.tsx owns the copy. Applying the same shape to the provisioning messages would make the whole
feature consistent.
Benefits
- Cleanly separates transport from presentation.
- Copy changes stop touching the service layer.
- Removes a class of "forgot to wrap this one in
l10n.t" bugs.
- Makes the messages testable by key rather than by string matching.
Scope
- Define the key union + payload (some messages interpolate a port or an error detail).
- Update
provision(), resumeReadiness(), the lifecycle methods, and the tree row description.
- Move the copy into the webview's existing lookup-map pattern and into
LocalQuickStartItem for tree rows.
Why deferred
Larger refactor than the 0.10.0 release window allows, and it interacts with the Quick Start state-model work
still under discussion. Scheduling for 0.10.1, after 0.10.0 ships.
Context
From the PR #798 code review — finding M2, deferred option B.
See docs/ai-and-plans/PRs/798-local-quickstart/code-review-2026-08-04.md.
Problem
QuickStartServiceemits user-facing text as plain English strings onStageEvent.message/StageEvent.errorand
QuickStartStatus.errorMessage. The webview renders them verbatim(
setSuccessMessage(event.message),setErrorMessage(event.error ?? event.message)) and the Connections viewrenders
status.errorMessageas the tree row description.PR #798 wraps these in
vscode.l10n.twith{0}placeholders (finding M2, option A) as the immediate fix.That resolves the localization gap but leaves presentation concerns in the service layer.
Proposed work (the end state)
Replace the free-text messages with a typed message key on
StageEventand localize in the webview.This is the pattern the same feature already uses for Docker diagnosis: the extension host returns typed keys
(
DockerGuidanceKey,DockerFailureKind,DockerStartLabelKey,DockerRecoveryNoteKey, …) andLocalQuickStart.tsxowns the copy. Applying the same shape to the provisioning messages would make the wholefeature consistent.
Benefits
l10n.t" bugs.Scope
provision(),resumeReadiness(), the lifecycle methods, and the tree row description.LocalQuickStartItemfor tree rows.Why deferred
Larger refactor than the 0.10.0 release window allows, and it interacts with the Quick Start state-model work
still under discussion. Scheduling for 0.10.1, after 0.10.0 ships.
Context
From the PR #798 code review — finding M2, deferred option B.
See
docs/ai-and-plans/PRs/798-local-quickstart/code-review-2026-08-04.md.