Instead of maintaining a separate install-kilo file, apply branding
changes directly to the upstream install script with kilocode_change
markers. This ensures upstream merges surface conflicts we can resolve
properly.
The extension was using PATCH /config (instance-scoped) which writes to
<project>/config.json — a file the config loader never reads back on
restart. The desktop app uses PATCH /global/config which correctly writes
to the global config file (~/.config/opencode/opencode.json).
Changed updateConfig to hit /global/config (matching the desktop app)
and removed the now-unnecessary directory parameter.
New install script with full Kilo branding, served separately from the
upstream opencode install script to avoid merge conflicts. Points to
Kilo-Org/kilo GitHub releases and kilo.ai docs.
SolidJS store arrays are Proxies that can't be structurally cloned by
VS Code's postMessage. Spread each inner answer array to create plain
arrays before passing to replyToQuestion().
- Clear questionError for a request before retrying reply/reject so the
createEffect doesn't immediately reset sending state
- Reset questions and questionErrors in clearCurrentSession()
- Filter out questions/errors for deleted session in handleSessionDeleted()
- Upsert questions by id instead of blind append to prevent duplicates
- Hide custom answer option when question.custom === false
- Scope questions and permissions to current session in ChatView
Without the directory header, the server falls back to process.cwd()
which resolves to a different Instance context than where the question
was created. The pending question lookup silently fails and the LLM
never receives the answer.
The question was removed from UI state before the HTTP call was made.
If the call failed, the error was invisible because QuestionDock was
already unmounted. Let the SSE question.replied/rejected events handle
removal instead, matching the desktop app behavior.
Without optimistic removal the QuestionDock stays mounted with all
buttons disabled until the SSE round-trip completes, making dismiss
and answer clicks appear to do nothing. Re-add immediate removal
after posting the message, matching the pattern used by permissions.