Skip to content

feat: Add one-click apply fixes suggestions to review mode#360

Open
alex-alecu wants to merge 15 commits intodevfrom
feat/review-apply-fixes
Open

feat: Add one-click apply fixes suggestions to review mode#360
alex-alecu wants to merge 15 commits intodevfrom
feat/review-apply-fixes

Conversation

@alex-alecu
Copy link

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

Screenshot 2026-02-17 at 10 11 17

How to Test

Run /local-review-uncommitted in 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.

@alex-alecu alex-alecu self-assigned this Feb 17, 2026
@kiloconnect
Copy link
Contributor

kiloconnect bot commented Feb 17, 2026

Code Review Summary

Status: No New Issues Found | Recommendation: Address existing comments before merge

Overview

This PR adds mode-switching support to the question dock, allowing review question options to trigger agent/mode changes (e.g. switching to code, debug, or orchestrator mode after a review). The implementation spans the full stack: schema (QuestionOption.mode), SDK types, review prompt instructions, and the SolidJS UI (QuestionDockSessionPromptDocksession.tsx).

The core flow is well-structured:

  1. QuestionDock detects option.mode on single-answer picks
  2. Calls onModeAction after the reply promise resolves
  3. handleModeAction in session.tsx waits for the session to become idle, switches the agent, and sends a new prompt

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)
  • packages/app/src/components/question-dock.tsx - Mode-aware option picking, reply promise chaining
  • packages/app/src/pages/session.tsx - waitForIdle, handleModeAction, abort controller lifecycle
  • packages/app/src/pages/session/session-prompt-dock.tsx - Prop threading for onModeAction
  • packages/opencode/src/kilocode/review/review.ts - Updated review prompt with post-review workflow instructions
  • packages/opencode/src/question/index.ts - mode field added to QuestionOption schema
  • packages/sdk/js/src/v2/gen/types.gen.ts - Generated SDK type update
  • packages/sdk/openapi.json - OpenAPI spec update

Fix these issues in Kilo Cloud

@alex-alecu alex-alecu enabled auto-merge February 17, 2026 16:00
Comment on lines +173 to +181
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
})
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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())
})
})

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 }
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And is idle here correct? Should we check here if the key exists?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants