Skip to content

Latest commit

 

History

History
357 lines (282 loc) · 15.3 KB

File metadata and controls

357 lines (282 loc) · 15.3 KB

Changelog

All notable changes to deva.sh will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.10.0] - 2026-03-24

Added

  • Claude --chrome integration: auto-mount host Chrome profile Extensions and bridge socket into container
  • DEVA_CHROME_PROFILE_PATH, DEVA_CHROME_USER_DATA_DIR, DEVA_HOST_CHROME_BRIDGE_DIR config knobs
  • build-core and build-rust-image Makefile targets for faster incremental builds
  • scripts/install-agent-tooling.sh shared agent install script for base and rust images
  • Custom images guide (docs/custom-images.md)
  • CI smoke tests for Chrome mount assembly and entrypoint bridge symlink

Fixed

  • Bridge dir resolution now matches Node.js os.tmpdir() order (macOS /var/folders/ before /tmp)
  • image_ref() in installer and deva.sh now handles full image refs with embedded tags and digests
  • Removed dead entrypoint fallback env vars (DEVA_CHROME_HOST_SOCKET_PATH, DEVA_CHROME_HOST_TMPDIR)

Changed

  • Dockerfile split into agent-base (stable) + final (volatile) stages for better layer caching
  • Dockerfile.rust now inherits agent-base and runs its own agent install, making it self-contained
  • Default tool versions pinned in Dockerfiles and Makefile

[0.9.2] - 2026-03-11

Added

  • LICENSE with the standard MIT license text
  • SECURITY.md with private vulnerability reporting guidance
  • CONTRIBUTING.md with the repo workflow, local checks, and release rules
  • docs/ guide set for quick start, internals, philosophy, authentication, advanced usage, and troubleshooting
  • mkdocs.yml, docs/index.md, and GitHub Pages workflow for publishing the docs site at docs.deva.sh
  • scheduled nightly-images.yml workflow that publishes fresh nightly container tags without minting semver releases

Fixed

  • Claude --auth-with api-key now forwards ANTHROPIC_AUTH_TOKEN and ANTHROPIC_BASE_URL
  • Non-default auth no longer moves live host credential files out of the way; it overlays the default credential path with a safe placeholder instead
  • --dry-run no longer mutates config homes through autolink or scaffold writes
  • Copilot --dry-run no longer starts the local proxy as a side effect
  • Config-home fan-out skips loose credential files, backup files, VCS junk, and .DS_Store
  • Auth-specific persistent containers now include the agent in the name suffix, avoiding cross-agent reuse with the wrong env or mounts
  • install.sh now installs the full current agent set, including Gemini and shared_auth.sh
  • install.sh now reuses a prebuilt local image instead of blindly pulling, so CI smoke no longer depends on registry auth
  • release and nightly container workflows now resolve tool versions through the same script, and release no longer invents a local commit inside Actions

Changed

  • Rewrote README.md into a deva.sh front page with a real docs index and sharper OSS positioning
  • CI now builds the MkDocs site so Pages breakage gets caught before merge
  • Updated workflows/RELEASE.md to use deva.sh as the source of truth for version bumps

[0.9.1] - 2026-01-09

Fixed

  • CRITICAL: docker-entrypoint.sh UID/GID remapping broken since commit 5807889 (2025-12-29)
    • Fixed selective find -maxdepth 1 -user root approach that skipped .npm-global, .local, etc.
    • Implemented explicit whitelist approach for container-managed directories
    • Prevents "env: 'claude': Permission denied" errors on container startup
    • See docs/UID-GID-HANDLING-RESEARCH.md for industry patterns analysis
  • GitHub workflows updated for deva rebrand
    • release.yml: Fixed IMAGE_NAME from ccyolo to deva
    • release.yml: Updated to modify deva.sh instead of claude.sh
    • release.yml: Added rust profile build and push
    • ci.yml: Updated tests to use deva.sh instead of claude.sh
    • scripts/version-check.sh: Updated to check deva.sh version
  • install.sh: Updated branding to "deva Multi-Agent Environment"

Added

  • Comprehensive UID/GID handling research document (docs/UID-GID-HANDLING-RESEARCH.md)
    • Industry patterns from VS Code DevContainers, Jupyter, fixuid, and production best practices
    • Comparison matrix of 6 different UID/GID handling approaches
    • Validation that runtime UID fixing is legitimate for dev containers
  • Developer log documenting the UID/GID fix investigation (docs/devlog/20260108-docker-uid-permission-fix.org)
  • docker-entrypoint.sh: Improved execution order (setup_nonroot_user before ensure_agent_binaries)
  • .deva.example - Reference config file demonstrating all supported directives (VOLUME, ENV, PROFILE, etc.)

Changed

  • GitHub release workflow now builds both base and rust profile images
  • Release notes now document both image profiles (base and rust)

[0.9.0] - 2026-01-08

