Skip to content

init: point VS Code lint and format extensions at .dx/local/bin, the root configs and the Go tier #8517

Open

Description

@TrapsterDK

Editor extensions should run the same pinned binaries and the same config as dx check. Today they use whatever is on PATH and their own defaults. gopls ignores staticcheck.conf (golang/go#36373), so Go needs its tier rendered into gopls settings.

Where

Do

  • Add VscodeKeys for tools that dx sync actually stages under .dx/local/bin:
    • ruff.path, ruff.configuration
    • eslint.runtime/eslint.options.overrideConfigFile
    • biome.lsp.bin, stylelint.configFile
    • shellcheck.executablePath, clangd.path
  • Point config keys at the root native file when it exists. Otherwise point them at .dx/config/<tool>/base.*.
  • gopls: add gopls to NESTED_SETTINGS and write ui.diagnostic.staticcheck and ui.diagnostic.analyses from the tier's gopls view. Do not write go.vetFlags (gopls ignores it). gopls has no errcheck analyzer; say so in a comment.
  • Recommend the matching extension in extensions.json only for selected tools.
  • Keep merge_owned semantics: only dx-owned keys change, and user keys survive.

Done when

  • In a test workspace with ruff, eslint and Go, settings.json holds the correct paths and gopls keys.
  • Editor parity (from quality: standard and strict config profiles in native tool files #7804): a headless check shows the ruff and gopls extensions report the same findings as dx lint on that fixture, and a one-rule edit in root ruff.toml reaches both.
  • Rerunning init is a no-op. Removing the tool from selection removes its keys.

Notes

Part of #8472
Blocked by #8488
Blocked by #8481
Blocked by #8514
Supersedes #7814

Activity

  1. added
    enhancementNew feature or request
    P2Improve and finish existing features
    blockedWaiting on upstream or a design decision
    model:sonnetAgent lane: scoped change with stated design, Sonnet
    on Nov 6, 2026
  2. github-actions commented on Nov 6, 2026

    @github-actions

    This issue has the blocked label but no Blocked on: line in its body. Add one naming the blocking issue (#N), a pull request URL, or the owner action. See CONTRIBUTING.md.

  3. removed
    blockedWaiting on upstream or a design decision
    on Nov 7, 2026
  4. TrapsterDK commented on Nov 7, 2026

    @TrapsterDK
    CollaboratorAuthor

    Status on origin/main: ruff.configuration, eslint/stylelint/biome config keys, gopls tier view and key removal on deselect are merged (#9159, #9189). Remaining: (1) binary paths (ruff.path, eslint.runtime, biome.lsp.bin, shellcheck.executablePath, clangd.path) cannot be emitted because dx sync still stages only doctor, dx and quality_markdown under .dx/local/bin (env/BUILD.bazel default_config); the Notes say not to emit paths for missing binaries. Needs those tools staged first. (2) The headless ruff/gopls extension parity check needs VS Code extensions, which tests cannot use (no network/devices). (3) Extension recommendations are not removed on deselect. No further code change is possible until tool staging lands; needs owner direction.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Improve and finish existing featuresenhancementNew feature or requestmodel:sonnetAgent lane: scoped change with stated design, Sonnet

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions