Edit, apply_patch, and user message summary were storing full before/after
file contents in metadata — causing sessions to balloon to 90+ MB and crash
the VS Code extension on load.
Strip before/after from edit filediff, apply_patch files[], and
summary.diffs both at write time (new data) and read time (existing data).
Address kilo-code-bot review feedback:
- Guard against JSON.parse returning non-object values (null, arrays,
strings, numbers) which would crash on property access
- Support nested per-pattern permission rules like
bash: { "*": "ask", uname: "allow" } which PermissionRule allows
but were previously silently dropped
Add 5 tests for non-object JSON rejection and nested permission
round-trip.
The permission field on AgentConfig was silently dropped during import
because parseImport did not extract it. This caused a round-trip
(export then import) to lose all per-tool permission overrides like
read:allow, edit:deny, etc.
Add parsePermission() that validates each entry against the allowed
levels (allow/ask/deny) and drops invalid values. Add 4 tests
covering valid permissions, invalid values, non-object input, and
round-trip preservation.
Extract parseImport() and buildExport() from AgentBehaviourTab and
ModeEditView into a standalone mode-io.ts module that has no UI
dependencies and can be unit tested directly. Add 15 tests covering
valid parsing, name validation, mode validation, duplicate detection,
invalid JSON, type coercion, and export serialisation.
Addresses review feedback from marius-kilocode to extract the
import/export logic and write tests.
Automatically unset default_agent config when the user hides or
disables the agent that is currently set as the default, preventing
an invalid reference in the config.
Add Hidden and Disabled toggle switches to the agent edit view.
Hidden agents are excluded from the mode switcher but remain in
settings. Disabled agents are visually dimmed in the agent list
with badge indicators.
Adds hidden and disable fields to the webview AgentConfig type
and writes to config.agent[name].hidden / config.agent[name].disable.
Closes#7594
Add a file size guard in importMode to refuse files over 1 MB before
reading. This prevents the webview from freezing or crashing when a
user accidentally selects a very large file. Adds the tooLarge i18n
string across all 18 locale files.
Remember the last selected session when a tab is cleared so the next session still resolves to the same worktree instead of falling back to the repo root. Add a regression test for worktree directory resolution.
Hide export button for native/built-in agents since their full
definition is not available from config overrides alone. Validate
the mode field on import against the allowed values (subagent,
primary, all) instead of blindly casting.
Add an Export button (download icon) to the agent edit view that
serializes the agent config to a .agent.json file. Add an Import
button to the agents list view that opens a file picker, validates
the JSON structure, and creates the agent in config.
Import validates the name format, checks for duplicates, and shows
error messages for invalid files. The JSON format includes name,
description, prompt, model, mode, temperature, top_p, and steps.
Closes#7592
Kobalte Select treats empty string "" as an empty selection and renders
the placeholder instead of calling the label function. Changed the Auto
option to use "auto" as its value instead of "", and map it back to ""
when calling setLocale. This ensures the dropdown trigger displays
"Auto (VS Code language)" when the dropdown is closed.
Also reverts the ineffective select.tsx nullish check since Kobalte
short-circuits before the render function is called.
Workflow commands are now collapsed by default, showing only the name
and description. Clicking the chevron or row expands the full detail
view with description and template (using pre-wrap, not truncated).
Matches the existing MCP server expand/collapse pattern.
Adds i18n keys for workflow detail labels across all 18 locales.
The StoryProviders wrapper adds 12px padding on each side, so a 420px
inner div inside a 420px viewport overflows by 24px, clipping content
on the right edge. Remove the width constraint and let the content
fill the padded container naturally.
Create a dedicated agent-behaviour directory within settings components
and add a standalone WorkflowsTab component, preparing for further
extraction of subtab content from the monolithic AgentBehaviourTab.
Add two stories for the Workflows subtab in AgentBehaviourTab:
- AgentBehaviourWorkflows: shows commands list with descriptions
- AgentBehaviourWorkflowsEmpty: shows empty state
Also adds a reusable SubtabWrapper helper that clicks into a
specific subtab on mount, similar to EditModeWrapper.