Problem
Architect and builder terminal output constantly references issues and PRs by number (#915, PR #1402). In VS Code terminals these are not actionable: Cmd+click falls through to VS Code's workspace word search, which matches nothing and silently does nothing. Every reference costs a manual lookup.
Fix
Register a vscode.window.registerTerminalLinkProvider in the extension that claims #\d+ and PR #\d+ spans in all terminal lines and makes them Cmd+clickable. Claiming the span also stops VS Code's useless fallback search.
Click resolution (decided with the owner, 2026-08-12)
Scope
- New file in
apps/vscode/src/ (link provider + resolution), registered in extension.ts — the open-pr-by-id.ts / open-issue-by-id.ts pattern and their fetch paths are the template; reuse openIssueInBrowser/openPRInBrowser/viewBacklogIssue rather than new fetch code.
- Tests: link detection (line-scan spans incl. multiple refs per line), resolution order (issue-first, PR fallback), setting behavior.
Out of scope (follow-up)
Problem
Architect and builder terminal output constantly references issues and PRs by number (
#915,PR #1402). In VS Code terminals these are not actionable: Cmd+click falls through to VS Code's workspace word search, which matches nothing and silently does nothing. Every reference costs a manual lookup.Fix
Register a
vscode.window.registerTerminalLinkProviderin the extension that claims#\d+andPR #\d+spans in all terminal lines and makes them Cmd+clickable. Claiming the span also stops VS Code's useless fallback search.Click resolution (decided with the owner, 2026-08-12)
PR #N→ open the PR's forge page in the browser via the existinggetPRpath (vscode: one-step 'view issue N' / 'view pr N' from QuickPick + Cmd+K P for direct PR-by-ID open #1179). There is no in-editor PR preview (established in vscode: one-step 'view issue N' / 'view pr N' from QuickPick + Cmd+K P for direct PR-by-ID open #1179:openPRByIdwarns rather than degrading), so the browser is the only destination; the target setting below does not apply.#N→ try the issue fetch first and open the built-in issue viewer (codev.viewBacklogIssue/ the vscode: codev.openIssueByNumber quick-action + Cmd+K I keybinding for direct issue access #1096 preview) — keeps the user in-editor, consistent with backlog-row clicks and the vscode: one-step 'view issue N' / 'view pr N' from QuickPick + Cmd+K P for direct PR-by-ID open #1179 QuickPick landing in the same surface. If the number resolves as a PR instead (issues and PRs share one number space on GitHub, so this is deterministic — never both), fall through to the PR browser-open. One click, no disambiguation prompt.codev.terminalLinks.issueTarget: editor | browser(defaulteditor) for users who prefer the browser for issues too. No modifier-key variants in v1.openIssueById's failure grammar.Scope
apps/vscode/src/(link provider + resolution), registered inextension.ts— theopen-pr-by-id.ts/open-issue-by-id.tspattern and their fetch paths are the template; reuseopenIssueInBrowser/openPRInBrowser/viewBacklogIssuerather than new fetch code.Out of scope (follow-up)
registerLinkProvider— separate surface, adjacent to the web-terminal decoration issue Web terminal: orphaned dotted-underline file-path decorations litter the screen after TUI repaints #1217. File after this lands.editortarget) — only worth an issue if wanted on its own merits.