repo_delete requires confirm == repo name. Missing or wrong confirm returns an error before any API call. Four test cases: correct confirm, wrong confirm, missing confirm, allowlist rejection.
issue_get expands the Issue struct with labels, assignees, comments, created_at, updated_at — used by existing issue_create response too (additive, no breakage).
task check passes (lint + race test + vet + govulncheck).
## What
Batch 3 — completes the v0.2 sprint.
### Tools added
| Issue | Tool | Gitea API | Risk |
|-------|------|-----------|------|
| #20 | `issue_get` | `GET /issues/{number}` | LOW — read-only |
| #17 | `release_create` | `POST /releases` | LOW — creates tag + release |
| #11 | `repo_delete` | `DELETE /repos/{owner}/{repo}` | HIGH — irreversible |
### Safety
`repo_delete` requires `confirm` == repo name. Missing or wrong confirm returns an error before any API call. Four test cases: correct confirm, wrong confirm, missing confirm, allowlist rejection.
`issue_get` expands the `Issue` struct with `labels`, `assignees`, `comments`, `created_at`, `updated_at` — used by existing `issue_create` response too (additive, no breakage).
`task check` passes (lint + race test + vet + govulncheck).
issue_get: GET /repos/{owner}/{repo}/issues/{number} — full issue with labels, assignees, comment count
release_create: POST /repos/{owner}/{repo}/releases — create release and tag in one call
repo_delete: DELETE /repos/{owner}/{repo} — confirm=<repo name> required, blocks accidents
mathias
merged commit 3b490271ef into main2026-05-15 12:00:09 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
What
Batch 3 — completes the v0.2 sprint.
Tools added
issue_getGET /issues/{number}release_createPOST /releasesrepo_deleteDELETE /repos/{owner}/{repo}Safety
repo_deleterequiresconfirm== repo name. Missing or wrong confirm returns an error before any API call. Four test cases: correct confirm, wrong confirm, missing confirm, allowlist rejection.issue_getexpands theIssuestruct withlabels,assignees,comments,created_at,updated_at— used by existingissue_createresponse too (additive, no breakage).task checkpasses (lint + race test + vet + govulncheck).issue_get: GET /repos/{owner}/{repo}/issues/{number} — full issue with labels, assignees, comment count release_create: POST /repos/{owner}/{repo}/releases — create release and tag in one call repo_delete: DELETE /repos/{owner}/{repo} — confirm=<repo name> required, blocks accidents