Skip to content

Add OpenVSCode IDE support and CLI documentation#28

Open
struanb wants to merge 16 commits intomainfrom
claude/count-commits-since-tag-Jqug2
Open

Add OpenVSCode IDE support and CLI documentation#28
struanb wants to merge 16 commits intomainfrom
claude/count-commits-since-tag-Jqug2

Conversation

@struanb
Copy link
Copy Markdown
Contributor

@struanb struanb commented Mar 14, 2026

Summary

This PR adds support for multiple web IDEs (Theia and OpenVSCode) and introduces comprehensive documentation for the new dockside CLI tool. The changes enable users to select their preferred IDE at devtainer launch time and provide programmatic access to Dockside functionality.

Key Changes

IDE Selection and Management

  • Added support for OpenVSCode as an alternative to Theia
  • Users can now choose between available IDEs at launch time via the UI
  • Active IDE can be changed for running devtainers via the Edit function
  • Added new profile configuration options:
    • IDEs: Specify allowed IDE installations for a profile
    • options: Dynamic user-input fields for profile-specific configuration (e.g., git branch, PR number)
  • Added user resource configuration for IDE access control

CLI Documentation

  • Added comprehensive documentation for the dockside CLI tool
  • Documented CLI installation, authentication, and common commands
  • Included examples for scripting, automation, and CI/CD integration
  • Positioned CLI as a zero-dependency Python 3.6+ alternative to the web UI

Profile Configuration Enhancements

  • Added gitURLs property to control allowed git repository URLs
  • Enhanced networks and runtimes properties to support auto-detection via ["*"] wildcard
  • Documented new options field for dynamic form inputs injected as environment variables

Additional Features

  • Added GitHub CLI (gh) with per-user token support to core features list
  • Documented gh_token user configuration for automatic GitHub authentication
  • Updated IDE layer documentation to cover both Theia and OpenVSCode

Development Documentation

  • Updated Theia update procedure with version examples (1.66.1)
  • Added note about system binaries location (/opt/dockside/system/latest/bin/)
  • Documented automated test suite (test.sh) with checks performed
  • Updated file paths in development examples to use absolute paths

Roadmap Updates

  • Removed completed items:
    • IDE version selection (now implemented)
    • Support for other IDEs (OpenVSCode now supported)
    • Integrated SSH key management (GitHub CLI support added)

Miscellaneous

  • Updated copyright year to 2024
  • Updated example Theia version references throughout documentation

https://claude.ai/code/session_01Cz1yNYuLBuADxd7woZ3vSS

claude and others added 16 commits March 14, 2026 10:16
Documents 113 commits of new features and changes:
- docs/setup.md: add profile properties (IDEs, gitURLs, options, readonly
  bind mounts, wildcard networks/runtimes), user gh_token field, IDEs
  resource type
- docs/usage.md: add OpenVSCode IDE, IDE selection/switching, profile
  options at launch, Dockside CLI section
- docs/README.md: add OpenVSCode and gh CLI to features, CLI section,
  update copyright year to 2024
- docs/roadmap.md: remove items now implemented (multi-IDE, OpenVSCode,
  branch/PR options, gh-based SSH key management)
- docs/developing/building-image.md: update Theia version example to 1.66.1
- docs/developing/updating-theia.md: update version refs and folder
  structure for ide/theia/latest convention; note system binaries path
- docs/developing/developing.md: rename IDE section, add OpenVSCode, add
  automated test suite (test.sh), update home path to /home/dockside/dockside

https://claude.ai/code/session_01Cz1yNYuLBuADxd7woZ3vSS
- docs/README.md: add autodetection advanced feature bullet; de-Theia-ify
  Extensions section ssh-agent link; update copyright to 2026
- docs/setup.md: add autodetection paragraph (networks/runtimes/IDEs),
  network name format note, gitURL .git suffix note; add
  io.containerd.runc.v2 to runtimes example
- docs/usage.md: add note about bundled gh CLI and gh_token in IDE section
- docs/securing.md: add tip about networks ["*"] wildcard autodetection
- docs/extensions/ssh.md: replace all "Theia IDE" references with "IDE"
- docs/extensions/runtimes/sysbox.md: add ["*"] autodetection note to
  sysbox-runc runtimes step

