chore: remove the VS Code devcontainer and pin the Node version - #183
Open
andre8244 wants to merge 3 commits into
Open
chore: remove the VS Code devcontainer and pin the Node version#183andre8244 wants to merge 3 commits into
andre8244 wants to merge 3 commits into
Conversation
The devcontainer built frontend/Containerfile target dev — a bare Node image with no Go toolchain, no podman and no mkcert — while 4 of the 5 components here are Go and the dev stack needs podman for postgres, redis and nginx. It could only ever cover the frontend. It was also broken as configured: workspaceFolder /app pointed at the repo root, which has no package.json, while the image CMD is `npm install && npm run dev`. The frontend/README.md instructions dated from when .devcontainer/ lived under frontend/. Nothing referenced it — not CI, docker-compose.yml, render.yaml, deploy.sh, release.sh or the root README — only two stale paragraphs in frontend/README.md. It also handles git worktrees badly, since each linked worktree is a different path and the container name is fixed. Its one irreplaceable payload, the extension list, moves to a tracked .vscode/extensions.json, which applies in every checkout rather than only inside the container. golang.go is added: pointless in a Node-only image, the most important extension on the host. .gitignore switches to .vscode/* plus a negation so only extensions.json is tracked; personal settings.json stays ignored. Also drops frontend/nethesis-vue-components-3.12.2.tgz, unreferenced by both package.json (which wants ^3.13.0 from the registry) and package-lock.json. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
edospadoni
deployed
to
chore-remove-devcontainer - my-backend-qa PR #183
August 28, 2026 15:22 — with
Render
Active
edospadoni
deployed
to
chore-remove-devcontainer - my-frontend-qa PR #183
August 28, 2026 15:22 — with
Render
Active
edospadoni
deployed
to
chore-remove-devcontainer - my-collect-qa PR #183
August 28, 2026 15:22 — with
Render
Active
Contributor
|
🔗 Redirect URIs Added to Logto The following redirect URIs have been automatically added to the Logto application configuration: Redirect URIs:
Post-logout redirect URIs:
These will be automatically removed when the PR is closed or merged. |
andre8244
force-pushed
the
chore-remove-devcontainer
branch
from
August 28, 2026 15:40
6b4aa04 to
2de0e8a
Compare
edospadoni
deployed
to
chore-remove-devcontainer - my-backend-qa PR #183
August 28, 2026 15:40 — with
Render
Active
edospadoni
deployed
to
chore-remove-devcontainer - my-collect-qa PR #183
August 28, 2026 15:40 — with
Render
Active
edospadoni
deployed
to
chore-remove-devcontainer - my-frontend-qa PR #183
August 28, 2026 15:40 — with
Render
Active
andre8244
force-pushed
the
chore-remove-devcontainer
branch
from
August 28, 2026 15:54
2de0e8a to
f597020
Compare
edospadoni
deployed
to
chore-remove-devcontainer - my-frontend-qa PR #183
August 28, 2026 15:54 — with
Render
Active
edospadoni
deployed
to
chore-remove-devcontainer - my-collect-qa PR #183
August 28, 2026 15:54 — with
Render
Active
edospadoni
deployed
to
chore-remove-devcontainer - my-backend-qa PR #183
August 28, 2026 15:54 — with
Render
Active
andre8244
force-pushed
the
chore-remove-devcontainer
branch
from
August 28, 2026 16:15
f597020 to
cc93393
Compare
edospadoni
deployed
to
chore-remove-devcontainer - my-frontend-qa PR #183
August 28, 2026 16:15 — with
Render
Active
edospadoni
deployed
to
chore-remove-devcontainer - my-backend-qa PR #183
August 28, 2026 16:15 — with
Render
Active
edospadoni
deployed
to
chore-remove-devcontainer - my-collect-qa PR #183
August 28, 2026 16:15 — with
Render
Active
The Node version was stated in four places that disagreed: the frontend
Containerfile said 22.18.0, dev.sh tagged 22.14.0, ci-main.yml and
release-production.yml used 20, docs.yml used 22, and both READMEs said
"20+ LTS". Nothing reconciled them.
Pin 24.20.0 in .nvmrc at the repo root — root, not frontend/, because nvm
and fnm search upward, so a single pin covers frontend/ and docs/ alike. No
.node-version alongside it: that file uniquely serves nodenv, which nobody
here uses. All three workflows now read .nvmrc via node-version-file, and
the Containerfile base image matches it.
engines is a major floor (">=24") in both frontend and docs package.json,
not a copy of the pin: .nvmrc does the pinning, engines only guards against
a runtime too old for the type definitions, and a patch-level floor would
need bumping on every Node release. engine-strict is deliberately not
enabled, since npm applies it to dependency ranges too, so this stays an
EBADENGINE warning. Both lockfiles are regenerated so their root engines
agree with their package.json.
@types/node moves to ^24 (resolves 24.13.3), but the tsconfig base stays on
@tsconfig/node22: @tsconfig/node24 uses lib "ESNext.Error", which needs
TypeScript >= 5.9, and typescript is pinned ~5.8.0. Bumping that would pull
in vue-tsc 3 and is a separate change. The gap only affects the lib/target
used to check the vite/vitest/eslint config files, so it is harmless; the
reason is recorded in tsconfig.node.json.
packageManager is deliberately not added — npm ships inside the Node
tarball, so pinning Node already pins npm, and a Corepack field would be a
fourth version string to maintain.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
dev.sh and the Containerfile's dev stage were the non-VS-Code half of the devcontainer setup, and with the devcontainer gone they are the last reason to keep a container in the frontend dev loop. The convention for a Vite app is host-native — pin Node, npm ci, npm run dev — and here the container actively hurts: - dev.sh bind-mounts $(pwd) and its CMD runs `npm install` inside the container, overwriting the host's node_modules with container-resolved native binaries (esbuild, rollup). Interleaving ./dev.sh with a host `npm run dev` in one tree corrupts it, and nothing documented that. - Editor tooling must resolve node_modules from the host. Installing inside the container breaks Volar, ESLint and vue-tsc in the editor, whose only fix is running the editor in the container too. - The maintenance tax went unpaid: dev.sh still tagged its image dev-22.14.0 against a 22.18.0 base. base, builder, dist and production stages are untouched; nothing else referenced target dev (docker-compose.yml's frontend-full builds production). Verified `podman build --target production` still succeeds. docker-compose up -d from the repo root remains the path for running the app without installing anything, and the README now says so. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
andre8244
force-pushed
the
chore-remove-devcontainer
branch
from
August 28, 2026 16:26
cc93393 to
d96c9d4
Compare
edospadoni
deployed
to
chore-remove-devcontainer - my-frontend-qa PR #183
August 28, 2026 16:26 — with
Render
Active
andre8244
marked this pull request as ready for review
August 28, 2026 16:31
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Removes
.devcontainer/and makes.nvmrcthe single source of truth for the Nodeversion.
The devcontainer wasn't worth keeping. It only ever covered the frontend — a
Node-only image with no Go toolchain and no podman, in a repo where 4 of the 5
components are Go and the dev stack needs podman for postgres/redis/nginx. It
required VS Code plus a global Podman setting to work at all, and what it did
provide is what a pinned Node version and
npm cialready give you. Nothingreferenced it outside two stale paragraphs in
frontend/README.md.The Node version was pinned in four places that disagreed (Containerfile
22.18.0,dev.shtag22.14.0, CI20, docs CI22, both READMEs "20+ LTS").Now
.nvmrcholds24.20.0at the repo root, all three workflows read it vianode-version-file, and the Containerfile base image matches.One deviation:
@types/nodemoves to^24, but the tsconfig base stays on@tsconfig/node22.@tsconfig/node24setslib: ESNext.Error, which needsTypeScript >= 5.9, and this repo pins
~5.8.0; bumping it pulls in vue-tsc 3 andbelongs in its own PR. Only affects the lib/target used to check the
vite/vitest/eslint config files — reason recorded in
tsconfig.node.json.Related issue
None — developer-tooling cleanup with no tracking issue.
How to test
Passed locally on 24.20.0 (145 tests, 0 audit vulnerabilities), plus
podman build --target production frontend/. CI is the real check:frontend-testson the new
node-version-fileinput, anddocs.yml.Dependencies
None.