diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 458bb67e0a..261aece1d1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -67,6 +67,14 @@ jobs: bump-dev-version: needs: publish if: ${{ inputs.dry-run != true }} + # A reusable-workflow CALL cannot grant the callee more than the calling job holds, + # and GitHub refuses the whole run at startup when the called workflow's own job + # declares permissions the caller did not pass down ("startup_failure", runs + # 33615174183 / 33615177849 — the first dispatches since #3129 wired this call). + # The callee's job declares exactly these two; nothing else in this file gains them. + permissions: + contents: write + pull-requests: write uses: ./.github/workflows/dev-version-bump.yml with: released-version: v${{ inputs.version }} diff --git a/gui/src/components/apikeys-workspace/ApiKeysWorkspace.tsx b/gui/src/components/apikeys-workspace/ApiKeysWorkspace.tsx index dba0e23591..76a2835d9f 100644 --- a/gui/src/components/apikeys-workspace/ApiKeysWorkspace.tsx +++ b/gui/src/components/apikeys-workspace/ApiKeysWorkspace.tsx @@ -140,6 +140,7 @@ export default function ApiKeysWorkspace({ const selectedRotationId = selected ? (rotationSecret?.id === selected.id ? rotationSecret.rotationId : selected.pendingRotation?.id) : undefined; + const rotationEnabled = Boolean(onRotationStart || onRotationCommit || onRotationAbort); const mutationPending = deleting || renamePending || rotationPending; const runRotation = async (operation: "start" | "commit" | "abort") => { @@ -356,7 +357,7 @@ export default function ApiKeysWorkspace({ -
{t("api.rotation.failed")}
} -