mirror of
https://github.com/aaddrick/claude-desktop-debian.git
synced 2026-05-17 08:36:35 +03:00
* feat: APT/DNF Worker scaffolding (#493) Adds the implementation scaffolding for the Cloudflare Worker that fronts the APT/DNF repo, per docs/worker-apt-plan.md. New files: - worker/src/worker.js: redirects /pool/.../*.deb and /rpm/*/*.rpm to GitHub Release assets via 302; passes metadata through to the gh-pages origin - worker/wrangler.toml: bound to pkg-staging.claude-desktop-debian.dev initially; Phase 4a switches to pkg.claude-desktop-debian.dev - .github/workflows/deploy-worker.yml: deploys Worker on worker/** push, post-deploy probe verifies route bound + Worker responding - .github/workflows/apt-repo-heartbeat.yml: daily cron, deb+rpm matrix, walks ordered redirect chain + size match against Releases asset, opens format-specific tracking issue on failure (auto-close on recovery), gates on Worker liveness (skips silently before Phase 4a) Modified: - .github/workflows/ci.yml: gated strip step + ordered-chain smoke test added to update-apt-repo and update-dnf-repo; the destructive strip only fires when the production Worker probe succeeds, so this PR can land before Phase 4a without affecting current behavior - docs/worker-apt-plan.md: bake in real domain values, mark Decisions table entries as concrete, fix Cloudflare API token permissions list (current names: Workers Scripts Edit, Account Settings Read, Workers Routes Edit; previous "Zone:Zone:Read" name no longer matches the dropdown) Pre-Phase-4a behavior: the strip step's liveness probe targets the production hostname which doesn't exist yet, so it always skips and .debs/.rpms are pushed to gh-pages exactly as today. Smoke tests skip on the same gate. Heartbeat workflow's gate skips before the Worker is live. Nothing destructive happens until Phase 4a explicitly cuts the Worker over to production. Co-Authored-By: Claude <claude@anthropic.com> * refactor: simplify worker scaffolding per cdd-code-simplifier review - worker.js: use named capture group `asset` instead of opaque `m[1]` positional reference; inline single-use `tagFor()` helper; demote unused `arch` capture to non-capturing group. - ci.yml: hoist `WORKER_DOMAIN` from per-step env to job-level env in both `update-apt-repo` and `update-dnf-repo` (matches the pattern already used in `apt-repo-heartbeat.yml`). - apt-repo-heartbeat.yml: use github-script's native `context.serverUrl` / `context.runId` instead of reconstructing from process.env; spread `...context.repo` instead of repeating owner/repo on every API call; destructure `{ data: open }` to flatten `open.data` references. All changes preserve behaviour. The contrarian-fix mechanisms (positive Worker liveness probe gating the strip step, hop-by-hop ordered chain walk in smoke tests) are unchanged. APT/DNF strip + smoke pairs remain in-place per reviewer-readability preference. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude <claude@anthropic.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>