Skip to content

Release 3.4.0#489

Merged
GQuantrill merged 10 commits into
mainfrom
release
Jul 18, 2026
Merged

Release 3.4.0#489
GQuantrill merged 10 commits into
mainfrom
release

Conversation

@GQuantrill

Copy link
Copy Markdown
Owner

Promotes release to main for the 3.4.0 minor release.

What's new: smarter watchlist entries

A watchlist entry can now match on more than one thing at once, instead of a single condition.

  • Add criteria. On an entry you can now add extra conditions — Contains a wormhole type, or Leads to a class — on top of the main match. So you can watch for something specific like "a C3 system that also leads to C2, or contains a D382", not just "any C3".
  • Match all / Match any. A per-entry toggle decides whether the extra criteria all have to be true, or just one of them. The main match is always required either way.
  • Tidier controls. The "Leads to" picker now uses the same colour-coded, grouped class dropdown as the rest of the app, the wormhole-type picker shows a clean code, and the entry's delete is a full-width button along the bottom.

Fully translated across all nine languages.

Version bumped to 3.4.0 (web + server). A v3.4.0 GitHub release/tag will be cut after merge.

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)
Release: compound watchlist criteria
@GQuantrill
GQuantrill merged commit 66c5397 into main Jul 18, 2026
7 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