refactor: make devcontainers the default container mode#53
Merged
Conversation
Current behavior: Three container image variants were published: base, systemd (with init system), and dind (with Docker-in-Docker). The systemd and dind variants added complexity to CI/CD, release management, and documentation. New behavior: Only the base image variant is published. Removed: - images/systemd/ and images/dind/ directories - CI workflow matrix entries for systemd/dind - Release-please configuration for systemd/dind components - Docker Bake targets for systemd/dind - Documentation references to systemd/dind variants 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Current behavior: Base container images were the default, with devcontainer support as an optional add-on. The --base flag and default.base_image config were the primary way to specify container environments. New behavior: Devcontainers are now the primary and default method. When running hjk run: 1. If --image is specified, use that image (bypasses devcontainer) 2. If devcontainer.json exists, use devcontainer mode automatically 3. If default.base_image is configured, use that as fallback 4. Otherwise, error with guidance on configuration options Key changes: - Rename --base flag to --image (clearer semantics) - Make default.base_image optional (defaults to empty) - Add warning when devcontainer CLI is not found - Error when no devcontainer.json and no image configured - Remove hjk recreate command (use hjk rm + hjk run instead) - Update all documentation to reflect devcontainer-first approach 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
headjack | 5d315b9 | Commit Preview URL Branch Preview URL |
Jan 05 2026, 01:11 AM |
Current behavior: Integration tests included a test for the hjk recreate command. New behavior: The recreate command test is removed since the command was deleted. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
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
This PR makes devcontainers the primary and default method for running Headjack instances, with base container images as a fallback option.
Key Changes
--baseto--image: Clearer semantics that this bypasses devcontainer detectiondefault.base_imageoptional: Defaults to empty instead of the base imagehjk recreatecommand: Users should usehjk rm+hjk runinsteadNew Behavior
When running
hjk run:--imageis specified, use that image (bypasses devcontainer)devcontainer.jsonexists in the repo, use devcontainer mode automaticallydefault.base_imageis configured, use that as fallbackBreaking Changes
--baseflag renamed to--imagehjk recreatecommand removed (usehjk rm && hjk runinstead)default.base_imagenow defaults to empty (previously defaulted toghcr.io/gilmanlab/headjack:base)Test plan
just checkpasses (fmt, lint, test)--imageflag🤖 Generated with Claude Code