Skip to content

Feat/UI and or toggle#6

Merged
Mnikley merged 2 commits into
mainfrom
feat/ui-and-or-toggle
Jul 1, 2026
Merged

Feat/UI and or toggle#6
Mnikley merged 2 commits into
mainfrom
feat/ui-and-or-toggle

Conversation

@Mnikley

@Mnikley Mnikley commented Jul 1, 2026

Copy link
Copy Markdown
Member

OR/AND filter join toggle

Adds an OR/AND toggle to the filter panel (under ⚙ Details) so active filters can be combined with AND, not just the default OR.

  • OR (default, unchanged): show elements matching any active filter.
  • AND: show elements matching all — but only counts filters you've actually narrowed, so flipping it with everything at defaults leaves the graph unchanged instead of emptying it.
  • Complete cases only (AND-only checkbox): additionally hides elements missing any of those filters, per element type.
  • Adds an IS MISSING query-DSL operator to express the non-strict join; the query text stays the source of truth and round-trips through encode/decode and JSON.
  • Join mode + complete-cases are persisted per workspace view (old files default to OR / non-strict).
  • Docs updated: query-editor help, tour, API.md, ARCHITECTURE.md.

Test plan

  • AND with all filters at default → full graph; narrow a filter → intersects only that.
  • Complete cases only → hides elements with missing data.
  • 1387 unit tests pass, 0 lint errors.

Mnikley added 2 commits July 1, 2026 14:03
- Panel toolbar (shown under Details): segmented OR/AND control + a
  'Complete cases only' checkbox revealed under AND; OR/AND on the left,
  Details on the right.
- OR is unchanged. AND counts only NARROWED filters (a filter left at its
  default is a no-op), so an un-narrowed AND shows the full graph instead of
  emptying it on dirty/rounded values.
- Non-strict AND (default): each conjunct OR-ed with a new 'IS MISSING' leaf,
  so a property an element lacks (or that belongs to the other element type)
  never disqualifies it.
- Strict AND (complete cases): type-grouped (AND within each element type, OR
  between the node and edge groups) so a same-type missing value excludes while
  the other element type stays neutral.
- Join mode + strict persist to localStorage; query text stays the source of
  truth (encode/decode round-trip). Adds unit + round-trip + UI tests.
- Persist filterJoinMode / filterStrict per workspace view: defaulted in
  createDefaultLayout and restored in parseLayouts (pre-1.15.4 files default
  to OR / non-strict). Export picks them up automatically.
- Document the new operator/toggle: IS MISSING + OR/AND toggle in the query
  editor help, tour steps (rendered Details pill + OR/AND mock), API.md
  grammar, and ARCHITECTURE.md.
- Tour: correct the canvas step — click selects + opens the tooltip, and
  shift+click adds/removes from the selection.
- Bump version 1.15.3 -> 1.15.4 and add the CHANGELOG entry.
@Mnikley Mnikley merged commit 2180cc7 into main Jul 1, 2026
2 checks passed
@Mnikley Mnikley deleted the feat/ui-and-or-toggle branch July 1, 2026 12:28
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