Skip to content

feat(edge_fields): per-field "Hide in views" toggle#715

Merged
michaelpporter merged 2 commits into
mainfrom
feat/hide-field-in-views
Jun 14, 2026
Merged

feat(edge_fields): per-field "Hide in views" toggle#715
michaelpporter merged 2 commits into
mainfrom
feat/hide-field-in-views

Conversation

@michaelpporter

Copy link
Copy Markdown
Owner

Summary

Adds a per-field Hide in views toggle so an edge field can be kept in groups, codeblocks, and the graph yet suppressed from the Matrix and Tree side views. Resolves the last loose end (item 3) from discussion #132's UI audit.

Also fixes a latent consistency bug surfaced while auditing the field settings: removing a field left dangling references that rename already cleaned.

Changes

  • EdgeField.hide_in_views?: boolean (src/interfaces/settings.ts) — optional, so existing fields default to visible. No settings migration needed.
  • omit_hidden_view_fields() (src/utils/edge_fields.ts) — filters hidden labels out of a resolved field set.
  • Matrix + Tree (src/components/side_views/{Matrix,TreeView}.svelte) — wrap the resolved edge_field_labels in the new filter. Tree's find_root field set is left unfiltered (structural, not display).
  • Settings UI (src/components/settings/EdgeFieldSettings.svelte) — "Hide in views" checkbox per field + set_hidden action (stores true / clears the key when off).
  • Remove cascade fix (same file) — remove() now drops transitive rules whose chain[].field or close_field reference the deleted label, and clears any explicit_edge_sources.*.default_field pointing at it. Previously these dangled (a stale close_field could even surface a phantom field in views).

Scope

Side views only. Codeblocks (explicit fields: whitelist) and page views (Trail/PrevNext) are unaffected by the toggle.

Test plan

  • tsc -noEmit, svelte-check, vitest (259 tests) — all green.
  • Manual: toggle "Hide in views" on a field → drops from Matrix + Tree; still works in a breadcrumbs codeblock with fields: [<field>]; untoggle restores. Remove a field used as a source default_field and in a transitive rule → rule dropped, source default cleared, no phantom field.

Adds optional `hide_in_views` flag to EdgeField, a toggle in the Edge
Field settings panel, and a filter step so hidden fields drop from the
Matrix and Tree side views. Codeblocks and page views are unaffected.

Closes #132 (item 3 — per-field view visibility).
…e defaults

Removing an edge field left dangling references that rename already
cleans: transitive rules referencing the label kept generating implied
edges (a stale close_field could surface a phantom field in views), and
explicit_edge_sources.*.default_field pointers were left pointing at the
deleted label. remove() now drops transitive rules that reference the
field and clears any matching source default.
@michaelpporter michaelpporter merged commit c84ef8c into main Jun 14, 2026
1 check passed
@michaelpporter michaelpporter deleted the feat/hide-field-in-views branch June 14, 2026 00:01
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