From a66cdcb0bd155c4b67ff94380c0b08e2a69cf9a2 Mon Sep 17 00:00:00 2001 From: Fahad Iftikhar Date: Wed, 12 Aug 2026 21:42:07 +0500 Subject: [PATCH 1/3] fix(provider): suppress duplicate models for settings-only config groups MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit VS Code calls provideLanguageModelChatInformation once per configured group. A per-model configuration group (e.g. a reasoningEffort picked in the model picker) carries only settings — no apiKey — so VS Code resolves its configuration to {} and the extension's SecretStorage fallback ran again, serving the full model list a second time (every model duplicated, issue #131). A group call whose configuration is present but carries no apiKey is now treated as a per-model config group and returns [] — the groupless call already served the models. The #106 flag still suppresses the groupless call for apiKey-bearing groups, and per-model settings still apply at request time via modelConfiguration. Verified against the VS Code source: the groupless call passes no configuration, group calls always do. --- src/extension.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/extension.ts b/src/extension.ts index 6bb7e44..43caccb 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -2049,6 +2049,15 @@ class OpenCodeProvider implements vscode.LanguageModelChatProvider Date: Wed, 12 Aug 2026 21:48:21 +0500 Subject: [PATCH 2/3] ci: use the system shellcheck binary instead of the runtime download The shellcheck npm package downloads its binary from GitHub releases on first execution; on a fresh runner that download flaked (socket hang up), failing the lint step. Install shellcheck via apt and point the package at it with SHELLCHECKJS_BIN. --- .github/workflows/ci.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d6f45e3..653dc4d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,7 +30,14 @@ jobs: run: npm run compile - name: 🔎 Lint source and maintenance docs - run: npm run lint + env: + # The `shellcheck` npm package downloads its binary from GitHub + # releases on first run, which flakes in CI (socket hang up / rate + # limits). Use the runner's system binary instead. + SHELLCHECKJS_BIN: /usr/bin/shellcheck + run: | + sudo apt-get update && sudo apt-get install -y shellcheck + npm run lint - name: 🎨 Check formatting run: npm run format:check From f22f0c4add58f273a3dc71a4f9f1abdd3c2d5a39 Mon Sep 17 00:00:00 2001 From: Fahad Iftikhar Date: Wed, 12 Aug 2026 21:52:02 +0500 Subject: [PATCH 3/3] ci: give shellcheck the npm wrapper a writable binary copy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The npm package's SHELLCHECKJS_BIN validator requires F_OK | W_OK | X_OK, but /usr/bin/shellcheck is root-owned — EACCES on the runner user. Copy the apt-installed binary into runner.temp (user-writable) and point the wrapper at that. --- .github/workflows/ci.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 653dc4d..5294fbc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,11 +32,13 @@ jobs: - name: 🔎 Lint source and maintenance docs env: # The `shellcheck` npm package downloads its binary from GitHub - # releases on first run, which flakes in CI (socket hang up / rate - # limits). Use the runner's system binary instead. - SHELLCHECKJS_BIN: /usr/bin/shellcheck + # releases on first run (flaky in CI), and its SHELLCHECKJS_BIN + # validator requires a user-writable binary. Install via apt and + # point it at a writable copy in the runner's temp dir. + SHELLCHECKJS_BIN: ${{ runner.temp }}/shellcheck run: | sudo apt-get update && sudo apt-get install -y shellcheck + cp /usr/bin/shellcheck "$SHELLCHECKJS_BIN" npm run lint - name: 🎨 Check formatting