https://claude.ai/code/session_01Cz1yNYuLBuADxd7woZ3vSS
…EADME

- Opening paragraph: add codex's "It packages multiple browser IDE options,
  such as OpenVSCode Server and Theia, alongside secure SSH access for
  terminal workflows or connecting local VS Code via Remote SSH."
- IDE bullet: adopt codex's "Powerful IDE bundle including OpenVSCode Server
  and Theia, plus first-class SSH and VS Code-over-SSH access." (richer than
  the bare "choose between" phrasing)
- Workflow sentence: restore codex's "Dockside supports working directly in
  browser IDEs, connecting local VS Code via SSH, or using plain SSH
  terminals, so teams can adopt the workflow that best fits each task."
- Extensions local ssh-agent link: adopt codex's plural "across Dockside
  IDEs...their UIs or terminals" (better for multi-IDE context)
- Upgrading line: use codex's "Dockside IDE bundle" (was incorrectly left
  as "Dockside Theia IDE")

https://claude.ai/code/session_01Cz1yNYuLBuADxd7woZ3vSS
…oarding

- Promote local launch to a prominent 'Quick Start — Launch locally'
  subsection with framing copy for solo devs and multi-project teams
- Add 'Launch on a public domain with auto-generated SSL' as the
  primary shared/team launch path (was buried as option 4)
- Drop 'in production' framing throughout; local launch is a first-class
  usage model, not just a trial option
- Move self-signed and self-supplied SSL instructions into a new
  'Advanced Launch Options' subsection
- Mark Google Cloud Deployment Manager as deprecated and move to
  Advanced Launch Options
- Add Terraform placeholder in Advanced Launch Options

https://claude.ai/code/session_01Cz1yNYuLBuADxd7woZ3vSS
- Rewrite Introduction to lead with devcontainer-per-branch model and
  call out AI coding tool support up front
- Add dedicated 'AI-assisted development' section covering Claude Code
  and Codex CLI support, per-session container isolation, and the
  coming-soon network firewall management feature
- Work 'devcontainer' terminology in throughout: intro, features list,
  benefits, Quick Start, and advanced features
- Add AI-ready devcontainers bullet to core features list
- Fix broken markdown links on OpenVSCode Server and Theia
- Add AI coding agent benefit to 'Benefits for developers'
- Replace duplicate IDE-unification sentence in product manager
  benefits with a more compelling branch-per-staging-environment point
- Expand firewall bullet in advanced features to reference AI agent
  network isolation use case
- Rewrite Roadmap section with specific near-term priorities
  (firewall management, Terraform) rather than vague open-ended copy

https://claude.ai/code/session_01Cz1yNYuLBuADxd7woZ3vSS
…vcontainer note, case study

- Add shields.io badges (GitHub stars, Docker pulls, licence, AI-ready)
  to the header for instant credibility signals
- Add 'Why Dockside?' comparison table against GitHub Codespaces,
  Gitpod and Coder — highlights self-hosted, no cloud fees, root access,
  AI CLI support, and coming-soon per-container network firewall
- Add devtainer terminology note clarifying how Dockside devcontainers
  relate to (but predate and differ from) the VS Code devcontainer spec
- Annotate the 2021 video walkthrough so visitors aren't misled by
  the older UI
- Rename case study section, remove corporate boilerplate, add social
  proof framing (high-traffic platform, built entirely in Dockside)
- Remove awkward floating sentence between Features and Benefits

https://claude.ai/code/session_01Cz1yNYuLBuADxd7woZ3vSS
… next steps, hive off advanced launch options, reorder/expand Setup+Usage sections; add runtimes.md

Specific changes:
- Rephrase 'per devcontainer firewall rules' -> 'per Docker custom network' throughout
  (README AI section, Why Dockside table, Roadmap)
- Extend 'Work from anywhere' bullet: browser / VS Code / JetBrains / terminal editor
- Merge standalone 'RunCVM KVM VMs' bullet into the runtimes line; annotate Sysbox,
  gVisor and RunCVM with one-line purpose summaries; link to new runtimes.md
- Quick Start: add steps 4-5 guiding new users to launch a trial devcontainer and
  then configure users/profiles
