feat: Add one-click apply fixes suggestions to review mode#360
feat: Add one-click apply fixes suggestions to review mode#360alex-alecu wants to merge 15 commits intodevfrom
Conversation
Code Review SummaryStatus: No New Issues Found | Recommendation: Address existing comments before merge OverviewThis PR adds mode-switching support to the question dock, allowing review question options to trigger agent/mode changes (e.g. switching to The core flow is well-structured:
Existing inline comments from prior reviewers cover the key concerns (reactive root lifecycle, abort handling, idle-check semantics). No additional blocking issues were found in this pass. Files Reviewed (7 files)
|
…stion option descriptions
…for mode action idle wait - Use createEffect to reactively watch session status instead of setTimeout polling - Add AbortController for cancellation on unmount via onCleanup - Only resolve when status.type === 'idle', not when status is undefined (race fix)
| ref.dispose = createRoot((dispose) => { | ||
| signal.addEventListener("abort", () => settle(() => reject(new Error("Cancelled"))), { once: true }) | ||
| createEffect(() => { | ||
| const status = sync.data.session_status[sessionID] ?? { type: "idle" as const } | ||
| if (status.type !== "idle") return | ||
| settle(() => resolve()) | ||
| }) | ||
| return dispose | ||
| }) |
There was a problem hiding this comment.
| ref.dispose = createRoot((dispose) => { | |
| signal.addEventListener("abort", () => settle(() => reject(new Error("Cancelled"))), { once: true }) | |
| createEffect(() => { | |
| const status = sync.data.session_status[sessionID] ?? { type: "idle" as const } | |
| if (status.type !== "idle") return | |
| settle(() => resolve()) | |
| }) | |
| return dispose | |
| }) | |
| createRoot((dispose) => { | |
| ref.dispose = dispose | |
| signal.addEventListener("abort", () => settle(() => reject(new Error("Cancelled"))), { once: true }) | |
| createEffect(() => { | |
| const status = sync.data.session_status[sessionID] ?? { type: "idle" as const } | |
| if (status.type !== "idle") return | |
| settle(() => resolve()) | |
| }) | |
| }) |
There was a problem hiding this comment.
Wouldn't this leak the root every time the user selects 'Fix all issues' when the session is idle?
| ref.dispose = createRoot((dispose) => { | ||
| signal.addEventListener("abort", () => settle(() => reject(new Error("Cancelled"))), { once: true }) | ||
| createEffect(() => { | ||
| const status = sync.data.session_status[sessionID] ?? { type: "idle" as const } |
There was a problem hiding this comment.
And is idle here correct? Should we check here if the key exists?
Context
Add suggestions for implementing review findings. Follow-up from VS Code extension Kilo-Org/kilocode#5926
Implementation
Changed the prompt to recommend max 3 options based on the amount of review findings. Included options for orchestrator and debug where the issues are complex or need discussing first.
Screenshots
How to Test
Run
/local-review-uncommittedin the Kilo CLI and look for the actionable items at the end.Get in Touch
We'd love to have a way to chat with you about your changes if necessary. If you're in the Kilo Code Discord, please share your handle here.