diff --git a/engineering/ide/.vscode/README.md b/engineering/ide/.vscode/README.md index ebc45af..67b7fce 100755 --- a/engineering/ide/.vscode/README.md +++ b/engineering/ide/.vscode/README.md @@ -34,6 +34,26 @@ descriptions of the information: used in any rails project. (More Information)[https://rahul-arora.medium.com/debugging-ruby-on-rails-server-in-vs-code-819b45113e78] +## Settings Sync — extensions are dotfiles-owned (do this on every machine) + +**This repo is the single source of truth for extensions** — the `extensions*.txt` lists, +installed by `onboarding_bin/vscode-install-extensions-*.sh`. VS Code **Settings Sync is NOT**. + +Settings Sync will silently add / remove / enable / disable extensions to match another machine +or an older cloud snapshot. On **2026-08-11** it uninstalled `dbaeumer.vscode-eslint` and +`esbenp.prettier-vscode` here, silently breaking lint and format-on-save. To keep dotfiles +authoritative: + +1. **Turn the Extensions resource OFF in Settings Sync — on every machine.** There is no + `settings.json` key for this; it is UI-only: + Command Palette → **Settings Sync: Configure…** → uncheck **Extensions**. +2. `settings.json` → `settingsSync.ignoredExtensions` lists the core dev tools (eslint, prettier, + stylelint, shell-format) as a per-extension safety net — no wildcard is supported, so it can + only protect named extensions, which is why step 1 is the real fix. + +Settings / Keybindings / Snippets are also symlinked from this repo, so consider turning those +Sync resources off too if you want dotfiles fully authoritative. + ## Extensions *Needs to be cross checked with extensions_base.txt and updated for 2023* diff --git a/engineering/ide/.vscode/extensions.txt b/engineering/ide/.vscode/extensions.txt index de67b3a..f2d357b 100755 --- a/engineering/ide/.vscode/extensions.txt +++ b/engineering/ide/.vscode/extensions.txt @@ -15,9 +15,7 @@ cpylua.language-postcss davidanson.vscode-markdownlint dbaeumer.vscode-eslint deque-systems.vscode-axe-linter -dsznajder.es7-react-js-snippets eamodio.gitlens -equimper.react-native-react-redux esbenp.prettier-vscode exiasr.hadolint firsttris.vscode-jest-runner @@ -26,25 +24,16 @@ foxundermoon.shell-format github.codespaces github.vscode-github-actions github.vscode-pull-request-github -gluca.log-view-l4n -h501cloud.html-email-preview htmlhint.vscode-htmlhint ibm.output-colorizer jmfirth.vsc-space-block-jumper -jmrog.vscode-nuget-package-manager -johnpapa.angular-essentials -johnpapa.angular2 -johnpapa.vscode-peacock -johnpapa.winteriscoming koichisasada.vscode-rdbg l13rary.l13-diff letrieu.expand-region manuelpuyol.erb-linter mengrbatinov.json-snippet-to-md-documentation -mikestead.dotenv mongodb.mongodb-vscode moshfeu.diff-merge -ms-azuretools.vscode-docker ms-dotnettools.csdevkit ms-dotnettools.csharp ms-dotnettools.dotnet-maui @@ -57,7 +46,6 @@ ms-python.vscode-pylance ms-vscode-remote.remote-containers ms-vscode-remote.remote-ssh ms-vscode-remote.remote-ssh-edit -ms-vscode-remote.remote-wsl ms-vscode-remote.vscode-remote-extensionpack ms-vscode.powershell ms-vscode.remote-explorer @@ -66,18 +54,15 @@ ms-vscode.vs-keybindings ms-vscode.vscode-speech ms-vscode.wordcount ms-vsliveshare.vsliveshare -nrwl.angular-console ofhumanbondage.react-proptypes-intellisense orta.vscode-jest ortoni.ortoni -pkief.angular-component-extractor pkief.material-icon-theme pranaygp.vscode-css-peek prisma.prisma redhat.vscode-yaml richie5um2.vscode-sort-json ritwickdey.liveserver -runem.lit-plugin ryu1kn.partial-diff saoudrizwan.claude-dev shopify.ruby-lsp @@ -88,7 +73,6 @@ streetsidesoftware.code-spell-checker stylelint.vscode-stylelint thinker.sort-json timonwong.shellcheck -tlevesque2.duplicate-finder tomoki1207.pdf tyriar.sort-lines usernamehw.errorlens diff --git a/engineering/ide/.vscode/extensions_base.txt b/engineering/ide/.vscode/extensions_base.txt index 29bd867..2ba5709 100644 --- a/engineering/ide/.vscode/extensions_base.txt +++ b/engineering/ide/.vscode/extensions_base.txt @@ -8,16 +8,13 @@ eamodio.gitlens esbenp.prettier-vscode foxundermoon.shell-format GitHub.codespaces -GitHub.copilot github.vscode-github-actions GitHub.vscode-pull-request-github HTMLHint.vscode-htmlhint jmfirth.vsc-space-block-jumper L13RARY.l13-diff letrieu.expand-region -mikestead.dotenv moshfeu.diff-merge -ms-azuretools.vscode-docker ms-dotnettools.vscode-dotnet-runtime ms-playwright.playwright ms-vscode-remote.remote-containers @@ -27,7 +24,6 @@ ms-vscode-remote.vscode-remote-extensionpack ms-vscode.remote-explorer ms-vscode.remote-server ms-vscode.vs-keybindings -PKief.material-icon-theme pranaygp.vscode-css-peek redhat.vscode-yaml richie5um2.vscode-sort-json diff --git a/engineering/ide/.vscode/extensions_devops.txt b/engineering/ide/.vscode/extensions_devops.txt index dc66690..e1e4cd9 100644 --- a/engineering/ide/.vscode/extensions_devops.txt +++ b/engineering/ide/.vscode/extensions_devops.txt @@ -4,11 +4,9 @@ formulahendry.github-actions henriiik.docker-linter KnisterPeter.vscode-github me-dutour-mathieu.vscode-github-actions -ms-azuretools.vscode-docker ms-kubernetes-tools.vscode-aks-tools ms-kubernetes-tools.vscode-kubernetes-tools ms-vscode.remote-explorer ms-vscode-remote.remote-ssh ms-vscode-remote.remote-ssh-edit -ms-vscode-remote.remote-wsl MS-vsliveshare.vsliveshare diff --git a/engineering/ide/.vscode/extensions_react.txt b/engineering/ide/.vscode/extensions_react.txt index f1a3896..7c9b5f9 100644 --- a/engineering/ide/.vscode/extensions_react.txt +++ b/engineering/ide/.vscode/extensions_react.txt @@ -1,4 +1,2 @@ christian-kohler.npm-intellisense -dsznajder.es7-react-js-snippets -EQuimper.react-native-react-redux wix.vscode-import-cost diff --git a/engineering/ide/.vscode/settings.json b/engineering/ide/.vscode/settings.json index e4c4e01..b2115ad 100755 --- a/engineering/ide/.vscode/settings.json +++ b/engineering/ide/.vscode/settings.json @@ -141,9 +141,7 @@ }, "yaml.format.singleQuote": false, "yaml.format.proseWrap": "never", - "yaml.schemaStore.enable": true, - "yaml.trace.server": "verbose", - "[yaml]": { + "yaml.schemaStore.enable": true, "[yaml]": { "editor.defaultFormatter": "redhat.vscode-yaml", }, "accessibility.signals.terminalBell": { @@ -177,7 +175,7 @@ "research", "bugfix", ], - "atlascode.jira.startWorkBranchTemplate.customTemplate": "{{{prefix}}}/{{{issueKey}}}-{{{summary}}}", + "atlascode.jira.startWorkBranchTemplate.customTemplate": "{{{prefix}}}{{{issueKey}}}-{{{summary}}}", "atlascode.jira.statusbar.showUser": false, "atlascode.jira.todoIssues.triggers": [ "BUG:", @@ -201,9 +199,7 @@ "vscode-yaml-sort.extensions": ["yaml", "yml"], "editor.autoClosingQuotes": "languageDefined", "editor.autoIndent": "advanced", - "editor.autoSurround": "languageDefined", - "atlascode.outputLevel": "debug", - "autoimport.filesToScan": "**/*.{js,jsx,ts,tsx,css,scss}", + "editor.autoSurround": "languageDefined", "autoimport.filesToScan": "**/*.{js,jsx,ts,tsx,css,scss}", "autoimport.showNotifications": true, "breadcrumbs.enabled": true, "codespaces.accountProvider": "GitHub", @@ -515,6 +511,7 @@ "Newtonsoft", "NEXTAUTH", "nextjs", + "nivo", "nodelist", "noninteractive", "noopener", @@ -710,11 +707,9 @@ }, "debug.openExplorerOnEnd": false, "debug.terminal.clearBeforeReusing": true, - "debug.toolBarLocation": "docked", - "dev.containers.logLevel": "trace", - "diffEditor.codeLens": true, + "debug.toolBarLocation": "docked", "diffEditor.codeLens": true, "diffEditor.experimental.showMoves": false, - "diffEditor.ignoreTrimWhitespace": false, + "diffEditor.ignoreTrimWhitespace": true, "diffEditor.useInlineViewWhenSpaceIsLimited": false, "docker.images.sortBy": "CreatedTime", "dotfiles.installCommand": "install", @@ -745,7 +740,7 @@ "editor.guides.indentation": true, "editor.hover.delay": 200, "editor.inlineCompletionsAccessibilityVerbose": true, - "editor.largeFileOptimizations": false, + "editor.largeFileOptimizations": true, "editor.minimap.enabled": false, "editor.quickSuggestions": { "comments": "off", @@ -845,6 +840,8 @@ "**/dist/**": true, "**/.git/**": true, "**/storybook-static/**": true, + "**/coverage/**": true, + "**/build/**": true, }, "gistpad.playgrounds.showConsole": true, "gistpad.playgrounds.stylesheetLanguage": "scss", @@ -940,14 +937,10 @@ "gitlens.views.repositories.files.layout": "list", "gitlens.views.repositories.showIncomingActivity": false, "gitlens.views.search.enabled": false, - "gitlens.views.searchAndCompare.files.layout": "tree", - "grammarly.debug": true, - "hadolint.hadolintPath": "/opt/homebrew/bin/hadolint", + "gitlens.views.searchAndCompare.files.layout": "tree", "hadolint.hadolintPath": "/opt/homebrew/bin/hadolint", "html.format.enable": true, "html.format.extraLiners": "none", - "html.format.templating": true, - "html.trace.server": "messages", - "htmlhint.documentSelector": ["htm", "html"], + "html.format.templating": true, "htmlhint.documentSelector": ["htm", "html"], "javascript.preferences.importModuleSpecifier": "non-relative", "keyboard.layout": "us", "l13Diff.confirmCopy": false, @@ -961,23 +954,17 @@ "liveServer.settings.donotVerifyTags": true, "liveServer.settings.wait": 500, "liveshare.allowGuestDebugControl": true, - "liveshare.allowGuestTaskControl": true, - "liveshare.diagnosticLogging": true, - "liveshare.presence": true, + "liveshare.allowGuestTaskControl": true, "liveshare.presence": true, "markdown.experimental.updateLinksOnPaste": true, "markdown.extension.completion.enabled": true, "markdown.extension.print.theme": "dark", - "markdown.preview.fontSize": 16, - "markdown.server.log": "debug", - "markdown.validate.unusedLinkDefinitions.enabled": "warning", + "markdown.preview.fontSize": 16, "markdown.validate.unusedLinkDefinitions.enabled": "warning", "markdownlint.run": "onSave", "merge-conflict.autoNavigateNextConflict.enabled": true, "npm.packageManager": "npm", "path-intellisense.autoSlashAfterDirectory": true, "playwright.reuseBrowser": false, - "playwright.showTrace": false, - "prettier.enableDebugLogs": true, - "prettier.proseWrap": "never", + "playwright.showTrace": false, "prettier.proseWrap": "never", "prettier.singleQuote": true, // "prettier.requireConfig": true, "prettier.useEditorConfig": false, @@ -1019,7 +1006,18 @@ "search.useIgnoreFiles": false, "security.promptForLocalFileProtocolHandling": false, "security.workspace.trust.untrustedFiles": "open", - "settingsSync.ignoredExtensions": ["ms-vscode-remote.remote-containers"], + // Extensions are owned by this repo (extensions*.txt), NOT Settings Sync. + // Sync silently uninstalled eslint + prettier on 2026-08-11; these entries are a + // per-extension safety net (no wildcard is supported). The full fix is to turn the + // Extensions resource OFF in "Settings Sync: Configure..." on every machine — see + // engineering/ide/.vscode/README.md § Settings Sync. + "settingsSync.ignoredExtensions": [ + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + "foxundermoon.shell-format", + "ms-vscode-remote.remote-containers", + "stylelint.vscode-stylelint", + ], "shellcheck.enable": true, "shellcheck.enableQuickFix": true, "shellcheck.ignoreFileSchemes": ["git", "gitfs"], @@ -1172,6 +1170,14 @@ "terminal.integrated.wordSeparators": "()[]{}',\"`─‘’|", "typescript.suggest.completeFunctionCalls": true, "typescript.validate.enable": true, + // macOS: watch parent directories via FSEvents instead of one kqueue fd per + // file. Collapses tsserver's ~1600 open fds (dominated by generated OpenAPI + // model files) to a handful of dir watchers — the real fd consumer per window. + "typescript.tsserver.watchOptions": { + "watchFile": "useFsEventsOnParentDirectory", + "watchDirectory": "useFsEvents", + "fallbackPolling": "dynamicPriority", + }, "vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue", "window.newWindowDimensions": "maximized", "window.restoreWindows": "all", @@ -1196,17 +1202,16 @@ "workbench.startupEditor": "welcomePage", "workbench.tree.indent": 4, "workbench.view.alwaysShowHeaderActions": true, - "window.confirmSaveUntitledWorkspace": false, - "eslint.debug": true, - "terminal.integrated.env.osx": {}, + "window.confirmSaveUntitledWorkspace": false, "terminal.integrated.env.osx": {}, "gitlens.views.scm.grouped.views": { - "commits": false, + "commits": true, "branches": false, "remotes": true, "stashes": false, "tags": false, "worktrees": false, "contributors": false, + "fileHistory": false, "repositories": true, "searchAndCompare": true, "launchpad": false, @@ -1215,7 +1220,7 @@ "all": true, }, "chat.editing.alwaysSaveWithGeneratedChanges": true, - "scm.diffDecorationsIgnoreTrimWhitespace": "true", + "scm.diffDecorationsIgnoreTrimWhitespace": true, "l13Diff.ignoreTrimWhitespace": "on", "gitlens.blame.ignoreWhitespace": true, "gitlens.advanced.fileHistoryShowAllBranches": true, @@ -1224,9 +1229,7 @@ "application.shellEnvironmentResolutionTimeout": 20, "geminicodeassist.project": "retail-success-449215", "githubPullRequests.pushBranch": "always", - "git.openRepositoryInParentFolders": "prompt", - "diffEditor.maxComputationTime": 0, - "dotenv.enableAutocloaking": false, + "git.openRepositoryInParentFolders": "always", "dotenv.enableAutocloaking": false, "cSpell.checkVSCodeSystemFiles": true, "cSpell.allowCompoundWords": true, "cSpell.logLevel": "Warning", @@ -1276,8 +1279,19 @@ "npm run lint:errors-only": true, "npx vitest": true, }, - "chat.viewSessions.orientation": "stacked", "claudeCode.preferredLocation": "panel", "terminal.integrated.initialHint": false, "chat.useClaudeHooks": true, + "yaml.disableSchemaDetection": [ + "**/.github/workflows/*.yml", + "**/.github/workflows/*.yaml", + "**/.gitea/workflows/*.yml", + "**/.gitea/workflows/*.yaml", + "**/.forgejo/workflows/*.yml", + "**/.forgejo/workflows/*.yaml", + "azure-pipelines.yml", + "azure-pipelines.yaml", + ], + "diffEditor.hideUnchangedRegions.enabled": true, + "chat.viewSessions.orientation": "stacked", }