You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Added remote.extensionKind pinning for UI-only extensions
Templated remote.SSH.remotePlatform to hide personal identifiers; removed dead config
Added ~/.local/bash/limits.bash with ulimit -d unlimited restore (coordinates with ppat/coder memory watchdog)
Added coderUsername prompt to .chezmoi.toml.tmpl
Fixed workflow bug in .github/workflows/full-apply-test.yaml (grep -rl | xargs NUL-delimiter)
Follow-up delivered in #789, prompted by a coordinated ppat/coder change that apportions the
memory watchdog's per-role kill budgets against a 2048 MiB envelope for the whole remote VS Code
tree:
typescript.tsserver.maxTsServerMemory → js/ts.tsserver.maxMemory (the old key is deprecated,
though still honored as a fallback) and its value dropped 2048 → 768. TypeScript spawns two
tsserver processes that both read this same setting independently, so 2048 let tsserver alone
claim up to 4096 MiB against the 2048 MiB budget for the entire tree — the original value never
accounted for that.
remote.extensionKind gained hashicorp.hcl and samuelcolvin.jinjahtml (grammar-only, no LSP
client, no fs/child_process use — confirmed against the extensions actually installed under ~/.vscode-server/extensions on a live workspace).
On that same live workspace, confirmed by inspecting /proc/<pid>/cmdline for every VS Code
server process: the extension host (the tree's biggest, most volatile process, 685-738 MiB PSS
observed) and the file watcher, pty host, and JSON/Markdown/TOML language server processes all
expose no heap-ceiling setting at all. NODE_OPTIONS would reach all of them (none pass an
explicit --max-old-space-size), but only if set in whatever environment launches the remote
server tree — that's the ppat/coder template, not dotfiles, and setting it globally via a
dotfiles shell-profile export would leak the same low ceiling onto every unrelated Node process
run in a terminal. Not implemented for that reason.
Verify js/ts.tsserver.maxMemory and remote.extensionKind actually take effect — after chezmoi apply + a window reload/reconnect, check Settings UI (search each key, confirm value
and User provenance) and Help: Show Running Extensions (confirm hashicorp.hcl / samuelcolvin.jinjahtml run on the UI extension host). See fix(vscode): lower tsserver heap ceiling, pin more UI-only extensions #789's coverage-gap note.
No available lever for the extension host's own heap, short of the NODE_OPTIONS
blast-radius problem above. If this keeps mattering, the fix likely belongs in ppat/coder
(scoping an env var to just the remote server's process tree), not here.
Important gotcha
The new coderUsername prompt means every machine must run chezmoi init once before its next chezmoi apply/update, or rendering will fail with map has no entry for key "coderUsername".
Status
Settings work delivered and merged in #773:
extensions.autoUpdatesetting and addedextensions.autoCheckUpdates: falsefiles.watcherExcludeandsearch.excludewith 11 new entries (.vscode-server,.linuxbrew, mise, terraform, etc.); addedsearch.followSymlinks: falsetypescript.tsserver.maxTsServerMemory: 2048,typescript.disableAutomaticTypeAcquisition: true)git.autofetch: false,git.autoRepositoryDetection: "openEditors",git.repositoryScanMaxDepth: 1)remote.extensionKindpinning for UI-only extensionsremote.SSH.remotePlatformto hide personal identifiers; removed dead config~/.local/bash/limits.bashwithulimit -d unlimitedrestore (coordinates with ppat/coder memory watchdog)coderUsernameprompt to.chezmoi.toml.tmpl.github/workflows/full-apply-test.yaml(grep -rl | xargsNUL-delimiter)Follow-up delivered in #789, prompted by a coordinated
ppat/coderchange that apportions thememory watchdog's per-role kill budgets against a 2048 MiB envelope for the whole remote VS Code
tree:
typescript.tsserver.maxTsServerMemory→js/ts.tsserver.maxMemory(the old key is deprecated,though still honored as a fallback) and its value dropped 2048 → 768. TypeScript spawns two
tsserver processes that both read this same setting independently, so 2048 let tsserver alone
claim up to 4096 MiB against the 2048 MiB budget for the entire tree — the original value never
accounted for that.
remote.extensionKindgainedhashicorp.hclandsamuelcolvin.jinjahtml(grammar-only, no LSPclient, no
fs/child_processuse — confirmed against the extensions actually installed under~/.vscode-server/extensionson a live workspace)./proc/<pid>/cmdlinefor every VS Codeserver process: the extension host (the tree's biggest, most volatile process, 685-738 MiB PSS
observed) and the file watcher, pty host, and JSON/Markdown/TOML language server processes all
expose no heap-ceiling setting at all.
NODE_OPTIONSwould reach all of them (none pass anexplicit
--max-old-space-size), but only if set in whatever environment launches the remoteserver tree — that's the
ppat/codertemplate, not dotfiles, and setting it globally via adotfiles shell-profile export would leak the same low ceiling onto every unrelated Node process
run in a terminal. Not implemented for that reason.
session started after fix(vscode): stop leaking PII in remotePlatform, cut remote memory/CPU overhead #773 merged), both tsserver processes were still running with the
extension's own unconfigured default (
--max-old-space-size=3072), not the2048fix(vscode): stop leaking PII in remotePlatform, cut remote memory/CPU overhead #773 set.Most likely explanation is that
chezmoi applyhadn't run on the Mac since fix(vscode): stop leaking PII in remotePlatform, cut remote memory/CPU overhead #773, rather than ascope-routing problem — but this was never actually verified via the Settings UI's provenance
badge on either PR. Worth doing once, since it's the only way to close out the "does this
actually take effect" question this whole line of settings work rests on.
Outstanding
RooVeterinaryInc.roo-clinefromremote.SSH.defaultExtensionsand uninstall it fromthe remote — blocked on Back up Roo Code conversation history on the Mac before removing the extension #770 (Mac-side conversation backup).
js/ts.tsserver.maxMemoryandremote.extensionKindactually take effect — afterchezmoi apply+ a window reload/reconnect, check Settings UI (search each key, confirm valueand User provenance) and Help: Show Running Extensions (confirm
hashicorp.hcl/samuelcolvin.jinjahtmlrun on the UI extension host). See fix(vscode): lower tsserver heap ceiling, pin more UI-only extensions #789's coverage-gap note.NODE_OPTIONSblast-radius problem above. If this keeps mattering, the fix likely belongs in
ppat/coder(scoping an env var to just the remote server's process tree), not here.
Important gotcha
The new
coderUsernameprompt means every machine must runchezmoi initonce before its nextchezmoi apply/update, or rendering will fail withmap has no entry for key "coderUsername".Related
remote.SSH.defaultExtensionsremoval above.remote.extensionKindpins.ppat/coder— the memory watchdoglimits.bashand this envelope work coordinate with.