Skip to content

Release: compound watchlist criteria#488

Merged
GQuantrill merged 8 commits into
releasefrom
qa
Jul 18, 2026
Merged

Release: compound watchlist criteria#488
GQuantrill merged 8 commits into
releasefrom
qa

Conversation

@GQuantrill

Copy link
Copy Markdown
Owner

Promotes qa to release.

Compound watchlist criteria (#487)

A watch entry can now carry extra conditions beyond its primary match — e.g. "a C3 system that also leads to C2 or contains D382".

  • Add criteria on the editable entries, each Contains (wormhole type) or Leads to (class), with a per-entry Match all / Match any (AND / OR) selector.
  • The primary match is always required; the AND/OR combines only the extra criteria.
  • Round-trips through the per-user watchlist store; the four matcher consumers (node glow, edge glow, alerts, matched list) are unchanged.

Plus the UI polish from testing: code-only wormhole-type picker (no clipped destination), full-width "Remove from watchlist" button, the "Leads to" control restyled to the colour-coded grouped class picker (individual classes), and criteria rows aligned with the primary controls.

Fully translated across all 9 locales.

A watch entry can now carry extra conditions beyond its primary match —
e.g. 'C1 system that leads to Null-sec'. Each editable entry gets an
'Add criteria' button; every criterion is Contains (wormhole type) or
Leads to (class), plus a per-entry Match all / Match any (AND/OR)
selector.

- types: WatchEntry gains optional criteria: WatchMatch[] + criteriaMode.
- watchMatch: the full [match, ...criteria] set is combined by mode. One
  shared predicate per condition drives both system and connection
  matching, so a node-only criterion (leadsTo) simply reads false on an
  edge — meaning compound entries light up connections only in OR mode.
  All four matcher consumers are unchanged (same signatures).
- useWatchlist: coerce round-trips criteria + criteriaMode (per-user
  nexum.watchlist JSONB; no server change).
- WatchlistBlock: criteria rows + AND/OR selector on the editable entries
  only (quick-add characteristic chips stay simple); dedupe key folds in
  criteria so 'class C1' and 'class C1 + leads to NS' aren't twins.
- i18n across all 9 locales; new CSS for the criteria block.
In the narrow watchlist column the 'Contains'/wh-type picker button
rendered 'Q003 -> Null-Sec' and clipped to 'Q003 -> 1...'. Added a
codeOnly prop that drops the destination badge from the button (the
dropdown still shows it), used for both watchlist wh-type pickers.
…bines criteria)

Match any was OR-ing the primary match too, so 'C3, leads-to C2 OR
contains K162' flagged non-C3 systems. The primary match is now always
required (the base filter); the AND/OR mode combines only the extra
criteria. So it correctly means a C3 that ALSO leads to C2 or contains a
K162.
The top-row controls wrapped as a flat flex, so on a narrow panel the
delete button dropped onto its own line. Moved the marker / match-type
controls into an inner wrapping group and pinned the delete button beside
it (top-right), so it stays on the first line and the controls wrap under
it instead.
Pinning the delete to the top row just pushed the locate button onto its
own line instead. Per the suggestion, the entry delete is now a
full-width 'Remove from watchlist' button along the bottom of the entry,
so nothing in the top row has to make room for it. Criterion delete
buttons are unchanged.
Restyled the leads-to value control from a plain native <select> to a
ClassPicker that matches the connection leads-to dropdown look — a
coloured class label on the button and a grouped J-Space / K-Space
popover of colour-coded classes. Content is unchanged: still the
individual classes (C1, C2, … Null-Sec), not bands. New ClassPicker
component reuses the .wh-picker styling. Used for both the primary
'Leads to' match and 'Leads to' criteria.
… controls

The criteria block had a 26px left padding that offset the Match all/any
selector and the criterion rows from the primary match controls above.
Removed it so everything left-aligns and fills the same width.
feat: compound watchlist criteria (AND/OR conditions)
@GQuantrill
GQuantrill merged commit b89a72a into release Jul 18, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant