diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..8e18c37 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,54 @@ +# Dependabot version updates. Security updates are switched on separately in +# the repo settings and do not depend on this file. Every Dependabot PR runs +# the normal CI (ci.yml triggers on pull_request); a human merges, as always. +# +# Not covered, on purpose: +# - The template's pins (requirements.txt.jinja, package.json.jinja) are Jinja +# files Dependabot cannot parse; they are bumped by hand with each package +# release, and the template-probe CI job catches stale ones. +# - The template's Docker base images (python:3.12-slim, node:22-slim) are +# runtime decisions for every future tool, not routine bumps, and the +# frontend Dockerfile is a .jinja file Dependabot would leave behind. +# - The Django packages (pip). They are libraries with lower bounds only; the +# tools pin the real versions. For pip Dependabot offers no "widen" (only +# lockfile-only, auto, increase, increase-if-necessary), and "auto" treats +# packages that are not on PyPI as apps — every strategy would raise the +# floors (Django>=5.1 → >=6.0) and force each tool to upgrade. Security +# updates still run for them via the repo settings. +version: 2 + +updates: + - package-ecosystem: github-actions + directory: / + schedule: + interval: weekly + day: monday + time: "06:00" + timezone: Europe/Berlin + groups: + github-actions: + patterns: ["*"] + commit-message: + prefix: "chore(deps)" + + # @basicbar/ui. In-range updates only refresh package-lock.json (the + # published ranges stay as they are for the tools); a new major moves the + # range. TipTap packages must stay on one version, so they always travel + # together in their own PR. + - package-ecosystem: npm + directory: /packages/ui + schedule: + interval: weekly + day: monday + time: "06:00" + timezone: Europe/Berlin + versioning-strategy: increase-if-necessary + groups: + tiptap: + patterns: ["@tiptap/*"] + npm-minor-and-patch: + update-types: [minor, patch] + cooldown: + default-days: 7 + commit-message: + prefix: "chore(deps)" diff --git a/CHANGELOG.md b/CHANGELOG.md index 73bf681..69b37af 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,14 @@ Changelog ist die Upgrade-Anleitung für die Tools. ## [Unreleased] +### Repo + +- Dependabot-Version-Updates eingeschaltet (`.github/dependabot.yml`): + wöchentlich, gruppiert, für GitHub Actions und `@basicbar/ui` (npm, TipTap + immer gemeinsam). Die Django-Pakete bleiben bewusst draußen, damit ihre + Untergrenzen nicht steigen. Die CI testet jeden Dependabot-PR. Für die + Tools ändert sich nichts. + ### basicbar-pdf (→ wird `pdf/v0.1.0`) **Neues Paket: gemeinsamer PDF-Rahmen** für herunterladbare Dokumente, diff --git a/CLAUDE.md b/CLAUDE.md index 8e6e904..e555aa3 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -62,6 +62,14 @@ pipx run copier copy . /tmp/probe --trust --defaults --vcs-ref HEAD --data proje [ADR-0004](docs/ADR/0004-umzug-nach-github.md). - Nach dem Paket-Release: Konsumenten-PRs in den Tools (Version bumpen, Migrationsschritte aus dem Changelog ausführen, Suite + Build grün). +- **Dependabot** (`.github/dependabot.yml`) öffnet montags gruppierte PRs für + GitHub Actions und `packages/ui` (npm); die CI testet sie wie jeden PR, + gemerged wird von Hand. Nicht abgedeckt: die Django-Pakete (für pip gibt es + kein `widen`, jede Strategie würde die Untergrenzen anheben — Begründung in + der Datei) sowie die `.jinja`-Pins und Docker-Images des Templates; die + hebt man mit dem Paket-Release. Ein npm-Dependabot-PR ändert meist nur `package-lock.json`; + das ist **kein** ui-Release (Version/Tag nur, wenn sich `package.json` + oder der Paketcode ändert). ## Konventionen