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
5 changes: 3 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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}"
Expand Down
4 changes: 0 additions & 4 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
51 changes: 28 additions & 23 deletions Taskfile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Loading