Skip to content

feat!: remove the trustNss feature option - #82

Merged
dnegstad merged 1 commit into
mainfrom
claude/remove-trustnss-option
Jul 28, 2026
Merged

feat!: remove the trustNss feature option#82
dnegstad merged 1 commit into
mainfrom
claude/remove-trustnss-option

Conversation

@dnegstad

Copy link
Copy Markdown
Owner

Summary

trustNss only ever installed the libnss3-tools / nss-tools package. It never imported anything into a container browser's NSS database, so the option never delivered what its name and description promised. Installing a package into the container belongs in the devcontainer's own Dockerfile or config, not in this feature.

Why it never worked

  • install.sh has never invoked certutilgit log -S certutil over the feature directory returns one commit, and that hit is the word "certutil" inside the option description, not an invocation.
  • setup-cert.sh is openssl-only.
  • The workspace extension has no NSS code at all — only the OpenSSL trust directory and rehash.

The "for Chromium/Firefox trust" framing dates to the initial import, where it was written alongside the host-side NSS trust in nssTrust.ts. That one does perform a real certutil import and is unaffected by this change — host browser trust on Linux continues to work exactly as before.

Migration

Anyone who set "trustNss": true gets identical behavior from their Dockerfile:

RUN apt-get update && apt-get install -y --no-install-recommends libnss3-tools

or from devcontainer.json:

"postCreateCommand": "sudo apt-get update && sudo apt-get install -y libnss3-tools"

Changes

  • devcontainer-feature.json — option removed
  • install.shTRUST_NSS variable, its entry in the newline-validation loop, and the package-install block removed
  • test/install-sh.test.mjs — two TRUSTNSS: "false" fixture entries removed
  • Three README option tables — rows removed; the main README's example snippet now shows syncContainerCert instead

Side effect worth noting: install.sh no longer runs a package manager at all, so it no longer does distro detection or apt-get update. The buildah /tmp workaround stays — that bug is triggered by the devcontainer CLI's RUN --mount pattern rather than by our own apt-get, and the workaround still protects features that install after this one.

No version bump here; bump-version.yml handles that on release tags.

Breaking change

The trustNss option is removed. Existing configurations that set it will have the option ignored by the devcontainer CLI (a warning, not a build failure, on current CLI versions). See Migration above.

Verification

  • node test/validate-feature.mjs — all checks pass, including the assertion that every declared option is referenced in install.sh
  • node --test test/install-sh.test.mjs — passes
  • bash -n install.sh — clean (shellcheck isn't available in this environment; CI runs it)
  • npm run lint — clean
  • grep -ri trustnss across the repo — no references remain

Note on #80

#80 also edits these three READMEs, including the trustNss rows this PR deletes, so whichever merges second will need a rebase with a small conflict in the option tables. Happy to handle that once merge order is settled.

🤖 Generated with Claude Code

https://claude.ai/code/session_01KjJpJFDYwZTq7oYF7zLAkH


Generated by Claude Code

trustNss only ever installed the libnss3-tools/nss-tools package. It never
imported anything into a container browser's NSS database — install.sh has
never invoked certutil, setup-cert.sh is openssl-only, and the workspace
extension has no NSS code at all. The "for Chromium/Firefox trust" framing
dates to the initial import and conflated it with the host-side NSS trust in
nssTrust.ts, which does perform a real import and is unaffected by this change.

Installing a package into the container is the devcontainer's job. Anyone who
set trustNss: true gets identical behavior from their Dockerfile:

    RUN apt-get update && apt-get install -y --no-install-recommends libnss3-tools

or from devcontainer.json:

    "postCreateCommand": "sudo apt-get update && sudo apt-get install -y libnss3-tools"

Removes the option from devcontainer-feature.json, the TRUST_NSS variable and
its install block from install.sh, the fixture entries from the install.sh
test, and the option rows from the three READMEs.

Side effect: install.sh no longer runs a package manager at all, so it no
longer does distro detection or apt-get update. The buildah /tmp workaround
stays — that bug is triggered by the devcontainer CLI's RUN --mount pattern,
not by our own apt-get, and still protects subsequent features.

BREAKING CHANGE: the trustNss feature option is removed. Configurations that
set it will have the option ignored by the devcontainer CLI; install
libnss3-tools from your Dockerfile or postCreateCommand instead.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KjJpJFDYwZTq7oYF7zLAkH
@dnegstad
dnegstad merged commit b1cf66b into main Jul 28, 2026
7 checks passed
dnegstad pushed a commit that referenced this pull request Jul 28, 2026
#82 removed the trustNss feature option. The three READMEs on this branch had
been restructured heavily, so git mis-anchored its one-line deletion against
them — resolved by keeping this branch's content and applying the removal by
hand:

- Main README: dropped the option row, switched the feature-options example
  from trustNss to syncContainerCert, and rewrote the in-container browser
  trust note to point at the Dockerfile / postCreateCommand instead of the
  removed option.
- Both extension READMEs: dropped trustNss from the "feature also accepts"
  sentences.

Net change vs main is docs-only; the feature and test files match main exactly.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KjJpJFDYwZTq7oYF7zLAkH
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.

2 participants