diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 01d42648..a337ddd5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -73,10 +73,12 @@ jobs: cache-from: type=gha,scope=${{ matrix.arch }} cache-to: type=gha,mode=max,scope=${{ matrix.arch }} provenance: false + # TODO: make GUI a separate image build-args: | USER_NAME=devuser USER_UID=1000 USER_GID=1000 + DEVCELL_GUI_ENABLED=true manifest: name: Create Multi-Arch Manifest @@ -105,10 +107,9 @@ jobs: - name: Create and push multi-arch manifest run: | - IMAGE="${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}" - echo '${{ steps.meta.outputs.tags }}' | while read -r TAG; do [ -z "$TAG" ] && continue + IMAGE="${TAG%:*}" TAG_NAME="${TAG##*:}" echo "Creating manifest for ${TAG}" diff --git a/Dockerfile b/Dockerfile index 57f4e340..ea365ee5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -98,10 +98,6 @@ ENV TINI_VERSION=v0.19.0 ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini-arm64 /tini RUN chmod +x /tini -# Configure Playwright to use system Chromium -ENV PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 -ENV PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=/usr/bin/chromium -ENV PLAYWRIGHT_BROWSERS_PATH=0 # Create non-root user matching host user (uid 501, gid 20) # This ensures proper file permissions when mounting volumes from macOS diff --git a/Taskfile.yml b/Taskfile.yml index 6b353e11..a1a74f48 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -55,29 +55,6 @@ env: # flatten: true tasks: - devcell:claude-json:backup: - desc: Backup .claude.json with timestamp, keep last 5 - internal: true - cmds: - - mkdir -p "{{.CELL_HOME}}" - - touch "{{.CELL_HOME}}/.claude.json" - - | - BACKUP_FILE="{{.CELL_HOME}}/.claude.json-devcell-$(date +%Y-%m-%dT%H-%M-%S)-backup" - cp "{{.CELL_HOME}}/.claude.json" "$BACKUP_FILE" 2>/dev/null || true - ls -t "{{.CELL_HOME}}"/.claude.json-devcell-*-backup 2>/dev/null | tail -n +6 | xargs rm -f 2>/dev/null || true - - devcell:claude-json:restore: - desc: Restore .claude.json from latest backup - cmds: - - | - LATEST=$(ls -t "{{.CELL_HOME}}"/.claude.json-devcell-*-backup 2>/dev/null | head -1) - if [ -n "$LATEST" ]; then - cp "$LATEST" "{{.CELL_HOME}}/.claude.json" - echo "Restored from: $LATEST" - else - echo "No backup found in {{.CELL_HOME}}" - exit 1 - fi claude: desc: Run Claude CLI in the dev container @@ -269,3 +246,31 @@ tasks: echo "Use with: MACOS_BOX=$BOX_NAME task macos:claude" echo "" vagrant box list + + + ######################################################################################################################## + devcell:claude-json:backup: + desc: Backup .claude.json with timestamp, keep last 5 + silent: true + internal: true + cmds: + - mkdir -p "{{.CELL_HOME}}" + - touch "{{.CELL_HOME}}/.claude.json" + - | + BACKUP_FILE="{{.CELL_HOME}}/.claude.json-devcell-$(date +%Y-%m-%dT%H-%M-%S)-backup" + cp "{{.CELL_HOME}}/.claude.json" "$BACKUP_FILE" 2>/dev/null || true + ls -t "{{.CELL_HOME}}"/.claude.json-devcell-*-backup 2>/dev/null | tail -n +6 | xargs rm -f 2>/dev/null || true + + devcell:claude-json:restore: + desc: Restore .claude.json from latest backup + silent: true + cmds: + - | + LATEST=$(ls -t "{{.CELL_HOME}}"/.claude.json-devcell-*-backup 2>/dev/null | head -1) + if [ -n "$LATEST" ]; then + cp "$LATEST" "{{.CELL_HOME}}/.claude.json" + echo "Restored from: $LATEST" + else + echo "No backup found in {{.CELL_HOME}}" + exit 1 + fi