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.