-
v0.6.27 Stable
released this
2026-07-24 09:50:29 +00:00 | 0 commits to main since this releaseTests
- 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 selectedtrunkbranch, and confirms later Forgejo-native branches
survive steady-state reconciliation.
Included changes (v0.6.26 -> v0.6.27)
70dcc304459etest(repository): exercise real cold-seed lifecycle
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Add a real Forgejo 16 cold-seed integration test that imports the public
-
v0.6.26 Stable
released this
2026-07-24 07:50:01 +00:00 | 4 commits to main since this releaseFixed
- Keep repository imports
Runninguntil Forgejo reports written refs; when
importSource.branchis 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-shotimportSourceimmutable
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)
727d408a4046chore(quality): clear static analysis backloge92174d9349ffix(security): upgrade reachable vulnerable dependenciescfa2de5ee93afix(repository): enforce one-shot import contract
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Keep repository imports
-
v0.6.25 Stable
released this
2026-07-23 13:15:36 +00:00 | 10 commits to main since this releaseFixed
ForgejoPushMirrornow 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 watchesspec.authSecretRef, so remote credential rotations
reconcile immediately rather than waiting for the periodic resync.
Changed
- Bump
libseanfarm-operatorv0.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)
aa71e915b4a2chore(deps): bump libseanfarm-operator to v0.4.130368fe93e3a5fix(pushmirror): converge configuration and credentials
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v0.6.24 Stable
released this
2026-07-21 09:47:33 +00:00 | 15 commits to main since this releaseChanged
- Incremental release.
Included changes (v0.6.23 -> v0.6.24)
b78767bb97ccchore: remove confirmed-dead code (dead-code hunt)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v0.6.23 Stable
released this
2026-07-17 13:15:56 +00:00 | 19 commits to main since this releaseAdded
- 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 formatX.Y.Z+gitea-A.B.C— verified live
as15.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)
2c953784de45test(forgejo16): guard operator clears SDK gates against Forgejo 16 version string
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Forgejo 16 compatibility regression guard (
-
v0.6.22 Stable
released this
2026-07-17 11:17:45 +00:00 | 23 commits to main since this releaseChanged
- Bump
libseanfarm-operatorv0.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.mkscaffolding: 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 overreconcile.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)
5fbc1c0f3a9bchore(scaffolding): adopt operator.mk + httpkit/secret helpers (lib v0.4.12)aac3ec29790cchore(deps): bump libseanfarm-operator v0.4.11 -> v0.4.12 (lib-autobump)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Bump
-
v0.6.21 Stable
released this
2026-07-16 16:19:20 +00:00 | 29 commits to main since this releaseAdded
- 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-operatorv0.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)
3af756e0aa6ffeat(metrics): enable libseanfarm reconcile.Metrics4fe32d0e1349chore(deps): bump libseanfarm-operator v0.4.10 -> v0.4.11 (lib-autobump)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Operator metrics via libseanfarm reconcile.Metrics: reconcile counts/durations +
-
v0.6.20 Stable
released this
2026-07-15 18:09:24 +00:00 | 35 commits to main since this releaseChanged
- Bump
libseanfarm-operatorv0.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)
4ecf252b4894chore(deps): bump libseanfarm-operator v0.4.9 -> v0.4.10 + suite onto reconcile/testkit
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Bump
-
v0.6.19 Stable
released this
2026-07-15 15:55:00 +00:00 | 39 commits to main since this releaseChanged
- Bump
libseanfarm-operatorv0.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=Falsereason defaults toNotReadyinstead of a silently-swallowed 422,
dry-run converge now runsMirrorStatus).
Included changes (v0.6.18 -> v0.6.19)
3499dcec9424fix(deps): bump libseanfarm-operator v0.4.7 -> v0.4.9
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Bump
-
v0.6.18 Stable
released this
2026-07-15 12:47:38 +00:00 | 43 commits to main since this releaseFixed
ForgejoWebhook.Deleteno longer leaks the remote hook (which carries a delivery secret) when
the status id was never persisted — it recovers the id viaListRepoHooksmatch-by-URL, mirroring
the other ID-keyed Delete handlers, tolerating 404 on both the list (parent repo gone) and the delete.ForgejoUseradmin-grant failure is no longer swallowed on the create path — a failed
AdminEditUsernow yields Degraded+requeue instead of a prematureReadyreporting an account that
was created but is not an admin (matching the exists-path).ForgejoOAuthAppself-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 CRReady
with no usable secret and no recovery. Converge now regenerates viaUpdateOauth2when the output
Secret is absent/empty.ForgejoOAuthApp.spec.nameis 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.ForgejoTokenre-mints on aspec.scopeschange. The active token kept its create-time scopes
forever (a tightened scope set left an over-privileged token live, reportedReady). Steady-state now
comparesspec.scopesagainst a newstatus.appliedScopesrecorded at mint — a spec-vs-applied
compare, deliberately not against Forgejo's normalized scope form, so it can't thrash-loop.ForgejoOrganizationvisibility drift is now repaired — editingspec.visibilityafter create
applies. The edit sends the full desired org state, because gitea'sEditOrgOptiontext fields are
value-typed and the server replaces them — so a single-field edit no longer silently wipes the
org'sFullName/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)
0f205f8076e8fix(forgejo): r5 leak/swallow/immutability/drift cluster (6 fixes)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads