Add filters and room column to mating pair search (#96) - #98
Conversation
Preserves table selection and scroll position during quick room refreshes by emitting layoutAboutToBeChanged + changePersistentIndexList + layoutChanged on the source model instead of a full reset. The proxy's dynamic sort/filter handles re-sorting automatically, so the explicit proxy invalidate and sortByColumn re-apply in _on_room_patch are no longer needed.
- Split left bar with vertical splitter: filters on top, cat selector on bottom - 'Hide cats already in love' toggle hides paired cats from the left list - Max risk % spinner filters candidate table - Min quality spinner filters candidate table (Best Pair mode only) - Trait checklist (mutations + passives + disorders + defects + abilities) filters candidates; selected cat's existing traits are bolded with a checkmark - Search box for the trait list; Reset filters button - New Room column in both Best Pair and Safe Pair table modes - Cat list now shows room next to each name Closes #96
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 15f1261ec4
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| required_muts = self._filter_required_mutations | ||
| max_risk = self._filter_max_risk | ||
| min_quality = self._filter_min_quality |
There was a problem hiding this comment.
Apply hide-paired filter to partner candidates
When the user enables Hide cats already in love, the candidate table still includes mutual-lover partners because _render_for only applies required_muts, max_risk, and min_quality filters in the candidate loop and never checks _filter_hide_paired. The filter is currently applied only in _refresh_list (left cat selector), which makes the results pane inconsistent with the active filter state and surfaces pairings the user explicitly asked to hide.
Useful? React with 👍 / 👎.
Closes #96. See commit message for details.