feat: complete issue list filters, sort, and fields (task 0002) #5

Merged
alexion merged 4 commits from task-0002-issue-list-filters-and-fields into main 2026-07-12 09:29:35 -04:00

4 Commits

Author SHA1 Message Date
19018772d7 Merge branch 'main' into task-0002-issue-list-filters-and-fields
All checks were successful
CI / test (pull_request) Successful in 26s
2026-07-12 09:28:46 -04:00
13883fa6e1 docs: capture the --fields body truncation conflict as task 0021
All checks were successful
CI / test (pull_request) Successful in 28s
2026-07-12 09:25:57 -04:00
9a902d2d37 docs: prefer gitea-axi over tea for opening pull requests
All checks were successful
CI / test (pull_request) Successful in 27s
2026-07-11 23:06:30 -04:00
605c46f73a feat: complete issue list filters, sort, and fields (task 0002)
All checks were successful
CI / test (pull_request) Successful in 28s
Finish the `issue list` flag surface left minimal by the tracer slice:

- Server-side filters `--label`, `--assignee`, `--author`, `--milestone`,
  mapped to Gitea's `labels`, `assigned_by`, `created_by`, `milestones`.
- Client-side `--sort <created|updated|comments>`, always descending, over
  the fully paginated set (ADR 0005); `--limit` caps the sorted result.
- `--fields` exposing body, closedAt, labels, milestone, updatedAt, url.
- `--search` refused with a VALIDATION_ERROR redirecting to `search issues`.

Exhaustive pagination lands as a shared `paginate.ts`, since ADR 0005 makes
it a policy later slices reuse; `lookup.ts` drops its hand-rolled copy of the
same loop. The helper carries the 20-page cap that copy encoded, matching the
1000-item ceiling Principle 8 sets.
2026-07-11 23:05:47 -04:00