Context
packages/vscode/src/comments/plan-review.ts wires the native VS Code Comments API for codev/plans/*.md and codev/specs/*.md files. The primitive ships and works; this issue is a polish bundle that closes four small gaps in one PR.
Gaps
1. VS Code's default input placeholders surface instead of Codev wording
createCommentController(...) is called without options. The "+" input box shows VS Code defaults like Start discussion / Reply... — generic, doesn't reflect that this is a Codev review surface.
Fix: Set controller.options at construction time in plan-review.ts:41-44:
controller.options = {
prompt: 'Add review comment',
placeHolder: 'Type your review comment, then Submit',
};
2. codev/reviews/*.md files are excluded
ELIGIBLE_PATH_REGEX = /\/codev\/(plans|specs)\// at plan-review.ts:33 — review files don't get the gutter +, so post-implementation review docs can't be commented on inline.
Fix: Extend regex to /\/codev\/(plans|specs|reviews)\//. No other code change needed; the existing refreshDoc / submitReviewComment / deleteReviewCommentByThread paths are path-agnostic.
3. Comment author is hardcoded to @architect
Both entry points hardcode the author:
plan-review.ts:144 — <!-- REVIEW(@architect): ${body} -->
commands/review.ts:22 — syntax.wrap('REVIEW(@architect): ')
This is wrong for shared workspaces (multiple humans reviewing) and is also a footgun if/when builders get a parallel write surface (no convention exists for @builder handles, but at minimum the architect-side path shouldn't pretend everyone is the same person).
Fix: Read git config user.name once at activation and use it. Fall back to architect if unset.
const author = (await execFile('git', ['config', 'user.name'])).stdout.trim() || 'architect';
Apply to both plan-review.ts:144 and commands/review.ts:22. Keep the snippet at snippets/review.json as-is (snippets can't expand shell commands; @architect stays as the template default).
4. Verify Comments panel discoverability
VS Code has a built-in Comments panel (bottom panel) that aggregates threads from all registered controllers. Verify that codev-review threads show up there by default. If they do, no action — document in the issue closure. If they don't, fix the controller wiring so they do (likely a small controller.commentingRangeProvider adjustment).
Acceptance criteria
Out of scope
- Replies / threading (
canReply stays false — separate design decision; see follow-up)
- Resolve state (separate, depends on storage-format decision)
- Builder-side write convention (
@builder handle, protocol-prompt updates — separate)
- Gate integration ("Request Changes" path — separate, this issue is polish only)
- Any change to the snippet at
snippets/review.json
Related
Context
packages/vscode/src/comments/plan-review.tswires the native VS Code Comments API forcodev/plans/*.mdandcodev/specs/*.mdfiles. The primitive ships and works; this issue is a polish bundle that closes four small gaps in one PR.Gaps
1. VS Code's default input placeholders surface instead of Codev wording
createCommentController(...)is called withoutoptions. The "+" input box shows VS Code defaults likeStart discussion/Reply...— generic, doesn't reflect that this is a Codev review surface.Fix: Set
controller.optionsat construction time inplan-review.ts:41-44:2.
codev/reviews/*.mdfiles are excludedELIGIBLE_PATH_REGEX = /\/codev\/(plans|specs)\//atplan-review.ts:33— review files don't get the gutter+, so post-implementation review docs can't be commented on inline.Fix: Extend regex to
/\/codev\/(plans|specs|reviews)\//. No other code change needed; the existingrefreshDoc/submitReviewComment/deleteReviewCommentByThreadpaths are path-agnostic.3. Comment author is hardcoded to
@architectBoth entry points hardcode the author:
plan-review.ts:144—<!-- REVIEW(@architect): ${body} -->commands/review.ts:22—syntax.wrap('REVIEW(@architect): ')This is wrong for shared workspaces (multiple humans reviewing) and is also a footgun if/when builders get a parallel write surface (no convention exists for
@builderhandles, but at minimum the architect-side path shouldn't pretend everyone is the same person).Fix: Read git config user.name once at activation and use it. Fall back to
architectif unset.Apply to both
plan-review.ts:144andcommands/review.ts:22. Keep the snippet atsnippets/review.jsonas-is (snippets can't expand shell commands;@architectstays as the template default).4. Verify Comments panel discoverability
VS Code has a built-in Comments panel (bottom panel) that aggregates threads from all registered controllers. Verify that
codev-reviewthreads show up there by default. If they do, no action — document in the issue closure. If they don't, fix the controller wiring so they do (likely a smallcontroller.commentingRangeProvideradjustment).Acceptance criteria
controller.options.promptandcontroller.options.placeHolderset to Codev-specific strings; VS Code defaults no longer appearcodev/reviews/*.mdfiles show the gutter+and accept REVIEW markers via the same flow as specs/plansarchitect); no inline hardcoded@architectremains inplan-review.tsorcommands/review.ts<!-- REVIEW(@architect): -->markers in committed files render unchanged (back-compat — the regex matches any@<name>, not just@architect)Out of scope
canReplystaysfalse— separate design decision; see follow-up)@builderhandle, protocol-prompt updates — separate)snippets/review.jsonRelated
Submit review comment→Codev: Submit Review Comment(title fix; bundle into the same PR if convenient)packages/vscode/src/comments/plan-review.ts,packages/vscode/src/commands/review.ts,packages/vscode/snippets/review.json