• v0.6.16 5cd10d9dde

    v0.6.16 Stable

    pipeline-bot released this 2026-07-14 21:07:41 +00:00 | 51 commits to main since this release

    Fixed

    • Delete no longer leaks a remote resource (or its live credential) when the status ID was
      never persisted.
      Six ID-keyed finalizer Delete handlers — ForgejoOAuthApp, ForgejoSSHKey,
      ForgejoLabel, ForgejoRelease, ForgejoTagProtection, ForgejoTeam — no-op'd when their
      Status.<X>ID == 0, so a CR deleted after the remote create landed but before its status write
      persisted orphaned the resource in Forgejo forever. For an OAuth app that means a live client
      secret, and for an SSH key a live public key, outliving the deprovisioned CR. Each Delete now
      recovers the target ID via the same natural-key lookup its Converge already uses to adopt an
      existing resource
      (OAuth app by name, SSH key by username+title, label/tag-protection by
      name/pattern, release by tag, team by org+name) before deleting. The OAuth-app fallback deletes
      every same-name app it owns, matching Converge's duplicate-pruning model.
    • Finalizer Delete is now idempotent on a 404. All six handlers (plus the shared is404 helper)
      treat an already-absent remote resource as a completed delete, so a benign race — deleted out of
      band, or a retried finalizer after the first delete landed — no longer surfaces a spurious error.
      The four parent-scoped fallback lookups (label/tag-protection by repo, SSH key by user, team by
      org) also tolerate a 404 on the list itself: when the parent repo/user/org was deleted (tenant
      teardown cascade), the child is already gone, so Delete cleanly no-ops instead of erroring. A
      non-404 list failure (transient 5xx) still surfaces. (forgejodelete_leak_test.go:
      recovers-ID-when-status-empty, idempotent-404, parent-gone, and non-404-propagates coverage.)

    Included changes (v0.6.15 -> v0.6.16)

    • ec47ea8d9b31 fix(delete): recover remote id via natural key so a status-lost CR can't leak
    Downloads