- mise-tasks/branch-cleanup: delete merged local/remote branches via
git + Forgejo API (1Password/env/flag token resolution)
- mise.toml: add uv (runs PEP 723 task scripts) and bat (ai-docs output)
- CLAUDE.md: re-point at AGENTS.md
- prek.toml: drop taplo-lint hook. It fetches the remote SchemaStore
catalog, which the pinned (dormant) taplo CLI can no longer decode and
which fails in sandboxed CI. check-toml still validates syntax and
taplo-format still formats.
- .forgejo workflows / .gitea/template / dagger: minor resync
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The /releases/latest and /releases/tags/X reads were unauthenticated. On
private repos Forgejo returns 404 to unauth'd callers, so the workflow
silently fell back to v0.0.0 as the "previous version" and let a
BUMP_PATCH on top of v1.x.y produce v0.0.1. The duplicate-tag guard had
the same blind spot — it could not detect existing releases at all.
Both reads now send the Authorization header and treat any non-200 /
non-404 response as a hard failure instead of swallowing it.
Forgejo's web action routes don't support API token auth for private
repos. Read the zstd-compressed log files directly from indri via SSH.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Authenticated runner-logs script that lists workflow runs and fetches
job logs. Uses Forgejo API token from 1Password and auto-detects the
repo from git remote.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Pin dagger CLI to 0.20.0 in mise.toml (was "latest"), bump engine
version in dagger.json. New .dagger/.gitattributes and .gitignore
generated by v0.20.0.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace hardcoded TODO markers with Forgejo template variables (${REPO_NAME},
${REPO_OWNER}, etc.) so new repos created from this template are auto-customized.
Use Forgejo Actions context variables in build.yaml for dynamic FORGE_URL.
Hardcode forge.eblu.me as the Forgejo instance. Update CLAUDE.md and README.md
to reflect reduced manual setup steps.
Python class names kept as manual TODO (same as directory rename) since template
variables in Python code positions aren't valid syntax for linters.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds a README.md describing the template and how to fork it. Adds TODO
comments to Dagger config, Quartz config, and CI workflow where they
were missing. Adds a "First-Time Setup" section to CLAUDE.md that
instructs Claude to proactively suggest resolving TODOs.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>