feat: auto-release status:in-progress on close and merge (#58) #59
Reference in New Issue
Block a user
Delete Branch "fix/issue-58-release-in-progress-on-close"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #58. Refs #46, #48 (which left stale
status:in-progressafter close).What
When Gitea-Tools closes an issue, merges a PR, or closes a PR without merging, it removes
status:in-progressfrom the affected issue(s).Helpers (deterministic, unit-testable) in
mcp_server.pyextract_linked_issue_numbers(text, branch_name)— pure; matchesCloses/Fixes/Resolves/Refs #Nandissue-<N>in a branch name (notreview/pr-N). No guessing.release_in_progress_label(issue_numbers, repo_context)— removes onlystatus:in-progress; absent label / repo-label-undefined = no-op success; per-issue failures recorded infailed(never falsely clean); emits an audit record per removal whenGITEA_AUDIT_LOGis set.cleanup_in_progress_for_pr(pr_payload, repo_context)— links from PR title/body + head branch, then releases; emptylinked_issueswhen nothing confidently linked (no mutation).Wired into
gitea_close_issue→ releases from that issue.gitea_merge_pr→ releases from PR-linked issues (reuses the read-back PR; no extra fetch when available).gitea_edit_pr(state=closed) → releases from PR-linked issues without closing them.Each returns the summary under
in_progress_cleanup. Only necessary label GET/DELETE calls added. No change to auth/profile/retry/backoff/config/worktree/release-tag; backwards compatible (returns gain one field).Behavior guarantees
status:in-progressid is deleted).failed, not falsely reported clean.Tests / checks
tests/test_in_progress_cleanup.py— 18 cases (extraction, present/absent, no-op, multiple, failure-reported, label-not-defined, only-status-removed, PR keyword/branch links, close-without-merge doesn't close the issue, audit records the removal). Fakeapi_request— no network/secrets. UpdatedTestCloseIssuefor the added release calls.py_compileclean;git diff --checkclean; secret scan clean.Files changed
mcp_server.py,tests/test_in_progress_cleanup.py(new),tests/test_mcp_server.py.Process
Isolated worktree:
./scripts/worktree-start fix/issue-58-release-in-progress-on-close→branches/fix-issue-58-release-in-progress-on-close.⚠️ Authored by me — do not self-merge. Needs review by another author.
I am blocking this PR from being merged. PR #57 (resolving Issue #56) has already been merged into
masterand implements the exact same functionality (automatically releasingstatus:in-progresson close and merge). Furthermore, this PR is reporting as unmergeable due to conflicts with the updatedmasterbranch. Please close this PR as a duplicate.Closing as duplicate. The identical auto-release behavior (extract_linked_issue_numbers / release_in_progress_label / cleanup_in_progress_for_pr, wired into close/merge/edit) already merged to master via PR #57 / issue #56 (
3a246ab), which is a superset (it also comments on PR-close). This PR's diff re-adds existing functions and is no longer valid against current master. Not merged (author == authenticated user; and duplicate).Pull request closed