Add agent autonomy presets - #9750
Conversation
Code Review SummaryStatus: 1 Issue Found | Recommendation: Address before merge Overview
Issue Details (click to expand)SUGGESTION
Resolved Issues
Incremental Updates (since 740155a)Two new commits:
Other Observations (not in diff)
Files Reviewed (60 files)
Fix these issues in Kilo Cloud Reviewed by claude-4.6-sonnet-20260217 · 938,152 tokens Review guidance: REVIEW.md from base branch |
…tence and add skipped state Replace globalState-based `onboardingShown` flag with a new `skipped` enum value in the `agentWorkStyle` VS Code setting. This makes the onboarding flow re-triggerable by setting the config back to `unset` and removes the need for extension context in work-style handlers. - Add `skipped` to WorkStyleState enum for dismissing without choosing - Remove `onboardingShown` from messages and context provider - Add `watchWorkStyleConfig` to reactively push changes to webview - Extract `SidebarEmptyState` and `WelcomeEmptyState` components from MessageList for cleaner separation of concerns - Pass `emptyState` prop through ChatView to allow sidebar-specific onboarding UI without coupling MessageList to WorkStyleProvider
…oading Add a listener for the extensionDataReady message so that the WorkStyleProvider retries data fetching when the extension signals readiness, preventing a stale loading state caused by race conditions during webview initialization.
947aef2 to
ec7a5ff
Compare
…e resolver Decouple onboarding visibility from the persisted WorkStyleState by introducing a dedicated `display` signal driven by resolveWorkStyleOnboarding(). The onboarding panel now auto-persists "skipped" on first render (one-off semantics) and dismisses itself on newTaskRequest events. Unit tests cover the three resolution branches.
Visual Changes
Other Implementation details
Testing
Screen.Recording.2026-06-11.at.12.06.15.mov |
|
As an existing user, how can I use this? Is this only part of the onboarding now? |
Yes, it's only part of the onboarding |
Persist skipped state only after onboarding is bypassed, apply presets through one rollback-aware extension operation, and use the human-in-the-loop identifier consistently.
The apply handler already posts the updated work-style payload internally, so the additional post here caused a redundant message to be sent to the webview after each style application.
Benchmark resultsI benchmarked this PR at The scenario measured a cold Kilo sidebar open on a new profile. The PR rendered the new first-run work-style picker, while the base rendered the standard empty state.
The functional behavior matched the intended design:
Overall, the PR adds a modest amount of cold initialization work, consistent with rendering the additional onboarding UI. The absolute style and layout increases were small, warm-idle behavior was effectively unchanged, and there was no observable responsiveness regression. With only three runs and some baseline DOM variability, these results do not demonstrate a meaningful user-visible performance regression. |
… card Move the "Go to Settings" call-to-action out of the post-save toast and into a persistent inline link at the bottom of the WorkStylePicker. Simplify the success toast to a short 2-second confirmation, tighten choice descriptions for conciseness, drop the bash detail row, and remove the small-viewport rule that hid mode details.
* feat(vscode): add agent autonomy presets * feat(work-style): simplify onboarding state to use config-only persistence and add skipped state Replace globalState-based `onboardingShown` flag with a new `skipped` enum value in the `agentWorkStyle` VS Code setting. This makes the onboarding flow re-triggerable by setting the config back to `unset` and removes the need for extension context in work-style handlers. - Add `skipped` to WorkStyleState enum for dismissing without choosing - Remove `onboardingShown` from messages and context provider - Add `watchWorkStyleConfig` to reactively push changes to webview - Extract `SidebarEmptyState` and `WelcomeEmptyState` components from MessageList for cleaner separation of concerns - Pass `emptyState` prop through ChatView to allow sidebar-specific onboarding UI without coupling MessageList to WorkStyleProvider * chore: update kilo-vscode visual regression baselines * feat(work-style): refine onboarding preferences * feat(webview): re-request work style on extensionDataReady if still loading Add a listener for the extensionDataReady message so that the WorkStyleProvider retries data fetching when the extension signals readiness, preventing a stale loading state caused by race conditions during webview initialization. * chore: update kilo-vscode visual regression baselines * feat(work-style): improve onboarding flow * chore: update kilo-vscode visual regression baselines * refactor(onboarding): extract work style display logic into pure state resolver Decouple onboarding visibility from the persisted WorkStyleState by introducing a dedicated `display` signal driven by resolveWorkStyleOnboarding(). The onboarding panel now auto-persists "skipped" on first render (one-off semantics) and dismisses itself on newTaskRequest events. Unit tests cover the three resolution branches. * style(welcome): widen responsive breakpoint for work-style empty state * fix(vscode): make work style onboarding updates reliable Persist skipped state only after onboarding is bypassed, apply presets through one rollback-aware extension operation, and use the human-in-the-loop identifier consistently. * fix(work-style): remove duplicate payload post after apply handler The apply handler already posts the updated work-style payload internally, so the additional post here caused a redundant message to be sent to the webview after each style application. * refactor(onboarding): relocate settings access from toast into picker card Move the "Go to Settings" call-to-action out of the post-save toast and into a persistent inline link at the bottom of the WorkStylePicker. Simplify the success toast to a short 2-second confirmation, tighten choice descriptions for conciseness, drop the bash detail row, and remove the small-viewport rule that hid mode details. * chore: update kilo-vscode visual regression baselines --------- Co-authored-by: Imanol Maiztegui <imanol.mzd@gmail.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>


Summary
Closes #8419