backnotprop / backnotprop/plannotator
Plan mode: adopt the unified decision control and retire the Add Feedback First dialog
- Dominant language
- TypeScript
- Stars
- 8.7k
- Forks
- 649
- Avg merge
- 11h 12m
- Merged PRs (30d)
- 109
Description
Follow-up assigned by the decision-control implementation spec (DESIGN_decision-control.md section 7, PR7 notes).
The decision-control stack unifies the header decision surface on every annotate surface and both code-review destinations, but plan review deliberately kept its incumbent header (Approve / Request Changes plus the Add Feedback First dialog) because plan mode was out of the stack's scope.
Remaining work:
- Wire plan review's header onto buildDecisionSpec / DecisionControl (empty state [Approve], feedback state [Send Feedback n], caret alternates), reusing the deny/approve transports unchanged.
- The Add Feedback First dialog dies with the adoption: the adaptive primary makes the zero-feedback deny path unrepresentable, which is the dialog's whole job.
- Mod+Enter follows the visible-primary rule with the confirm-dialog sentinel guard, matching the other surfaces.
Two related deferred items to consider bundling:
- packages/ui/components/html-viewer/HtmlViewer.tsx mints global-comment ids with Date.now(); the equivalent Viewer.tsx site moved to crypto.randomUUID() in the stack. Same treatment applies.
- Annotate's two positive-finish decision kinds (feedback without a gate, approved with one) remain transport-shaped; an additive flag on /api/feedback in both runtimes would reconcile them if ever desired.
Contributor guide
Research direction
Read DESIGN_decision-control.md section 7 and the PR7 notes, then trace plan review's header into buildDecisionSpec and DecisionControl. Compare the existing plan-review transport and keyboard behavior with the other decision-control surfaces, and inspect packages/ui/components/html-viewer/HtmlViewer.tsx alongside Viewer.tsx if bundling the id fix. Done means plan review uses the unified states and Mod+Enter behavior, the Add Feedback First dialog is removed, and the relevant flows still work.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- frontend
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 48/100