- Extract Advanced Launch Options (self-signed, self-supplied, GCP, Terraform) to
  docs/advanced-launch-options.md; README now has a single-sentence link
- Reorder doc subsections to: Setup, Usage, CLI, Security, Upgrading
- Expand Setup section: explain config location, auto-reload, and walk through
  Profiles, Users/Roles and SSH keys setup with direct anchor links into setup.md
  and extensions/ssh.md; promote SSH as a first-class feature
- Expand Usage section: introductory sentence + bullet links to Launching, IDE,
  SSH and Sharing/access-control subsections
- Create docs/extensions/runtimes.md: migrates Sysbox content from
  extensions/runtimes/sysbox.md, adds new RunCVM section (KVM VMs, requirements,
  install pointer) and new gVisor section (sandboxing, AI use case, caveats)
- Update all references from extensions/runtimes/sysbox.md -> extensions/runtimes.md
  in README.md and extensions.md

https://claude.ai/code/session_01Cz1yNYuLBuADxd7woZ3vSS
… tweaks

runtimes.md:
- New intro explaining the two distinct runtime use cases: launching devcontainers
  in an alternative runtime vs launching Dockside itself in one; clarifies that
  both modes apply to Sysbox and RunCVM, while gVisor is devcontainer-only
- Sysbox section split into 'Running devcontainers with Sysbox' (Docker-in-Dockside
  devtainers) and 'Running Dockside itself with Sysbox' (self-contained mode);
  table column headers rephrased for clarity
- RunCVM section split into 'Running devcontainers with RunCVM' and 'Running
  Dockside itself with RunCVM'; latter references the 92-dockside-runcvm.json
  example profile and --run-dockerd flag
- gVisor section: 'per-devcontainer' -> 'per-network' firewall wording aligned
  with README change

ssh.md:
- 'Adding SSH keys to a user's profile': replaces empty stub with full
  explanation of both users.json ssh props:
    - authorized_keys: inbound SSH access; Dockside auto-writes to
      ~/.ssh/authorized_keys on every start; profile should mount ~/.ssh as
      tmpfs (as in 10-alpine.json) to give Dockside write access
    - keypairs: outbound SSH for git push/pull to GitHub/GitLab etc.; Dockside
      auto-loads the keypair into the integrated ssh-agent on launch
- 'Adding SSH keys to a devtainer workspace': retitled 'manually'; notes that
  users.json keypairs provisioning supersedes volume-mount approach; removes
  now-redundant volume-mount code example; keeps security notes

README.md:
- Quick Start step 5: unlink 'register...' text; add explicit bold link to
  setup.md alongside the existing Setup section anchor link
- Usage section: split SSH bullet into two — one for inbound SSH access (with
  anchor to integrated-ssh-server-support), one for outbound keypairs/git
  operations (with anchor to adding-ssh-keys-to-a-users-profile)

https://claude.ai/code/session_01Cz1yNYuLBuADxd7woZ3vSS
- `mountIDE` default should be `true`
- `command` example pipes need escaping in markdown
- Add top-level intro explaining the two types of SSH support with
  links to each section (inbound server / outbound agent)
- "Integrated SSH server support" section:
  - Rephrase bullet from "auto-generates authorized_keys" to "manages
    ~/.ssh/authorized_keys, ensuring it is correctly populated..."
  - Add new "Configuring user public keys" subsection containing the
    authorized_keys users.json config and tmpfs profile requirement,
    moved from the old mixed "Adding SSH keys to a user's profile"
    subsection; section is now fully self-contained
  - Tighten Notes: first note now directs to users.json as the fix;
    second note links forward to the ssh-agent section
- "Local SSH agent support and automatic key provision" section:
  - New intro sentence: "Dockside launches and manages an ssh-agent in
    each devcontainer, providing secure SSH key access when using the
    IDE and its integrated terminal."
  - Rephrase subsequent paragraphs to flow from that intro
  - Rename "Adding SSH keys to a user's profile" to "Configuring
    keypairs for outbound SSH"; remove authorized_keys content (now
    in section 1); section is now fully self-contained
  - Rename "Adding SSH keys to a devtainer workspace manually" to
    "Adding SSH keys to a devcontainer manually"; simplify wording

https://claude.ai/code/session_01Cz1yNYuLBuADxd7woZ3vSS
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