Added

  • tmux bridge: Connect container tmux client to host tmux server via TCP bridge
    • deva-bridge-tmux-host (host-side) and deva-bridge-tmux (container-side)
    • Build tmux 3.6a from source with SHA256 verification
    • Documented as privileged host bridge in AGENTS.md
  • Gemini agent support: Add agents/gemini.sh for Google Gemini CLI
  • Docker-in-Docker auto-mount: /var/run/docker.sock auto-mounted with --no-docker opt-out
  • Version management: scripts/version-upgrade.sh and scripts/release-utils.sh
  • Build resilience: Use gh api instead of curl to avoid GitHub rate limits

Fixed

  • docker-entrypoint.sh: usermod error handling for mounted volumes (no longer fatal under set -e)
  • Dockerfile: explicit chmod 755 for script permissions (fixes execute-only bug)

Changed

  • Environment variables for tmux bridge use DEVA_BRIDGE_* prefix

[0.7.0] - 2025-09-18 - BREAKING: MAJOR REBRAND & REFACTOR

Claude Code YOLO → deva.sh Multi-Agent Wrapper

This release transforms claude-code-yolo from a Claude-specific wrapper into deva.sh - a unified multi-agent wrapper supporting Claude Code, OpenAI Codex, and future coding agents.

Added

  • Multi-Agent Architecture: Pluggable agent system with agents/claude.sh and agents/codex.sh modules
  • Unified Dispatcher: deva.sh as the main entry point with agent selection via first argument (deva.sh codex)
  • Project-Scoped Container Management:
    • deva.sh --ps lists all deva containers for current project
    • deva.sh --inspect / deva.sh shell with fzf picker for multi-container attach
    • Container naming: deva-<agent>-<project>-<pid>
  • Enhanced Config System:
    • --config-home / -H mounts entire auth directories (.claude, .codex) into /home/deva
    • New .deva / .deva.local config files with legacy .claude-yolo* support
    • CONFIG_HOME environment propagation to agents
  • Agent-Specific Safety: Auto-injection of safety flags (--dangerously-skip-permissions for Claude, --dangerously-bypass-approvals-and-sandbox for Codex)
  • Codex OAuth Protection: Strips conflicting OPENAI_* env vars when .codex/auth.json is mounted

Changed

  • BREAKING: deva.sh replaces claude.sh as the primary interface
  • BREAKING: Docker image changed to ghcr.io/thevibeworks/deva (was ghcr.io/thevibeworks/ccyolo)
  • BREAKING: Container user path changed from /root to /home/deva
  • Backward Compatibility: claude-yolodeva.sh claude shim maintained
  • Deprecation Warnings: claude.sh and claudeb.sh now warn before forwarding to deva.sh

Migration Guide

# Old workflow
claude.sh --yolo -v ~/.ssh:/root/.ssh:ro

# New workflow
deva.sh claude -v ~/.ssh:/home/deva/.ssh:ro

# Or use the shim (warns but works)
claude-yolo -v ~/.ssh:/home/deva/.ssh:ro

This release implements the complete vision from #98 - a Docker-first multi-agent wrapper that preserves YOLO ergonomics while enabling polyglot AI toolchains.

[0.6.0] - 2025-09-16

Added

  • GitHub Copilot authentication mode (--auth-with copilot / --copilot) with automatic proxy launch in local and YOLO runs.
  • Model auto-discovery from the Copilot proxy, with clear logging when defaults are injected.

[0.5.1] - 2025-08-28

Changed

  • Updated Claude Code base version to 1.0.95 with new features:
    • /todos command to list current todo items
    • /memory command now allows direct editing of imported memory files
    • Individual slash command arguments ($1, $2, $3) like shell scripts
    • argument-hint frontmatter for slash commands (e.g., [pr-number] [priority] [assignee])
    • MCP output warnings when responses exceed token limits (10k warning, 25k max)
    • Configurable MCP output limit via MAX_MCP_OUTPUT_TOKENS environment variable
    • Vertex AI support for global endpoints
    • SDK: Add custom tools as callbacks

[0.5.0] - 2025-08-27

Added

  • Project-specific config file support (.claude-yolo in project root)
  • OAuth token authentication method (--oat, experimental)
  • Full configuration reference file (.claude-yolo.full)
  • Environment variable expansion support (${VAR:-default})
  • Sensitive environment variable masking (API keys, tokens, secrets)
  • --host-net option for Docker networking
  • Configuration display in startup output

Changed

  • Updated Claude Code base version to 1.0.93
  • Unified model aliasing system across all authentication methods
  • Improved environment and volume parsing
  • Enhanced security with controlled mounts and permissions
  • Simplified example config file
  • Streamlined release workflow through claude-yolo

Fixed

  • Critical security issues with config file handling
  • Environment variable display formatting
  • Volume mount permissions and validation

Security

  • Mask sensitive values in environment variable output
  • Enhanced config file validation and security checks

[0.4.3] - 2025-07-21

Changed

  • Updated Claude Code base version to 1.0.54 with latest features:
    • Hooks: UserPromptSubmit hook, PreCompact hook
    • Custom slash commands: argument-hint frontmatter, restored namespacing
    • Shell: In-memory snapshots for better file operation reliability
    • Search (Grep) tool redesigned with enhanced parameters
    • MCP: server instructions support, enhanced tool result display
    • @-mention file truncation increased from 100 to 2000 lines
    • New /export command for conversation sharing
    • /doctor command for settings file validation
    • Progress messages for Bash tool based on command output
    • --append-system-prompt now works in interactive mode
    • Vim mode navigation improvements (c, f/F, t/T commands)
    • Fixed config file corruption with atomic writes

