Add a VSCode - Install task that runs bun install from the workspace
root, and make VSCode - Compile depend on it. This ensures dependencies
are up to date when launching the extension with F5.
Remove the syncInternal empty-text guard added in the previous commit.
Instead, rely solely on the createEffect state invalidation (clearing
saved/savedPrefix/prefix and bumping counter) when text is empty. This
prevents completions from ever being stored for empty text, rather than
adding display-side guards.
Add guards to prevent ghost text (AI autocomplete) from appearing when
the chat textarea is empty. The native placeholder text and ghost text
overlay would overlap because the textarea has transparent text color
with the ghost text rendered in an absolute-positioned layer behind it.
Two changes:
- Add empty-text guard in syncInternal so ghost text is never shown
when the input is empty
- When text is cleared, fully invalidate ghost state (saved, savedPrefix,
prefix) and increment request counter to reject stale in-flight
completion responses
- kilo.ai/docs/github/#usage-examples was a 404 (page never created).
Replaced with kilo.ai/docs/automate/integrations in github.ts:245.
- vercel.link redirects to a login page that blocks bots — added to
lychee.toml exclusions.
The chat input uses a transparent-textarea-over-overlay pattern where visible
text comes from the overlay div but the cursor follows the textarea. Ghost
text only exists in the overlay, so when it's long enough to trigger wrapping,
the browser re-wraps preceding visible text — but the cursor doesn't move
because the textarea has no ghost text.
Make the ghost text span an atomic inline box (display: inline-flex) so it
either fits on the current line or wraps to the next line as a unit, without
pulling preceding words with it. This matches the legacy extension behavior
where the wrapping difference was hidden by the inverted z-order (overlay text
was transparent there).
- Changed 'apps/kilocode-docs' to 'packages/kilo-docs'
- Changed 'pnpm start' to 'pnpm dev' (correct dev command)
Related to #7387
Co-authored-by: Kilo Fix Automation <fix-automation@kilo.ai>
source-links.md lives in packages/kilo-docs/ so changes to it already
trigger the docs link checker. The source code path triggers belong
only in source-check-links.yml (the freshness gate).
The extraction script was overly aggressive in excluding URLs (GitHub,
archives, JSON endpoints, images). These are real user-facing links
that should be validated by lychee. Removed the blanket exclusions
and reverted the lychee.toml additions — the docs checker already
handles external link validation.
Now extracts 77 URLs (up from 59).
The textarea used browser-default wrapping while the highlight overlay used
white-space: pre-wrap + overflow-wrap: break-word. This mismatch caused the
cursor position to diverge from the rendered ghost text when long content
(like URLs) triggered different line breaks in each element.
Add white-space: pre-wrap and overflow-wrap: break-word to the textarea so
both elements use identical wrapping rules. Also normalize the overlay from
the deprecated word-wrap to overflow-wrap for consistency.
On invalidation, just null out the reference instead of calling dispose().
In-flight requests that hold a reference to the old controller can finish
safely; the instance will be garbage collected afterward.
Watch .kilocodeignore and .gitignore for changes, creations, and deletions.
When either file changes, the cached FileIgnoreController is disposed so the
next autocomplete request rebuilds it with fresh rules.
The ChatTextAreaAutocomplete holds its own FileIgnoreController internally.
Without disposing it, the file watchers would leak when the provider is torn
down.
Accepting a long suggestion can cause the textarea to grow or scroll. Without
syncing the highlight overlay, @mention spans and ghost text would be visually
misaligned.
- Move generated source-links.md into packages/kilo-docs/ so the
existing docs link-checker (docs-check-links.yml) validates URLs
- Add --check flag to extract-source-links.ts for CI freshness check
- Replace lychee step in source-check-links.yml with freshness check
- Merge source-link exclusions into packages/kilo-docs/lychee.toml
- Remove standalone source-links-lychee.toml (no longer needed)
- Remove source-links.md from .gitignore (file is now committed)
- Add source code path triggers to docs-check-links.yml
Extract user-facing URLs from packages/kilo-vscode/ and packages/opencode/src/
into a markdown file that lychee can check for broken links. Reuses the same
Kilo-Org/lychee-action used by the docs link checker.
- script/extract-source-links.ts: Bun script that greps TS/TSX/JS/JSX source
files and filters out API endpoints, localhost, examples, templates, vendored
code, tests, and stories
- script/source-links-lychee.toml: lychee config with exclusions for sites that
block automated checks (GitHub, OpenAI, etc.)
- .github/workflows/source-check-links.yml: CI job that runs on PRs touching
extension or CLI code, plus weekly scheduled runs
Register WebviewPanelSerializer for all panel types (Tab, Settings,
Profile, Marketplace, DiffViewer, SubAgentViewer) so VS Code can
deserialize them with fresh HTML after an extension restart or update.
Previously only the sidebar and Agent Manager survived restarts.