feat(editor): bake curated ROS/vscode extensions into image (PR-9, Theme H) - #43
Conversation
- install fixed always-on set via code-server --install-extension - ROS2, Python, clangd, YAML, CMake (Open VSX); seeded into editor-data - swap 404'd ms-iot.vscode-ros for maintained rde-ros-2 🧩 - Generated by Copilot
There was a problem hiding this comment.
Pull request overview
Bakes a curated set of ROS/language VS Code extensions into the services/editor code-server image at build time so fresh editor containers have the same baseline tooling without extra setup.
Changes:
- Installs a fixed list of extensions during
docker buildviacode-server --install-extension. - Documents how the baked extensions interact with the
editor-datanamed volume seeding behavior.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.
Comments suppressed due to low confidence (1)
services/editor/Dockerfile:35
- The comment says the curated set is “ALWAYS-ON” and “NOT user-selectable”, but these extensions are installed into a writable, persisted
editor-datavolume. That means a user can still disable/uninstall them and the change will persist, so the Dockerfile currently only guarantees “present by default on first run with a fresh volume”. Consider rewording to avoid over-claiming behavior that isn’t enforced.
# This curated set is FIXED and ALWAYS-ON: it is installed at build time and is
# NOT user-selectable. Every UbeROS editor ships with the same ROS + language
# tooling out of the box, with no per-user configuration required.
Fix editor extension pins breaking build-and-test CI
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.
Comments suppressed due to low confidence (1)
services/editor/Dockerfile:35
- The header comment says this extension set is "FIXED and ALWAYS-ON" and "NOT user-selectable", but the Dockerfile/compose configuration shown here doesn't enforce that (users can typically disable/uninstall extensions via the code-server UI, and the extensions live in a writable named volume). Consider rewording to avoid claiming enforcement that isn't implemented.
# This curated set is FIXED and ALWAYS-ON: it is installed at build time and is
# NOT user-selectable. Every UbeROS editor ships with the same ROS + language
# tooling out of the box, with no per-user configuration required.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (1)
services/editor/Dockerfile:73
- The extension versions here don’t match the pinned versions documented in the earlier review thread (which stated these were updated to specific versions). If the intent is a reproducible, fixed curated baseline, align the Dockerfile pins with the versions that were validated in that thread (or update the thread/PR description to reflect the actual pins being shipped).
--install-extension Ranch-Hand-Robotics.rde-ros-2@1.0.9 \
--install-extension ms-python.python@2026.4.0 \
--install-extension llvm-vs-code-extensions.vscode-clangd@0.6.0 \
--install-extension redhat.vscode-yaml@1.24.2026063009 \
--install-extension ms-vscode.cmake-tools@1.23.52
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
Comments suppressed due to low confidence (1)
services/editor/Dockerfile:61
- The PR description says the
editor-datavolume is seeded from the image on first mount to provide the curated extensions, but in this implementation extensions are baked into/opt/uberos/curated-extensionsand then reconciled into the volume at container start via the new entrypoint script. Please update the PR description/validation notes to match the actual seeding mechanism (runtime reconciliation), so operators aren’t misled when troubleshooting.
# Coexistence with the `editor-data` volume (FR-D1): keep a curated extension
# cache OUTSIDE the mounted user-data path and reconcile it at startup into
# ~/.local/share/code-server/extensions when any curated extension is missing.
# This makes the curated baseline appear on fresh volumes and on upgrades with
# pre-existing `editor-data`, while preserving user-installed extensions.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (1)
services/editor/Dockerfile:78
- The pinned extension versions here don’t match the versions called out in the prior review thread reply (rde-ros-2@1.2.1, ms-python.python@2026.6.0, etc.). If the intent is “pin to current stable,” please reconcile the pins so reviewers/users aren’t left with conflicting version expectations.
--install-extension Ranch-Hand-Robotics.rde-ros-2@1.0.9 \
--install-extension ms-python.python@2026.4.0 \
--install-extension llvm-vs-code-extensions.vscode-clangd@0.6.0 \
--install-extension redhat.vscode-yaml@1.24.2026063009 \
--install-extension ms-vscode.cmake-tools@1.23.52
Part of the PRD 004 Release, Packaging & Distribution epic (Wave 1, PR-9).
Summary
Bakes a fixed, always-on curated extension set into the code-server editor image so it is present with no configuration.
code-server --install-extension(Open VSX) at build time: ROS2, Python, clangd, YAML, CMake.editor-datanamed volume is seeded from the image on first mount, so the set is present on a fresh container.ms-iot.vscode-roswith its maintained successorRanch-Hand-Robotics.rde-ros-2;ms-vscode.cpptools(not on Open VSX) replaced byllvm-vs-code-extensions.vscode-clangd.Requirements
Validation
code-server --list-extensions(no volume mounted) lists all curated IDs, proving they are baked into the image.