Commit Graph

3 Commits

Author SHA1 Message Date
a54a5d0220 fix(renovate): use a flexible internal-checks filter so ages resolve
All checks were successful
Translations / check (pull_request) Successful in 8s
CI / ci (pull_request) Successful in 11m5s
Age came back `unknown` for every dependency, which is the previous
commit's `internalChecksFilter: none` doing exactly what it says on the
tin — and rather more. filter-checks.ts short-circuits on `none`:

    if (internalChecksFilter === 'none') {
      release = sortedReleases.pop();     // returns here
    } else {
      for (let candidateRelease of sortedReleases.reverse()) {
        ...
        const updatedCandidateRelease = await postprocessRelease(...)

postprocessRelease is the only caller that fetches a Maven artifact's
Last-Modified header, so skipping the loop leaves releaseTimestamp unset.
That empties the Age column, but it also silently voids minimumReleaseAge
and the stability status check, since both compare against that same
timestamp. The cooling-off tiers were decorative.

`flexible` keeps the intent — it still prefers a version that has cleared
its window, but opens the PR at the newest candidate when none has — while
running the loop that populates the timestamps. Verified with a local
dry-run: compose-bom 24 d, material3 1.5.0-alpha24 10 d, work-runtime
122 d, AGP 9.3.1 2 d, gradle 29 d. Only ghcr.io/renovatebot/renovate stays
unknown, because the docker registry serves no timestamps at all — the
run marks all 176 of its tags pending for that reason, and flexible is
what still lets that PR through.

Pending rejoins the table: under a flexible filter it names the newer
version being held back, rather than leaving it invisible.

Also migrates the Gitea workflow manager off the deprecated `fileMatch`.
Renovate's config migration was rewriting it to `managerFilePatterns`
(delimited regex) on every run and warning about it; the dry-run confirms
the manager still picks up .gitea/workflows afterwards.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-25 22:20:07 +02:00
c6e83fc071 chore(renovate): show real release age and fetch changelogs (!98)
All checks were successful
Release — F-Droid repo + Gitea/Codeberg release / detect (push) Successful in 7s
Release — F-Droid repo + Gitea/Codeberg release / release (push) Has been skipped
Three gaps in the Renovate setup, all about having enough in front of you at review time.

### Age reads UNKNOWN

`config:recommended` already brings in `mergeConfidence:age-confidence-badges`, so the Age column existed — it just rendered grey. Fetching the badge SVGs from `developer.mend.io` directly shows why: Mend's index covers Maven Central but has nothing for Google's Maven repo, so every androidx/compose coordinate is blank. No token changes it; the JSON API behind the badges answers 401 for everyone.

| coordinate | registry | age badge |
| --- | --- | --- |
| `androidx.compose:compose-bom` | Google Maven | UNKNOWN |
| `androidx.core:core-ktx` | Google Maven | UNKNOWN |
| `com.google.truth:truth` | Maven Central | 2y |
| `org.jetbrains.kotlin:kotlin-stdlib` | Maven Central | 1y (confidence high, passing 99%) |

Age is now computed from `newVersionAgeInDays`, which Renovate derives itself to evaluate `minimumReleaseAge` — Google Maven serves `last-modified` on its POMs, so it's populated where Mend is blank, and the number agrees with the tiers it's read against. Mend keeps the Confidence column, which still resolves for the Maven Central half (Kotlin, Gradle, AGP, the test stack).

### Empty release notes

We run against Gitea, but the packages are *released* on GitHub, so changelog lookups were going out unauthenticated against a 60/h limit. `RENOVATE_GITHUB_COM_TOKEN` lifts that.

**Needs a secret before it does anything:** a github.com PAT with **no scopes ticked**, added as repo secret `GITHUB_COM_TOKEN`. Until then the var resolves empty, which is exactly today's behaviour.

### Nothing expressed how settled a release is

Cooling-off scaled by blast radius: 30 days major, 20 minor, 10 patch/digest.

Deliberately advisory. Renovate's default `internalChecksFilter: strict` would suppress the PR outright until the version aged in; `none` opens it at the highest version immediately, so merging ahead of the window stays a decision rather than a wait. A too-young release still gets a yellow `renovate/stability-days` check — `setStability` computes that from `minimumReleaseAge` + `releaseTimestamp` independently of the filter — and with `automerge: false` nothing acts on it.

### Notes

Validated with `renovate-config-validator` against the pinned 43.232.0. Config is read from the default branch, so the open bump PRs keep their current tables until the next run after this merges.

Reviewed-on: #98
2026-07-25 20:09:22 +00:00
2f153fef56 ci(renovate): self-hosted Renovate config + weekly workflow
All checks were successful
CI / ci (push) Successful in 1m31s
renovate.json5 (config:recommended + semantic commits, no automerge,
dependency dashboard; material3 stays on its 1.5-alpha pin in an
isolated PR; test deps grouped; github-actions manager watches
.gitea/workflows). Cadence owned by .gitea/workflows/renovate.yml
(Mondays 05:00 UTC + manual dispatch), self-hosted via
renovatebot/github-action, scoped to makiolaj/calendula.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 17:07:46 +02:00