Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -502,7 +502,6 @@ jobs:
uses: ./.github/actions/setup-env
with:
sync-dependencies: 'true'
install-just: 'false'

- name: Set release date in CHANGELOG
if: needs.validate.outputs.release_kind == 'final'
Expand Down
5 changes: 4 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.3.2] - 2026-04-07
## [0.3.2] - TBD

### Added

Expand Down Expand Up @@ -80,6 +80,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Omitting secrets (e.g. forks) keeps prior anonymous-pull behavior
- **Release finalize commit blocked by Release protection ruleset** ([#487](https://github.com/vig-os/devcontainer/issues/487))
- Generate a dedicated Commit App token (`COMMIT_APP_ID`) for the `commit-action` step in the `finalize` job of `release.yml`, matching the pattern used by `prepare-release.yml` and other workflows; the previous Release App token lacked ruleset bypass
- **Release finalize installs just for doc generation** ([#494](https://github.com/vig-os/devcontainer/issues/494))
- Remove `install-just: 'false'` from the finalize job `setup-env` step so `docs/generate.py` can run `just --list`
- `get_just_help()` exits non-zero on failure instead of writing placeholder content into generated docs

### Security

Expand Down
65 changes: 64 additions & 1 deletion CONTRIBUTE.md
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,70 @@ When contributing to this project, follow this workflow:
## Just Recipes

```text
<!-- Run 'just --list' to see available recipes -->
Available recipes:
[build]
build no_cache="" # Build local development image
clean version="dev" # Remove image (default: dev)
clean-test-containers # Clean up lingering test containers

[git]
branch # Show current branch + list recent branches
log # Pretty one-line git log (last 20 commits)

[github]
gh-issues # List open issues and PRs grouped by milestone [alias: gh-i]

[info]
default # Show available commands (default)
docs # Generate documentation from templates
help # Show available commands
info # Show image information
init *args # Install system dependencies and setup development environment
login # Test login to GHCR
sync-workspace # Sync workspace templates from repo root to assets/workspace/

[podman]
podman-kill name # Stop and remove a container by name or ID [alias: pdm-kill]
podman-kill-all # Stop and remove all containers (with confirmation) [alias: pdm-kill-all]
podman-kill-project # Stop and remove project-related containers [alias: pdm-kill-project]
podman-prune # Prune unused containers, images, networks, and volumes [alias: pdm-prune]
podman-prune-all # Full cleanup: prune including volumes [alias: pdm-prune-all]
podman-ps *args # List containers/images (--all for all podman resources) [alias: pdm-ps]
podman-rmi image # Remove an image by name, tag, or ID [alias: pdm-rmi]
podman-rmi-all # Remove all images (with confirmation) [alias: pdm-rmi-all]
podman-rmi-dangling # Remove dangling images (untagged) [alias: pdm-rmi-dangling]
podman-rmi-project # Remove project-related images [alias: pdm-rmi-project]

[quality]
format # Format code
lint # Run all linters
precommit # Run pre-commit hooks on all files

[release]
finalize-release version ref="" *flags # Finalize and publish release via GitHub Actions workflow (step 3, after testing)
prepare-release version ref="" *flags # Prepare release branch for testing (step 1)
promote-release version ref="" *flags # Promote final release: GHCR :latest, publish draft GitHub Release, merge release PR (after downstream smoke-test final release)
publish-candidate version ref="" *flags # Publish release candidate via GitHub Actions workflow
pull version="latest" # Pull image from registry (default: latest)
reset-changelog # Reset CHANGELOG Unreleased section (after merging release to dev)

[test]
test version="dev" # Run all test suites
test-bats # Run BATS shell script tests
test-image version="dev" # Run image tests only
test-install # Run install script tests only
test-integration version="dev" # Run integration tests only
test-utils # Run utils tests only
test-validate-commit-msg # Run validate commit msg tests only
test-vig-utils # Run check action pins tests only

[worktree]
worktree-attach issue # before attaching. See tests/bats/worktree.bats for integration tests. [alias: wt-attach]
worktree-clean mode="" # Default (no args): clean only stopped worktrees. Use 'all' to clean everything. [alias: wt-clean]
worktree-list # List active worktrees and their tmux sessions [alias: wt-list]
worktree-start issue prompt="" reviewer="" # Create a worktree for an issue, open tmux session, launch cursor-agent [alias: wt-start]
worktree-stop issue # Stop a worktree's tmux session and remove the worktree [alias: wt-stop]

```

## Release Workflow
Expand Down
67 changes: 65 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,70 @@ After installation, open the project in VS Code. It will detect `.devcontainer/d
## Available Commands

```text
<!-- Run 'just --list' to see available recipes -->
Available recipes:
[build]
build no_cache="" # Build local development image
clean version="dev" # Remove image (default: dev)
clean-test-containers # Clean up lingering test containers

[git]
branch # Show current branch + list recent branches
log # Pretty one-line git log (last 20 commits)

[github]
gh-issues # List open issues and PRs grouped by milestone [alias: gh-i]

[info]
default # Show available commands (default)
docs # Generate documentation from templates
help # Show available commands
info # Show image information
init *args # Install system dependencies and setup development environment
login # Test login to GHCR
sync-workspace # Sync workspace templates from repo root to assets/workspace/

[podman]
podman-kill name # Stop and remove a container by name or ID [alias: pdm-kill]
podman-kill-all # Stop and remove all containers (with confirmation) [alias: pdm-kill-all]
podman-kill-project # Stop and remove project-related containers [alias: pdm-kill-project]
podman-prune # Prune unused containers, images, networks, and volumes [alias: pdm-prune]
podman-prune-all # Full cleanup: prune including volumes [alias: pdm-prune-all]
podman-ps *args # List containers/images (--all for all podman resources) [alias: pdm-ps]
podman-rmi image # Remove an image by name, tag, or ID [alias: pdm-rmi]
podman-rmi-all # Remove all images (with confirmation) [alias: pdm-rmi-all]
podman-rmi-dangling # Remove dangling images (untagged) [alias: pdm-rmi-dangling]
podman-rmi-project # Remove project-related images [alias: pdm-rmi-project]

[quality]
format # Format code
lint # Run all linters
precommit # Run pre-commit hooks on all files

[release]
finalize-release version ref="" *flags # Finalize and publish release via GitHub Actions workflow (step 3, after testing)
prepare-release version ref="" *flags # Prepare release branch for testing (step 1)
promote-release version ref="" *flags # Promote final release: GHCR :latest, publish draft GitHub Release, merge release PR (after downstream smoke-test final release)
publish-candidate version ref="" *flags # Publish release candidate via GitHub Actions workflow
pull version="latest" # Pull image from registry (default: latest)
reset-changelog # Reset CHANGELOG Unreleased section (after merging release to dev)

[test]
test version="dev" # Run all test suites
test-bats # Run BATS shell script tests
test-image version="dev" # Run image tests only
test-install # Run install script tests only
test-integration version="dev" # Run integration tests only
test-utils # Run utils tests only
test-validate-commit-msg # Run validate commit msg tests only
test-vig-utils # Run check action pins tests only

[worktree]
worktree-attach issue # before attaching. See tests/bats/worktree.bats for integration tests. [alias: wt-attach]
worktree-clean mode="" # Default (no args): clean only stopped worktrees. Use 'all' to clean everything. [alias: wt-clean]
worktree-list # List active worktrees and their tmux sessions [alias: wt-list]
worktree-start issue prompt="" reviewer="" # Create a worktree for an issue, open tmux session, launch cursor-agent [alias: wt-start]
worktree-stop issue # Stop a worktree's tmux session and remove the worktree [alias: wt-stop]

```

For detailed command descriptions, run `just --list --unsorted` or `just --help`.
Expand All @@ -119,7 +182,7 @@ For detailed command descriptions, run `just --list --unsorted` or `just --help`
- **Registry**: `ghcr.io/vig-os/devcontainer`
- **Architecture**: Multi-platform support (AMD64, ARM64)
- **License**: Apache
- **Latest Version**: [0.3.2](https://github.com/vig-os/devcontainer/releases/tag/0.3.2) - 2026-04-07
- **Latest Version**: [0.3.1](https://github.com/vig-os/devcontainer/releases/tag/0.3.1) - 2026-03-26
- **Image tags**: bare semver (`0.2.1`, `latest`) — git tags use `v` prefix (`v0.2.1`) but image tags do not

## Features
Expand Down
5 changes: 4 additions & 1 deletion assets/workspace/.devcontainer/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.3.2] - 2026-04-07
## [0.3.2] - TBD

### Added

Expand Down Expand Up @@ -80,6 +80,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Omitting secrets (e.g. forks) keeps prior anonymous-pull behavior
- **Release finalize commit blocked by Release protection ruleset** ([#487](https://github.com/vig-os/devcontainer/issues/487))
- Generate a dedicated Commit App token (`COMMIT_APP_ID`) for the `commit-action` step in the `finalize` job of `release.yml`, matching the pattern used by `prepare-release.yml` and other workflows; the previous Release App token lacked ruleset bypass
- **Release finalize installs just for doc generation** ([#494](https://github.com/vig-os/devcontainer/issues/494))
- Remove `install-just: 'false'` from the finalize job `setup-env` step so `docs/generate.py` can run `just --list`
- `get_just_help()` exits non-zero on failure instead of writing placeholder content into generated docs

### Security

Expand Down
4 changes: 2 additions & 2 deletions docs/generate.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ def get_just_help() -> str:
)
return result.stdout
except (subprocess.CalledProcessError, FileNotFoundError) as e:
print(f"Warning: Could not get just help: {e}", file=sys.stderr)
return "<!-- Run 'just --list' to see available recipes -->"
print(f"Error: Could not get just help: {e}", file=sys.stderr)
sys.exit(1)


def get_version_from_changelog() -> str:
Expand Down
122 changes: 0 additions & 122 deletions docs/issues/issue-487.md

This file was deleted.

Loading
Loading