diff --git a/Dockerfile b/Dockerfile index 337f828..9c68f0c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -35,7 +35,25 @@ RUN wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | gpg --dearm # Chrome wrapper: adds flags required for running inside a Docker container. # xdg-open (used by Claude Code on Linux) respects $BROWSER, so pointing it # here ensures the OAuth popup works without manual --no-sandbox invocations. -RUN printf '#!/bin/bash\nexec /usr/bin/google-chrome-stable \\\n --no-sandbox \\\n --disable-dev-shm-usage \\\n --disable-gpu \\\n "$@"\n' > /usr/local/bin/google-chrome && \ +# Cleans up crash lock files and suppresses the crash-restore bubble so that +# sessions/cookies survive unclean pod shutdowns (SIGKILL). +RUN printf '#!/bin/bash\n\ +CHROME_DIR="/config/userdata/.config/google-chrome"\n\ +mkdir -p "$CHROME_DIR"\n\ +# Remove stale lock files left by unclean container shutdown\n\ +rm -f "$CHROME_DIR/SingletonLock" "$CHROME_DIR/SingletonSocket" "$CHROME_DIR/SingletonCookie"\n\ +# Mark the previous session as clean so Chrome does not clear cookies\n\ +PREFS="$CHROME_DIR/Default/Preferences"\n\ +if [ -f "$PREFS" ]; then\n\ + sed -i '\''s/"exit_type":"Crashed"/"exit_type":"Normal"/g; s/"exited_cleanly":false/"exited_cleanly":true/g'\'' "$PREFS"\n\ +fi\n\ +exec /usr/bin/google-chrome-stable \\\n\ + --no-sandbox \\\n\ + --disable-dev-shm-usage \\\n\ + --disable-gpu \\\n\ + --disable-session-crashed-bubble \\\n\ + --user-data-dir="$CHROME_DIR" \\\n\ + "$@"\n' > /usr/local/bin/google-chrome && \ chmod +x /usr/local/bin/google-chrome # Install Node.js (LTS version for Happy Coder) @@ -93,7 +111,7 @@ COPY --chmod=755 scripts/cont-init-sshd.sh /etc/cont-init.d/25-start-sshd.sh WORKDIR /workspace # Configure container to run as user user -ENV HOME=/home/user \ +ENV HOME=/config/userdata \ USER=user \ BROWSER=/usr/local/bin/google-chrome diff --git a/chart/Chart.yaml b/chart/Chart.yaml index aee1716..f362211 100644 --- a/chart/Chart.yaml +++ b/chart/Chart.yaml @@ -2,5 +2,5 @@ apiVersion: v2 name: devcontainer description: Antigravity Dev Container with Happy Coder AI assistant type: application -version: 0.1.12 +version: 0.1.13 appVersion: "latest" diff --git a/chart/templates/deployment.yaml b/chart/templates/deployment.yaml index 20b8cb4..96adbb3 100644 --- a/chart/templates/deployment.yaml +++ b/chart/templates/deployment.yaml @@ -68,7 +68,7 @@ spec: {{- toYaml .Values.resources | nindent 12 }} volumeMounts: - name: userhome - mountPath: /home + mountPath: /config - name: workspace mountPath: /workspace - name: shm diff --git a/chart/values.yaml b/chart/values.yaml index d5aefa6..565f7e7 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -23,7 +23,7 @@ ssh: false # Happy Coder endpoints happyServerUrl: "https://happy.farh.net" happyWebappUrl: "https://happy-coder.farh.net" -happyHomeDir: "/home/user/.happy" +happyHomeDir: "/config/userdata/.happy" happyExperimental: "true" # VNC display diff --git a/scripts/cont-init-sshd.sh b/scripts/cont-init-sshd.sh index 62d77d0..b61fd78 100644 --- a/scripts/cont-init-sshd.sh +++ b/scripts/cont-init-sshd.sh @@ -5,7 +5,7 @@ echo "=== SSH enabled: starting sshd ===" -HOME_DIR="/home/user" +HOME_DIR="/config/userdata" HOST_KEY_STORE="$HOME_DIR/.ssh/host_keys" # Persist host keys on the home PVC so clients don't see a "host key diff --git a/scripts/cont-init-user.sh b/scripts/cont-init-user.sh index 3f756d0..0963b1d 100644 --- a/scripts/cont-init-user.sh +++ b/scripts/cont-init-user.sh @@ -3,4 +3,4 @@ # baseimage-gui sets shell=/sbin/nologin and home=/dev/null, which # prevents VSCode from opening terminals. usermod -s /bin/bash app -usermod -d /home/user app +usermod -d /config/userdata app diff --git a/scripts/init-repo.sh b/scripts/init-repo.sh index 46b1313..7347e83 100644 --- a/scripts/init-repo.sh +++ b/scripts/init-repo.sh @@ -25,8 +25,8 @@ else # Configure git to use token if provided if [ -n "$GITHUB_TOKEN" ]; then git config credential.helper store - echo "https://oauth2:${GITHUB_TOKEN}@github.com" > /home/.git-credentials - chmod 600 /home/.git-credentials + echo "https://oauth2:${GITHUB_TOKEN}@github.com" > /config/userdata/.git-credentials + chmod 600 /config/userdata/.git-credentials fi git pull || echo "Pull failed, continuing anyway..." @@ -42,8 +42,8 @@ else # Configure credentials for future use git config --global credential.helper store - echo "https://oauth2:${GITHUB_TOKEN}@github.com" > /home/.git-credentials - chmod 600 /home/.git-credentials + echo "https://oauth2:${GITHUB_TOKEN}@github.com" > /config/userdata/.git-credentials + chmod 600 /config/userdata/.git-credentials else git clone "$GITHUB_REPO" "$WORKSPACE_DIR" fi