Skip to content

Dialogless install experience for python and PHP LSP - #3035

Merged
abose merged 3 commits into
mainfrom
ai
Jul 24, 2026
Merged

Dialogless install experience for python and PHP LSP#3035
abose merged 3 commits into
mainfrom
ai

Conversation

@abose

@abose abose commented Jul 24, 2026

Copy link
Copy Markdown
Member

Removes the consent dialog + install bar + problems-panel row for the
PHP and Python language servers (user feedback: too many dialogs). The
servers now install automatically on the first relevant file open,
announced only through the status-bar task whose popup is opened for
every install/upgrade (download size in the message) with a stop icon.

  • cancel: downloadFile/_npmInstallInFolder return promises carrying a
    cancel() handle (node-side keyed RPC under the hood; AbortController
    for downloads, retained child process for npm). Cancel cleans partial
    files and defers retry to the next app launch; the master prefs
    (python/php.codeIntelligence) stay the durable opt-out.
  • npm installs on the same folder are now mutually exclusive, and the
    in-flight registries are cleaned on every failure path so retries
    always work.
  • offline is a non-event: no task/toast, auto-retry when connectivity
    returns (window online) or next launch. Network errors mid-install
    take the same quiet path.
  • real failures roll back the partial install, turn the task red with a
    retry icon, open the popup and raise a subtle toast; metrics
    (lsp/pyInst|phpInst x ok/upOk/fail/cancel/waitNet) and logger error
    reports added.
  • corrupt-but-present installs self-repair (wipe + reinstall once per
    session) instead of staying silently broken.
  • server versions now live in src/config.json (lsp_server_pins), flowing
    through generated appConfig.js; a missing pins block alerts (stale
    build tripwire). npm run updateBuiltInLSPS bumps all built-in servers
    (runtime pins + bundled vtsls/json in src-node) to latest stable, and
    a monthly workflow opens a reviewed PR gated by the LSP suites.
  • auto-install never runs in test windows; suites acquire servers via
    installNow() explicitly (new guard specs).

abose added 3 commits July 24, 2026 17:47
…task

Removes the consent dialog + install bar + problems-panel row for the
PHP and Python language servers (user feedback: too many dialogs). The
servers now install automatically on the first relevant file open,
announced only through the status-bar task whose popup is opened for
every install/upgrade (download size in the message) with a stop icon.

- cancel: downloadFile/_npmInstallInFolder return promises carrying a
  cancel() handle (node-side keyed RPC under the hood; AbortController
  for downloads, retained child process for npm). Cancel cleans partial
  files and defers retry to the next app launch; the master prefs
  (python/php.codeIntelligence) stay the durable opt-out.
- npm installs on the same folder are now mutually exclusive, and the
  in-flight registries are cleaned on every failure path so retries
  always work.
- offline is a non-event: no task/toast, auto-retry when connectivity
  returns (window online) or next launch. Network errors mid-install
  take the same quiet path.
- real failures roll back the partial install, turn the task red with a
  retry icon, open the popup and raise a subtle toast; metrics
  (lsp/pyInst|phpInst x ok/upOk/fail/cancel/waitNet) and logger error
  reports added.
- corrupt-but-present installs self-repair (wipe + reinstall once per
  session) instead of staying silently broken.
- server versions now live in src/config.json (lsp_server_pins), flowing
  through generated appConfig.js; a missing pins block alerts (stale
  build tripwire). npm run updateBuiltInLSPS bumps all built-in servers
  (runtime pins + bundled vtsls/json in src-node) to latest stable, and
  a monthly workflow opens a reviewed PR gated by the LSP suites.
- auto-install never runs in test windows; suites acquire servers via
  installNow() explicitly (new guard specs).
jsdoc cannot parse TypeScript intersection types - the
"Promise<void> & {cancel...}" return annotations broke the API docs
generator. Replaced with a CancellablePromise typedef.
@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
12.0% Duplication on New Code (required ≤ 3%)

See analysis details on SonarQube Cloud

@abose
abose merged commit 77feecc into main Jul 24, 2026
12 of 21 checks passed
@abose
abose deleted the ai branch July 24, 2026 16:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant