Repository navigation
feat!: remove the autocomplete feature entirely - #15
Merged
Merged
Conversation
BharatCode's two models expose only /v1/chat/completions and no fill-in-the-middle endpoint, so inline completions could never be served by a BharatCode key. Every completion required the user to bring a separate Mistral/Inception key and wire up a provider before anything appeared at all, and VS Code already ships native inline completion through Copilot. The feature was setup friction for a capability the product cannot provide. Removed, as one closed island plus its consumers: - inline completions (classic-auto-complete), Next Edit (next-edit) and the vendored Continue.dev core backing them - 172 files - chat ghost text in our own prompt input - 4 commands, 5 keybindings, 5 settings, description/keyword claims - autocomplete model registry, gateway /fim and /edit routes and handlers - settings tab, model picker row, ghost-text hook and ~14 call sites - 210 i18n values across 21 locales, plus the extension-host locale dicts - autocomplete telemetry events and the 10% failure-sampling branch - README/CONFIGURATION.md claims Kept deliberately, because they are not autocomplete: - FileIgnoreController moved to src/services/ignore/ ; .kilocodeignore filtering of editor context is used by notebook/bridge.ts and gatherEditorContext() - notebookUri() moved to src/services/notebook/notebook-uri.ts ; maps a notebook cell URI to its owning notebook and is used by live editor-context collection Tests that only used autocomplete keys as i18n fixtures were repointed at surviving mcp.signIn.* / attention keys rather than deleted, so the t() machinery stays covered. Verified: bun esbuild --production RC=0; zero autocomplete strings in dist; kilo-gateway 118/118; kilo-vscode unit suite compared against a clean bc/main worktree - 0 new failing test names, 109 baseline failures gone with the deleted tests. BREAKING CHANGE: users relying on BYOK inline completions or Next Edit lose those features; settings and keybindings are removed from the manifest.
Upstream redesigned both READMEs and added new autocomplete marketing copy
("Autocomplete — ghost text and next-edit suggestions", a BYOK FAQ entry, and
"The honest part" paragraph). Took the redesign wholesale, then stripped its
autocomplete claims rather than resurrecting the old prose.
Also removed dev docs that documented the deleted feature: the Next Edit
example corpus (docs/nes-examples/, 30 files), the Mercury harness HTML, and
the autocomplete broken-link error doc. CHANGELOG.md left untouched - it is an
append-only historical record.
PromptInput still called syncGhost() (removed with the ghost-text hook) from keyUp, copy, cut, click, focus, blur and select handlers, so webview typecheck failed with TS2304. Those handlers now do nothing autocomplete- specific; copy/paste call syncHighlightScroll, which is what the remaining overlay needs. Regenerated packages/kilo-docs/source-links.md - the deleted autocomplete source files were listed in it.
Typecheck caught what a source grep could not: packages/opencode still imported @kilocode/kilo-gateway/fim and /edit for its own HTTP handlers, and declared FimBody/EditBody/EditResponse schemas plus the two endpoint routes. The public.ts OpenAPI patch also rewrote the /kilo/fim response. Removed the fim and edit handlers, their endpoint declarations and paths, the two schema structs, the OpenAPI patch block, the exercise-scenario cases and its edit fixture, plus edit-prompt.ts (Mercury prompt builder whose only consumer was the removed edit handler) and the ./fim, ./edit and ./edit-prompt package exports. Route surface, auth and all other gateway endpoints untouched: profile, modes, audio transcriptions, notifications, image/transcription models, cloud sessions.
httpapi-kilo-edit.test.ts exercised the /kilo/edit route that no longer exists, so its KiloGatewayPaths.edit reference failed typecheck. source-links.md regenerated again (89 URLs) after the opencode handler files dropped their doc links.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Removes the autocomplete feature from the extension entirely.
BharatCode's two models (
qwen-3.8-27b,deepseek-v4.1-flash) expose only/v1/chat/completions— there is no fill-in-the-middle endpoint. So inlinecompletions could never be served by a BharatCode key. Every user had to bring a
separate Mistral/Inception key and wire up a BYOK provider before a single
completion appeared, while VS Code already ships native inline completion via
Copilot. The feature was pure setup friction for a capability the product cannot
provide.
Net: 342 files, +113 / −26,569 lines. All CI green (test 17m, typecheck 8m,
lint-and-guards 2m).
It was five things wearing one name
classic-auto-complete/) — editor ghost textnext-edit/) — Tab-to-jump refactorsshims/FileIgnoreController— not autocompleteTwo pieces of the tree were load-bearing for features that stay:
FileIgnoreController→src/services/ignore/..kilocodeignorefiltering of editor context is used by
notebook/bridge.tsandKiloProvider.gatherEditorContext(). Deleting the tree naively would havesilently broken chat's file-mention/context path.
notebookUri()→src/services/notebook/notebook-uri.ts(~25 lines).Maps a notebook cell URI to its owning notebook; used by live editor-context
collection.
Removed
Manifest — 4 commands, 5 keybindings (incl.
ctrl+l/cmd+land theCopilot-conflict branch), 5 settings, plus the description and 2 keywords that
advertised inline autocomplete.
Extension host — the service tree;
shared/autocomplete-models.ts;extension.ts(3 imports, manager load, backend prewarm, providerregistration);
KiloProvider.ts(config watcher, chat autocomplete field,2 message handlers, settings validation branch, reset-all re-broadcast);
input-tools.tsroute; 8AUTOCOMPLETE_*telemetry enums and the 10%failure-sampling branch; 21 extension-host locale dicts.
Gateway —
autocomplete.ts,fim.ts,edit.ts,edit-prompt.ts,mistral-fim-endpoint.ts,server/fim.ts,server/edit.ts, thePOST /fimand
POST /editroutes with their zod schemas, and the./autocomplete,./fim,./edit,./edit-promptpackage exports.opencode — its own
fimandeditHTTP handlers, theFimBody/EditBody/EditResponseschemas, the two endpoint declarations and paths, the/kilo/fimOpenAPI response patch, the exercise-scenario cases, andhttpapi-kilo-edit.test.ts.Webview — settings tab, model picker row, ghost-text hook, ~14
PromptInputcall sites, 3 search entries, config matcher, 5 messageinterfaces/unions, ghost-text CSS, and 210 i18n values across 21 locales.
Docs — root README (4 spots), package README, the whole "Inline
autocomplete" section of
docs/CONFIGURATION.md, the Next Edit example corpus(
docs/nes-examples/, 30 files), the Mercury harness HTML, and theautocomplete broken-link error doc.
CHANGELOG.mdleft untouched — append-onlyhistorical record.
Tests: repointed, not nuked
i18n-shim.test.tsexercised thet()machinery using autocomplete keys asfixtures. Repointed at surviving
mcp.signIn.*(same{{name}}interpolationshape) and
kilocode:attention.*— the machinery is still covered.file-ignore-controller.test.tsis kept, because it tests relocated livecode.
Verification
bun esbuild.js --production→ RC=0; zero autocomplete strings indistkilo-gatewaysuite → 111/111file-ignore-controller,i18n-shim,i18n-keys) → 33/33kilo-vscodefull suite compared against a cleanbc/mainworktree: 0new failing test names; 109 baseline failures disappeared with the deleted
tests
extract-source-links --checkpass locallyTwo things worth knowing
The merge of
bc/mainhad to re-strip autocomplete copy: upstream's READMEredesign added fresh marketing for it ("Autocomplete — ghost text and next-edit
suggestions", a BYOK FAQ entry, and "The honest part" paragraph).
Three red CI rounds were all real misses that a source grep could not catch —
packages/opencodeimported@kilocode/kilo-gateway/fimand/editfor its ownhandlers, which typecheck found and grep did not.
Not touched
packages/tui/**autocomplete is the CLI's own prompt popup (@-mentions,slash commands) — a different feature that still works. The generated SDK stubs
in
packages/sdk/js/src/v2/gen/still mention/kilo/fimand/kilo/edit;they are regenerated from the OpenAPI spec and are inert.