Filter and search the issue and merge request lists !48

merged merged by cmc on 2026-09-06 19:46 UTC · krz/gitbay-ios:list-filters into main

Discussion

cmc

IssueFilter and MRFilter render themselves to the flags their list commands accept, and both list view models build argv from one. An empty value sends no flag, since --search "" is a different query from no search; --milestone none is a real filter and survives as one. Search text is passed through unquoted, because the server quotes FTS5 term by term and an operator is a word to match.

Free text debounces at 300ms — search, author and assignee — while a picker reloads immediately. PagedListModel no longer paints a transport failure when a reload is cancelled by a newer one, which otherwise flashed a network error over a fast filter change on every list.

The issue list filters by label, assignee, author and milestone, its label picker reading the labels already loaded for the chips. The merge request list offers author and milestone only, because mr list accepts neither --label nor --assignee; the shared filter sheet has no field for either, so there is no path to send one.

Closes three parity rows: issue filtering, issue search, and merge request search.