diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b531c6..202375f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ Extension versions are released as `vscode-v` on the [Releases](https://git.harvmaster.com/Harvmaster/autocomplete-model/releases) page. Models are versioned by their name in [`models/manifest.json`](models/manifest.json). +## vscode 0.6.3 + +- **Fix: model choice didn't stick in managed mode.** The daemon's saved state (last model used) overrode both the + model picked in the menu and a new default from a release, so it kept restarting on the old model (e.g. + `stage-c`). A changed default now wins; switching through the daemon API still persists as before. + ## vscode 0.6.2 - **Next-edit is ~3–5× faster:** the next-edit server uses n-gram speculative decoding (the rewritten region is mostly diff --git a/daemon/src/config.ts b/daemon/src/config.ts index 777acef..b8edfb2 100644 --- a/daemon/src/config.ts +++ b/daemon/src/config.ts @@ -76,6 +76,8 @@ export interface RuntimeState { enabled: boolean model: string mode: ContextMode + /** config.defaultModel when this state was saved: a changed default (editor model setting, new release) wins. */ + defaultModel?: string } export function loadConfig(configPath: string): DaemonConfig { @@ -97,12 +99,13 @@ export function loadConfig(configPath: string): DaemonConfig { } export function loadState(config: DaemonConfig): RuntimeState { - const fallback: RuntimeState = { enabled: true, model: config.defaultModel, mode: config.models[config.defaultModel].defaultMode } + const fallback: RuntimeState = { enabled: true, model: config.defaultModel, mode: config.models[config.defaultModel].defaultMode, defaultModel: config.defaultModel } try { const s = JSON.parse(fs.readFileSync(config.stateFile, 'utf8')) as Partial - const model = s.model && config.models[s.model] ? s.model : fallback.model + const keepModel = s.defaultModel === config.defaultModel && s.model && config.models[s.model] + const model = keepModel ? s.model! : fallback.model const mode = s.mode && config.models[model].modes.includes(s.mode) ? s.mode : config.models[model].defaultMode - return { enabled: s.enabled ?? true, model, mode } + return { enabled: s.enabled ?? true, model, mode, defaultModel: config.defaultModel } } catch { return fallback } diff --git a/extensions/vscode/package.json b/extensions/vscode/package.json index 1aeaa22..688fd01 100644 --- a/extensions/vscode/package.json +++ b/extensions/vscode/package.json @@ -3,7 +3,7 @@ "displayName": "Local Autocomplete", "description": "Inline code completion from a local fine-tuned model via the acd daemon", "publisher": "harvmaster", - "version": "0.6.2", + "version": "0.6.3", "license": "MIT", "engines": { "vscode": "^1.90.0"