• v0.6.27 229a34dc44

    v0.6.27 Stable

    pipeline-bot released this 2026-07-24 09:50:29 +00:00 | 0 commits to main since this release

    Tests

    • Add a real Forgejo 16 cold-seed integration test that imports the public
      Codeberg backup, proves Ready stays false until refs are verified, retains
      only the selected trunk branch, and confirms later Forgejo-native branches
      survive steady-state reconciliation.

    Included changes (v0.6.26 -> v0.6.27)

    • 70dcc304459e test(repository): exercise real cold-seed lifecycle
    Downloads
  • v0.6.26 ef5a14ea9a

    v0.6.26 Stable

    pipeline-bot released this 2026-07-24 07:50:01 +00:00 | 4 commits to main since this release

    Fixed

    • Keep repository imports Running until Forgejo reports written refs; when
      importSource.branch is set, verify it, make it the default, and prune the
      other one-shot imported branch refs before reporting Ready. Reject non-zero
      depth, which Forgejo's migrate API cannot honor, instead of silently
      promising a shallow import, and make the one-shot importSource immutable
      so post-seed edits cannot silently claim an action the controller will not run.
    • Upgrade reachable x/crypto, x/net, x/text, and OpenTelemetry SDK
      dependencies to patched releases.

    Changed

    • Clear the golangci-lint backlog and add focused repository-import contract
      coverage for branch selection, missing branches, and truthful import status.

    Included changes (v0.6.25 -> v0.6.26)

    • 727d408a4046 chore(quality): clear static analysis backlog
    • e92174d9349f fix(security): upgrade reachable vulnerable dependencies
    • cfa2de5ee93a fix(repository): enforce one-shot import contract
    Downloads
  • v0.6.25 8f9257126a

    v0.6.25 Stable

    pipeline-bot released this 2026-07-23 13:15:36 +00:00 | 10 commits to main since this release

    Fixed

    • ForgejoPushMirror now converges mutable interval/sync settings and rotated
      remote credentials instead of treating any same-URL mirror as current. Because
      Forgejo exposes no push-mirror edit endpoint, reconciliation creates the desired
      replacement before pruning stale mirrors, preserving the off-cluster backup leg.
      The controller also watches spec.authSecretRef, so remote credential rotations
      reconcile immediately rather than waiting for the periodic resync.

    Changed

    • Bump libseanfarm-operator v0.4.12 → v0.4.13 so best-effort progress and
      failure conditions survive routine Kubernetes status-update conflicts.

    Included changes (v0.6.24 -> v0.6.25)

    • aa71e915b4a2 chore(deps): bump libseanfarm-operator to v0.4.13
    • 0368fe93e3a5 fix(pushmirror): converge configuration and credentials
    Downloads
  • v0.6.24 9c7648107b

    v0.6.24 Stable

    pipeline-bot released this 2026-07-21 09:47:33 +00:00 | 15 commits to main since this release

    Changed

    • Incremental release.

    Included changes (v0.6.23 -> v0.6.24)

    • b78767bb97cc chore: remove confirmed-dead code (dead-code hunt)
    Downloads
  • v0.6.23 147c9464ef

    v0.6.23 Stable

    pipeline-bot released this 2026-07-17 13:15:56 +00:00 | 19 commits to main since this release

    Added

    • Forgejo 16 compatibility regression guard (forgejo16_compat_test.go): asserts the
      operator's auto-probing client clears its highest SDK version gate (tag protection,
      ≥1.23.0) against the Forgejo version-string format X.Y.Z+gitea-A.B.C — verified live
      as 15.0.3+gitea-1.22.0. go-version reads the Forgejo product core (15/16/…) and ignores
      the +gitea- build metadata, so a Forgejo major bump only moves the compared version up.
      The test goes red if a future SDK bump raises a gate above the advertised core, or if
      Forgejo drops the product core from its version string. No operator code change needed for
      Forgejo 16.

    Included changes (v0.6.22 -> v0.6.23)

    • 2c953784de45 test(forgejo16): guard operator clears SDK gates against Forgejo 16 version string
    Downloads
  • v0.6.22 01e091b21a

    v0.6.22 Stable

    pipeline-bot released this 2026-07-17 11:17:45 +00:00 | 23 commits to main since this release

    Changed

    • Bump libseanfarm-operator v0.4.11 -> v0.4.12 (lib-autobump: rides the shared-library release train; the envtest release gate validates the suite against it on the next ship).
    • Adopt the lib's canonical operator.mk scaffolding: vendor it and shrink the Makefile to project vars + repo-specific targets (build/docker/e2e/deploy) — the shared dev-loop targets and tool pins (manifests/generate/fmt/vet/test/lint*, Dependencies) now come from the include, re-synced by the lib-bump autoland on every lib release.
    • Migrate hand-rolled HTTP/secret helpers onto libseanfarm-operator v0.4.12: hashSecret -> reconcile.HashValue, getAuthTokenFromSecret -> thin wrapper over reconcile.SecretValue, and the endpoint-keyed gitea client cache + sharedTransport -> httpkit.CredentialCache + httpkit.ClusterCATransport (same pooling tuning, extracted from this operator; CA trust inert on the plaintext in-cluster endpoint).

    Included changes (v0.6.21 -> v0.6.22)

    • 5fbc1c0f3a9b chore(scaffolding): adopt operator.mk + httpkit/secret helpers (lib v0.4.12)
    • aac3ec29790c chore(deps): bump libseanfarm-operator v0.4.11 -> v0.4.12 (lib-autobump)
    Downloads
  • v0.6.21 3a25a131af

    v0.6.21 Stable

    pipeline-bot released this 2026-07-16 16:19:20 +00:00 | 29 commits to main since this release

    Added

    • Operator metrics via libseanfarm reconcile.Metrics: reconcile counts/durations +
      status-write outcomes per controller — first custom metrics for this operator
      (forgejo_operator_reconcile_total, forgejo_operator_reconcile_duration_seconds,
      forgejo_operator_status_update_total).

    Changed

    • Bump libseanfarm-operator v0.4.10 -> v0.4.11 (lib-autobump: rides the shared-library release train; the envtest release gate validates the suite against it on the next ship).

    Included changes (v0.6.20 -> v0.6.21)

    • 3af756e0aa6f feat(metrics): enable libseanfarm reconcile.Metrics
    • 4fe32d0e1349 chore(deps): bump libseanfarm-operator v0.4.10 -> v0.4.11 (lib-autobump)
    Downloads
  • v0.6.20 ace66ef5be

    v0.6.20 Stable

    pipeline-bot released this 2026-07-15 18:09:24 +00:00 | 35 commits to main since this release

    Changed

    • Bump libseanfarm-operator v0.4.9 -> v0.4.10; envtest suite bootstrap now rides
      reconcile/testkit.StartEnvtest (shared bring-up + binary discovery) instead of the
      copy-pasted ~120-line suite scaffold.

    Included changes (v0.6.19 -> v0.6.20)

    • 4ecf252b4894 chore(deps): bump libseanfarm-operator v0.4.9 -> v0.4.10 + suite onto reconcile/testkit
    Downloads
  • v0.6.19 3b95b04bf9

    v0.6.19 Stable

    pipeline-bot released this 2026-07-15 15:55:00 +00:00 | 39 commits to main since this release

    Changed

    • Bump libseanfarm-operator v0.4.7 -> v0.4.9: picks up the six shared-harness fixes from
      the R5 bug-hunt (dry-run delete no longer touches the remote, Degraded message truncation,
      Progressing cleared on failure, dry-run clears stale Degraded/Progressing, empty
      Ready=False reason defaults to NotReady instead of a silently-swallowed 422,
      dry-run converge now runs MirrorStatus).

    Included changes (v0.6.18 -> v0.6.19)

    • 3499dcec9424 fix(deps): bump libseanfarm-operator v0.4.7 -> v0.4.9
    Downloads
  • v0.6.18 ad3999db2e

    v0.6.18 Stable

    pipeline-bot released this 2026-07-15 12:47:38 +00:00 | 43 commits to main since this release

    Fixed

    • ForgejoWebhook.Delete no longer leaks the remote hook (which carries a delivery secret) when
      the status id was never persisted — it recovers the id via ListRepoHooks match-by-URL, mirroring
      the other ID-keyed Delete handlers, tolerating 404 on both the list (parent repo gone) and the delete.
    • ForgejoUser admin-grant failure is no longer swallowed on the create path — a failed
      AdminEditUser now yields Degraded+requeue instead of a premature Ready reporting an account that
      was created but is not an admin (matching the exists-path).
    • ForgejoOAuthApp self-heals a lost one-time client secret. The client secret is returned only by
      create, so a swallowed secret-write (app recorded, output Secret never written) left the CR Ready
      with no usable secret and no recovery. Converge now regenerates via UpdateOauth2 when the output
      Secret is absent/empty.
    • ForgejoOAuthApp.spec.name is now immutable (self == oldSelf). The reconciler adopts the app by
      name, so an in-place rename orphaned the original app and leaked its still-valid client secret.
    • ForgejoToken re-mints on a spec.scopes change. The active token kept its create-time scopes
      forever (a tightened scope set left an over-privileged token live, reported Ready). Steady-state now
      compares spec.scopes against a new status.appliedScopes recorded at mint — a spec-vs-applied
      compare, deliberately not against Forgejo's normalized scope form, so it can't thrash-loop.
    • ForgejoOrganization visibility drift is now repaired — editing spec.visibility after create
      applies. The edit sends the full desired org state, because gitea's EditOrgOption text fields are
      value-typed and the server replaces them — so a single-field edit no longer silently wipes the
      org's FullName/Description/Website/Location (this also fixes the same latent clobber that
      already existed on the text-field edit path).

    Included changes (v0.6.17 -> v0.6.18)

    • 0f205f8076e8 fix(forgejo): r5 leak/swallow/immutability/drift cluster (6 fixes)
    Downloads