feat(tools): repo_tree, repo_topics_update, file_read dir fix (#14, #15, #18) #22

Merged
mathias merged 1 commits from feat/repo-ux into main 2026-05-15 08:24:35 +00:00
Owner

What

Batch 2 of the v0.2 sprint — quality-of-life tools.

Changes

Issue Change Detail
#14 repo_tree GET /git/trees/{ref}?recursive=1 — full file tree in one call
#18 repo_topics_update PUT /repos/{owner}/{repo}/topics — replaces topic list
#15 file_read dir-path fix Array response from Gitea now returns "path X is a directory, not a file — use dir_list" instead of a JSON unmarshal panic

Notes

  • repo_tree always uses recursive=true — agents need the full tree; partial trees require SHA traversal which adds round-trips
  • repo_topics_update is a full replacement (Gitea's API is PUT, not PATCH)
  • file_read fix is in the client layer (GetFileContents) so dir_list also benefits

task check passes (lint + race test + vet + govulncheck).

## What Batch 2 of the v0.2 sprint — quality-of-life tools. ### Changes | Issue | Change | Detail | |-------|--------|--------| | #14 | `repo_tree` | `GET /git/trees/{ref}?recursive=1` — full file tree in one call | | #18 | `repo_topics_update` | `PUT /repos/{owner}/{repo}/topics` — replaces topic list | | #15 | `file_read` dir-path fix | Array response from Gitea now returns `"path X is a directory, not a file — use dir_list"` instead of a JSON unmarshal panic | ### Notes - `repo_tree` always uses `recursive=true` — agents need the full tree; partial trees require SHA traversal which adds round-trips - `repo_topics_update` is a full replacement (Gitea's API is PUT, not PATCH) - `file_read` fix is in the client layer (`GetFileContents`) so `dir_list` also benefits `task check` passes (lint + race test + vet + govulncheck).
mathias added 1 commit 2026-05-15 08:24:28 +00:00
feat(tools): repo_tree, repo_topics_update, file_read dir fix (#14, #15, #18)
All checks were successful
CD / Lint / Test / Vet (pull_request) Successful in 7s
CD / Build & Import (pull_request) Has been skipped
CD / Deploy via GitOps (pull_request) Has been skipped
5f3ad99122
repo_tree: GET /git/trees/{ref}?recursive=1 — full recursive file tree
repo_topics_update: PUT /repos/{owner}/{repo}/topics — replace topic list
file_read: detect array response and return descriptive error for dir paths
mathias merged commit a69d3a8b76 into main 2026-05-15 08:24:35 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mathias/gitea-mcp#22