decoder.write() can hold incomplete multi-byte sequences internally.
Without calling decoder.end() after streams close, those trailing bytes
are silently dropped. Flush all decoders after process exit so any
remaining bytes are emitted as replacement characters rather than lost.
Address review feedback: a shared StringDecoder across stdout and stderr
can mix partial UTF-8 bytes between streams. Use one decoder per pipe so
incomplete sequences on stdout are never completed by stderr bytes.
Replace chunk.toString() with StringDecoder in stream processing to
prevent garbled characters (arrows, tree-drawing chars appearing as
mojibake) when multi-byte UTF-8 sequences are split across chunk
boundaries. StringDecoder maintains state across chunks to correctly
reassemble incomplete characters.
Fixed in bash tool, prompt shell execution, and ripgrep output.
Every child_process.spawn() call was missing windowsHide: true, causing
a visible CMD console window to briefly appear on every shell command,
LSP server start, ripgrep search, clipboard operation, and process kill
on Windows. This option is a no-op on non-Windows platforms.
ensureTitle was sending small-model requests with the same HEADER_TASKID
as the agent session. The gateway saw two different models (kilo-auto/small
and kilo-auto/frontier) under the same task and routed to both. Prefixing
the title sessionID with "title-" isolates it from the agent task.
Move formatTime and editor context env-line building into a dedicated
kilocode-specific file to minimize changes in the shared system.ts.
The only changes to system.ts are now: import, signature, and one
spread call.
Replace imprecise toDateString() (e.g. 'Mon Feb 23 2026') with full
ISO 8601 UTC timestamp and user timezone with UTC offset when the
extension provides it via editorContext.timezone.
Before: Today's date: Mon Feb 23 2026
After: Current time: 2026-02-23T12:23:04.159Z
User timezone: Europe/Amsterdam, UTC+1:00
Update all github.com/Kilo-Org/kilo references to github.com/Kilo-Org/kilocode
across package.json files, documentation, scripts, and configuration files.
This reflects the repository rename from kilo to kilocode.