[0.4.2] - 2025-07-10

Changed

  • Migrate repository from lroolle to thevibeworks org

[0.4.1] - 2025-07-08

Changed

  • Expand ~ to $HOME in release command for Docker compatibility
  • Make Claude cmd configurable in release workflow
  • Update Claude version to 1.0.44 and improve release flow

[0.4.0] - 2025-07-08

Added

  • Unified --auth-with pattern for authentication method selection
  • Environment variable pass-through with -e flag support
  • Custom config directory support
  • Controlled mount security with proper read-only handling

Changed

  • Complete auth system refactor with proper model handling
  • Docker architecture: moved to /home/claude for better permissions
  • Environment variable standardization: CLAUDE_YOLO_*CCYOLO_*
  • Streamlined docker-entrypoint.sh with improved error handling

Fixed

  • Docker permission issues with auth file handling
  • Security improvements with controlled mounts

[0.3.0] - 2025-07-02

Changed

  • Streamlined Docker image build process
  • Updated npm global installation path
  • Enhanced CI pipeline with release workflow and version check
  • Improved container registry configuration

[0.2.6] - 2025-06-24

Fixed

  • Makefile registry inconsistency with ghcr.io default image

[0.2.5] - 2025-06-25

Changed

  • Add note on CLAUDE_CONFIG_DIR and fix gcloud config symlink in entrypoint

[0.2.4] - 2025-06-23

Added

  • Unified logging system for improved UX
  • Clean output by default showing only authentication method
  • Verbose mode displays model selection, proxy configuration, and debug info

Fixed

  • Argument parsing infinite loop in claude-yolo for --inspect and --ps options
  • Duplicate argument handling causing inconsistent behavior with mixed options
  • claude-trace --run-with syntax (removed unnecessary "claude" argument)
  • Container shortcuts now properly exit after --ps command

Changed

  • Consolidated all claude-yolo argument parsing through single parse_args() function
  • Enhanced claude-trace argument injection for proper --dangerously-skip-permissions placement
  • Improved logging organization
  • Updated documentation with logging capabilities and examples

Performance

  • Docker build caching in GitHub Actions (dual GHA + registry cache strategy)

[0.2.3] - 2025-06-23

Added

  • Dynamic fallback UID/GID selection for root users

Fixed

  • Handle UID 0 (root user) case in docker-entrypoint.sh
  • Add explicit github_token to claude-code-review action
  • Handle UID=0 and GID=0 independently for security

Changed

  • Simplify root user handling with hardcoded 1000 fallback
  • Remove redundant comments in UID/GID handling
  • Run Claude review once per PR and on manual trigger

Performance

  • Docker build caching improvements in GitHub Actions

Documentation

  • Update logs and changelog for issue #19 caching fix
  • Clarify root cause and solution for UID 0 handling
  • Add OIDC token fix to dev log

[0.2.2] - 2025-06-23

Added

  • Docker image update to ghcr.io with fallback to Docker Hub
  • Note when falling back to Docker Hub image in installer

Fixed

  • Set shellcheck to error severity to prevent CI blocking

Documentation

  • Improve usage examples across all documentation

[0.2.1] - 2025-06-23

Fixed

  • Move shellcheck to CI workflow, remove from release

[0.2.0] - 2025-06-23

Added

  • --verbose flag to show environment info and pass to Docker

[0.1.0] - 2025-06-21

Added

  • Initial release of Claude Code YOLO Docker wrapper
  • Dual-mode architecture: Local mode (default) and YOLO mode (Docker)
  • Support for 4 authentication methods:
    • Claude App OAuth (--claude, -c)
    • Anthropic API Key (--api-key, -a)
    • AWS Bedrock (--bedrock, -b)
    • Google Vertex AI (--vertex, -v)
  • Full development environment in Docker image:
    • Ubuntu 24.04 base
    • Python 3.12, Node.js 22, Go 1.22, Rust
    • Development tools: git, docker, aws, jq, ripgrep, fzf
    • Claude CLI and claude-trace pre-installed
  • Automatic --dangerously-skip-permissions in YOLO mode
  • Non-root user support with UID/GID mapping
  • Authentication file mounting and permission handling
  • Proxy support with automatic localhost translation
  • Model alias system for easy model selection
  • Docker socket mounting option (disabled by default)
  • Shell access to container (--shell)
  • Request tracing support (--trace)
  • Dangerous directory detection with user confirmation prompt
  • Quick install script for one-line setup
  • Standalone claude-yolo script for convenient access
  • Prefixed logging with [claude.sh] for better identification
  • Updated documentation with claude-trace integration details

Security

  • Container isolation for safe execution
  • Directory access limited to current working directory
  • Non-root execution inside container
  • Docker socket mounting disabled by default
  • Warning system for dangerous directories (home, system directories)