Replace object spread (`{...props}`) with `mergeProps` when forwarding
props through the plugin Slot wrapper. Spreading props in SolidJS
evaluates each prop once at mount time, freezing reactive values like
`ref`, `visible`, `disabled`, and `on_submit`. This caused handlers to
bind against stale closures after overlay transitions, breaking Enter
submission on the session_prompt slot.
Add regression tests verifying the wrapper uses `mergeProps` (not
spread) and that reactive prop tracking is preserved at runtime.
Drop a debug short-circuit shipped upstream in #23037 that flipped `sync.ready` before sync actually finished, producing a 1-2s delay before home content (agents, news, tips) appeared in the TUI. Bisected from origin/main.
Add a minimal ambient module declaration for jschardet so the repo
pre-push typecheck hook passes in worktrees where upstream dependency
typings are not resolved by tsgo.
Add unit tests for the Encoding namespace and extend the tool integration
suite with ApplyPatch delete and EditTool replaceAll paths for non-UTF-8
files.
Resolve conflicts in question/index.ts, session/prompt.ts, and KiloProvider.ts to pull in upstream's flattened namespace refactor while preserving the queued-messages feature: Question.dismissAll, KiloQuestion.guardFollowup on ask, and the mid-turn 'break out when a follow-up is queued' check in runLoop. VS Code abortSession keeps its queue-preserving signature (no queuedMessageIDs delete); new autocomplete settings helpers from main are wired in unchanged.
Set and restore `Flag.KILO_EXPERIMENTAL_LSP_TOOL` around the two
`.live` LSP spawn tests so they actually reach the `spawn()` call
instead of being short-circuited by the TsClient guard.
Add `filediff` field to the edit tool's permission-ask metadata so the
VS Code extension's PermissionDock can render inline diff previews.
Sort and deduplicate dependency entries in package.json. Include a
comprehensive test suite verifying filediff presence across new file
creation, existing file edits, and multi-line replacements.
- Fix import paths in kilocode server instance to use routes directory
- Convert relative imports to path aliases in experimental and session routes
- Fix variable name bug in fromModelsDevModel (m -> base) for patchKiloModel
- Add null guard for VITE_KILO_CHANNEL in titlebar before calling includes
- Simplify model schema by replacing safeEnum with direct Schema.Literals
- Remove unused fullSyncedSessions set from sync context
- Add blocking option to question ask interface
- Remove FileTime dependency from read-directory and session-compaction tests
- Remove unnecessary @ts-expect-error comments for Flag overrides in tests
- Fix Account import path in config-gitignore test
- Regenerate SDK with new session list params (projectID, worktrees),
deduplicated Console class, and updated timeout default to 300000ms
Strip a leading U+FEFF from text before prepending a UTF-8/UTF-16 BOM so
round-tripping content that already carries a BOM character emits exactly
one BOM. Also clarifies the changeset that new files default to UTF-8.
Stops the suggest tool from surfacing a local-review prompt after PR-comment replies, reactive fixes, trivial edits, non-implementation work, or review-adjacent turns. Tool description and system prompt now share one explicit gate: only suggest when the user initiated implementation and the diff is substantial.
On every kilo CLI startup the process writes an error like:
log stream error: ENOENT: no such file or directory, open
'<log-dir>/<log-dir>/.log-history'
Log rotation is effectively disabled because rotating-file-stream cannot
open its history file.
Root cause: rotating-file-stream (3.2.x) treats the `history` option as
a filename resolved against the `path` option. In
`packages/opencode/src/util/log.ts` we were passing an absolute path
(`path.join(dir, '.log-history')`) for `history` while also setting
`path: dir`, so the library concatenated the two and produced the
`<dir>/<dir>/.log-history` path that ENOENTs.
Passing the relative filename `.log-history` lets the library resolve
the history file under the configured `path` directory, matches the
docs, and restores the 50 MB / 10-file rotation cap.
Fixes#8252Fixes#8275Fixes#9321
Click the chevron next to the + tab button and pick 'New Terminal' (or hit Cmd+Shift+T / Ctrl+Shift+T) to spawn a real shell inside the selected worktree or Local directory. Each terminal runs via the Kilo CLI's PTY backend, streamed over a direct loopback WebSocket so raw bytes bypass postMessage. Tabs mirror the worktree split-button pattern, support mixed drag-reorder with session tabs, and survive worktree-context switches without losing xterm state (slots are opacity-toggled in a persistent absolute-positioned layer, never unmounted). The legacy Cmd+/ integrated-terminal shortcut and console icon are preserved so existing muscle memory keeps working.
- Drop the dead 'encoding = pre.encoding' initial value that was only
read if deriveNewContentsFromChunks threw, and that code path
returns before encoding is ever used.
- Inline pre.text into the read line so we don't bind a 'pre' local
just to destructure it once.
Main moved the Patch namespace out of packages/opencode/src/patch/index.ts
into patch/patch.ts and switched tool imports to the new
@opencode-ai/shared/filesystem and ../../src/tool barrels. Reapply the
encoding-aware read/write changes on top of the refactored patch.ts, and
update the integration test imports to match the new module layout.