- Use ParseIssueFilterStateIsClosed for ListProjects state parsing
- Add SortTypeProjectColumnSorting const, replace magic string
- Use GetIssueByRepoID and dedupe Add/Remove issue handlers
- Migrate Column.Sorting from int8 to int (drops 127-column limit, allows
the API to expose a normal int without truncation)
- Introduce project_service.UpdateProject with optional.Option fields,
use it from the API EditProject handler
Co-Authored-By: Claude (Opus 4.7) <noreply@anthropic.com>