diff --git a/.github/workflows/onpr_check-pr.yaml b/.github/workflows/onpr_check-pr.yaml index 07509f023f..d13d231b36 100644 --- a/.github/workflows/onpr_check-pr.yaml +++ b/.github/workflows/onpr_check-pr.yaml @@ -35,6 +35,7 @@ jobs: git fetch origin "${{ github.event.before }}" || true changed_changelog_files=$(git diff --name-only "${{ github.event.before }}" "${{ github.sha }}" | grep -iE '^([^/]+/)?changelog\.(md|txt|ya?ml|json)$' || true) echo "$changed_changelog_files" + echo "changelogs_files=$changed_changelog_files" >> "$GITHUB_OUTPUT" changed_config_files=$(git diff --name-only "${{ github.event.before }}" "${{ github.sha }}" | grep -E '^[^/]+/config\.(json|ya?ml)$' || true) echo "$changed_config_files" all_changed_files=$(echo -e "$changed_config_files\n$changed_changelog_files" | sort -u) @@ -208,6 +209,7 @@ jobs: uses: docker/build-push-action@v7 with: context: ${{ matrix.addon }} + platforms: linux/arm64 push: false load: true file: ${{ matrix.addon }}/Dockerfile diff --git a/.github/workflows/pr2841-diagnostic.yml b/.github/workflows/pr2841-diagnostic.yml deleted file mode 100644 index 09e056e41f..0000000000 --- a/.github/workflows/pr2841-diagnostic.yml +++ /dev/null @@ -1,51 +0,0 @@ ---- -name: Claude Add-on Build Diagnostic - -on: - pull_request: - branches: - - master - -jobs: - diagnose: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v7 - - - name: Gather add-on information - id: information - uses: frenck/action-addon-information@v1.4 - with: - path: ./claude_desktop/ - - - name: Set up QEMU - uses: docker/setup-qemu-action@v4 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v4 - - - name: Build aarch64 and capture tail - shell: bash - run: | - set +e - BUILD_FROM="$(jq -r '.build_from.aarch64 // empty' '${{ steps.information.outputs.build }}')" - docker buildx build \ - --platform linux/arm64 \ - --progress=plain \ - --build-arg "BUILD_FROM=${BUILD_FROM}" \ - --file claude_desktop/Dockerfile \ - claude_desktop >build.log 2>&1 - status=$? - tail -n 300 build.log >build-tail.log - printf 'build_status=%s\n' "$status" >build-status.txt - exit 0 - - - name: Upload diagnostic log - uses: actions/upload-artifact@v4 - with: - name: claude-aarch64-build-log - path: | - build-tail.log - build-status.txt - retention-days: 1 diff --git a/claude_desktop/CHANGELOG.md b/claude_desktop/CHANGELOG.md index 3935c131cb..857efc3a0e 100644 --- a/claude_desktop/CHANGELOG.md +++ b/claude_desktop/CHANGELOG.md @@ -1,4 +1,10 @@ - +## 1.14 (10-07-2026) + +- Build pinned RTK 0.43.0 source on Debian Bookworm for both architectures instead of installing the upstream arm64 release binary, which requires GLIBC 2.39 and cannot run in the add-on image. +- Execute `rtk --version` inside the final image during the Docker build so future ABI incompatibilities fail CI instead of surfacing at runtime. +- Validate the final Bookworm-built RTK binary in a native aarch64 image build. +- Correct the repository PR checks so changed changelog paths are exported and aarch64 images are built explicitly for `linux/arm64`. + ## debiantrixie-version-c55d3809 (2026-07-11) - Update to latest version from linuxserver/docker-baseimage-selkies (changelog : https://github.com/linuxserver/docker-baseimage-selkies/releases) ## 1.13 (10-07-2026) diff --git a/claude_desktop/Dockerfile b/claude_desktop/Dockerfile index 27f0d0c82e..25efd5dc8f 100644 --- a/claude_desktop/Dockerfile +++ b/claude_desktop/Dockerfile @@ -9,6 +9,22 @@ ARG BUILD_FROM ARG BUILD_VERSION +ARG RTK_VERSION="v0.43.0" +ARG RTK_COMMIT="5a7880d404db8364d602f2ecdc41dd790f64013f" + +# The upstream aarch64 release is cross-built on ubuntu-latest and requires +# GLIBC 2.39. Build the pinned source on Bookworm instead so it is compatible +# with the add-on runtime on both supported architectures. +FROM rust:1.91-bookworm AS rtk-builder +ARG RTK_VERSION +ARG RTK_COMMIT +RUN git clone --depth 1 --branch "${RTK_VERSION}" https://github.com/rtk-ai/rtk.git /src/rtk && \ + test "$(git -C /src/rtk rev-parse HEAD)" = "${RTK_COMMIT}" && \ + cd /src/rtk && \ + cargo build --release --locked && \ + install -D -m 0755 target/release/rtk /out/rtk && \ + /out/rtk --version + FROM ${BUILD_FROM} ################## @@ -89,15 +105,15 @@ RUN set -eux; \ chmod 0755 /usr/local/bin/ttyd; \ /usr/local/bin/ttyd --version +# Copy the pinned Bookworm-built RTK binary and execute it in the final image. +# This makes an ABI mismatch fail the image build instead of surfacing at runtime. +COPY --from=rtk-builder /out/rtk /usr/local/bin/rtk +RUN /usr/local/bin/rtk --version + # Install only the Headroom proxy, code-compression, and MCP features used by this add-on. RUN apt-get update && \ apt-get install -y --no-install-recommends nodejs && \ pip3 install --break-system-packages "headroom-ai[proxy,code,mcp]" && \ - curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh -o /tmp/rtk-install.sh && \ - HOME=/root sh /tmp/rtk-install.sh && \ - rm /tmp/rtk-install.sh && \ - if [ -x /root/.local/bin/rtk ] && [ ! -x /usr/local/bin/rtk ]; then mv /root/.local/bin/rtk /usr/local/bin/rtk; fi && \ - if [ -x /usr/local/bin/rtk ]; then chmod +x /usr/local/bin/rtk; else echo "rtk binary was not installed on PATH"; exit 1; fi && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* /root/.cache diff --git a/claude_desktop/config.yaml b/claude_desktop/config.yaml index 3071d0b960..0d8afc6c8d 100644 --- a/claude_desktop/config.yaml +++ b/claude_desktop/config.yaml @@ -2,7 +2,7 @@ arch: - aarch64 - amd64 audio: true -description: Claude Desktop with a persistent Claude Code web terminal in one add-on +description: Claude Desktop and a persistent Claude Code web terminal devices: - /dev/dri - /dev/dri/card0 @@ -62,7 +62,7 @@ ports: 8787/tcp: 8787 ports_description: 3001/tcp: Claude Desktop web interface - 7681/tcp: HTTP Basic-auth Claude Code terminal (no TLS) + 7681/tcp: Claude Code web terminal over HTTP Basic auth (no TLS) 8787/tcp: Headroom dashboard and proxy privileged: - SYS_ADMIN @@ -100,5 +100,5 @@ slug: claude_desktop tmpfs: true udev: true url: https://github.com/alexbelgium/hassio-addons -version: "debiantrixie-version-c55d3809-2" +version: "1.14" video: true