Repository navigation
Open
Labels
P2Improve and finish existing featuresImprove and finish existing featuresenhancementNew feature or requestNew feature or requestmodel:sonnetAgent lane: scoped change with stated design, SonnetAgent lane: scoped change with stated design, Sonnet
Description
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
- cli/adopt/src/scaffold.rs:291 (
NESTED_SETTINGS), 358-393 (editor_settings_value), 396, 401-470 (merge_owned), 574, 579 - the
dx syncstaging code for.dx/local/bin(moved by cli: add a .dx/local path module and move managed-environment state under it #8479, IDE paths by cli: move .dx/ide and the tools/dx launcher state under .dx/local #8481) quality/tiers/staticcheck/gopls_{standard,strict}.json(from quality: standard and strict tiers for C, C++ and Go (clang_tidy, clang_format, cppcheck, govet, errcheck, staticcheck, gofumpt) #8514)
Do
- Add VscodeKeys for tools that
dx syncactually stages under.dx/local/bin:ruff.path,ruff.configurationeslint.runtime/eslint.options.overrideConfigFilebiome.lsp.bin,stylelint.configFileshellcheck.executablePath,clangd.path
- Point config keys at the root native file when it exists. Otherwise point them at
.dx/config/<tool>/base.*. - gopls: add
goplstoNESTED_SETTINGSand writeui.diagnostic.staticcheckandui.diagnostic.analysesfrom the tier's gopls view. Do not writego.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_ownedsemantics: 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 linton that fixture, and a one-rule edit in rootruff.tomlreaches both. - Rerunning init is a no-op. Removing the tool from selection removes its keys.
Notes
- First verify which tools
dx syncstages. Do not emit a path for a binary that is not there. - Rust editor work stays in rust: upstream a --clippy flag for rules_rust rust_analyzer flycheck #7996, rust: headless flycheck test reports clippy lints on a dx init'd fixture #7998 and rust: pass flycheck --clippy from editor settings and stop writing user_config.json #8366 (paths rebased by cli: move .dx/ide and the tools/dx launcher state under .dx/local #8481).
Part of #8472
Blocked by #8488
Blocked by #8481
Blocked by #8514
Supersedes #7814
Metadata
Metadata
Assignees
Labels
P2Improve and finish existing featuresImprove and finish existing featuresenhancementNew feature or requestNew feature or requestmodel:sonnetAgent lane: scoped change with stated design, SonnetAgent lane: scoped change with stated design, Sonnet
Activity
github-actions commentedon Nov 6, 2026
This issue has the
blockedlabel but noBlocked on:line in its body. Add one naming the blocking issue (#N), a pull request URL, or the owner action. See CONTRIBUTING.md.init: write ruff.configuration and the gopls tier view into .vscode/s…
init: eslint, biome and stylelint editor keys, extension recommendati…
TrapsterDK commentedon Nov 7, 2026
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.