feat(issue): add milestones and type filters to list_issues (#199)

## Summary

`list_issues` could not be scoped to a milestone, and the milestone was
absent from its list output. To find which milestone an issue belongs to,
callers had to read every issue individually — expensive on repositories
with hundreds of issues.

## Changes

- `list_issues`: add `milestones` (name or ID filter) and `type`
  (`issues`/`pulls`) parameters, wiring the SDK's
  `ListIssueOption.Milestones` and `ListIssueOption.Type`.
- Include the `milestone` `{id, title}` field in `slimIssues` (the list
  output), consistent with the existing `slimIssue` (single-issue) output.
- Tests: extend `Test_listRepoIssuesFn_filters` to assert the `milestones`
  and `type` query params, and add `Test_listRepoIssuesFn_includesMilestone`
  for the milestone field in list output.

This is a natural continuation of #164 (which added `labels`/`since`/`before`
to `list_issues`); `milestones` and `type` are supported by the SDK but were
not yet wired through.

## Testing

- `go build ./...` — ok
- `go vet ./operation/issue/` — ok
- `go test ./...` — all pass
- `make fmt` — clean

---
This PR was written with the help of Claude Opus 4.8

Reviewed-on: https://gitea.com/gitea/gitea-mcp/pulls/199
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: jermey <186737+jermey@noreply.gitea.com>
Co-committed-by: jermey <186737+jermey@noreply.gitea.com>
This commit is contained in:
jermey
2026-05-31 22:19:41 +00:00
committed by Lunny Xiao
parent 3af6250589
commit bbde7ee110
3 changed files with 77 additions and 6 deletions
+6
View File
@@ -63,6 +63,12 @@ func slimIssues(issues []*gitea_sdk.Issue) []map[string]any {
if len(i.Labels) > 0 {
m["labels"] = slim.LabelNames(i.Labels)
}
if i.Milestone != nil {
m["milestone"] = map[string]any{
"id": i.Milestone.ID,
"title": i.Milestone.Title,
}
}
if i.Ref != "" {
m["ref"] = i.Ref
}