Skip to content

Fix NLS mismatch in debug workspaces#21367

Merged
kylos101 merged 1 commit intomainfrom
kb/fix-debug-workspace-nls-mismatch
Mar 27, 2026
Merged

Fix NLS mismatch in debug workspaces#21367
kylos101 merged 1 commit intomainfrom
kb/fix-debug-workspace-nls-mismatch

Conversation

@kylos101
Copy link
Copy Markdown
Contributor

@kylos101 kylos101 commented Mar 26, 2026

Description

Debug workspaces created via gp validate throw !!! NLS MISSING: 1837 !!! in the browser console, breaking UI components.

The IDE Docker image copies /vscode-web/ then /vscode-reh-linux-x64/ into /ide/. The REH overlay overwrites the web client's NLS files (nls.messages.js, etc.) with the REH server's version, which has different message counts and index ordering.

Normal workspaces are unaffected because blobserve reads only the first Docker layer (the web client). Debug workspaces serve from the merged /ide/ filesystem, so workbench.js references NLS indices that don't exist in the REH's nls.messages.js.

This became a problem after #21350 changed the build pipeline from compile-build-without-mangling (shared NLS state) to core-ci (separate builds with divergent NLS outputs).

Fix: restore the four web client NLS files after the REH overlay.

Related Issue(s)

Fixes CLC-2237

How to test

  1. Build the IDE image with this change
  2. Start a workspace and run gp validate
  3. Open the debug workspace URL in the browser
  4. Verify no NLS MISSING errors in the browser console

Documentation

No docs changes needed.

/hold

The REH server COPY overlays /vscode-reh-linux-x64/ onto /vscode-web/ in
/ide/, overwriting the web client's NLS files with the REH server's version.
Normal workspaces are unaffected because blobserve reads only the first Docker
layer. Debug workspaces serve from the merged filesystem, causing workbench.js
to reference NLS indices that don't exist in the REH's nls.messages.js.

Restore the web client NLS files after the REH overlay.

Co-authored-by: Ona <no-reply@ona.com>
@kylos101
Copy link
Copy Markdown
Contributor Author

Testing in a preview
image

@kylos101
Copy link
Copy Markdown
Contributor Author

Fixed!

image

@kylos101 kylos101 marked this pull request as ready for review March 27, 2026 00:59
@kylos101 kylos101 requested a review from a team as a code owner March 27, 2026 00:59
@kylos101 kylos101 requested a review from mustard-mh March 27, 2026 00:59
@kylos101
Copy link
Copy Markdown
Contributor Author

I had to do the setup like so for the preview:

kubectl get configmap ide-config -o jsonpath='{.data.config\.json}' | \
  jq '.ideOptions.options.code.image = "eu.gcr.io/gitpod-dev-artifact/build/ide/code:kb-fix-debug-workspace-nls-mismatch-gha.249"' | \
  kubectl create configmap ide-config --from-file=config.json=/dev/stdin --dry-run=client -o yaml | \
  kubectl apply -f -

kubectl rollout restart deployment ide-service

And then start a new environment, and test gp validate.

@kylos101 kylos101 enabled auto-merge (squash) March 27, 2026 01:00
@kylos101 kylos101 disabled auto-merge March 27, 2026 01:02
Comment thread components/ide/code/leeway.Dockerfile
@kylos101 kylos101 merged commit f6739e5 into main Mar 27, 2026
27 checks passed
@kylos101 kylos101 deleted the kb/fix-debug-workspace-nls-mismatch branch March 27, 2026 04:30
@mustard-mh mustard-mh mentioned this pull request Mar 27, 2026
4 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants