1
0
Fork 0
Code Issues Pull requests Projects Releases 2 Packages Wiki Activity Actions Pages

Redesign graph nodes around semantic contributors

This commit is contained in:
Andraxion 2026-07-25 18:12:26 -04:00
parent cb4353fe8c
commit 252033e30a
14 changed files with 447 additions and 137 deletions

View file

@ -229,11 +229,12 @@ DocForge starts at the focus and traverses every stored incoming and outgoing re
the selected depth and fixed edge limit. The graph preserves the relationships exactly as the
index stores them. It does not reinterpret direction or exclude contextual relationships.
The focus appears at the center. Outgoing nodes and their descendants form one visual role, while
incoming or lateral nodes form another. This is the broadest view and is useful for inspecting raw
adapter output, discovering nearby nodes, and choosing a better focus. It can also be the noisiest
view because containment, documentation, dependencies, calls, imports, and other relationship
types may all appear together.
The focus appears at the center. Every other card is categorized by the relationship that explains
its contribution to the focus: Structure, Behavior, Dependency, Execution, Data, Evidence,
Context, or Related. This is the broadest view and is useful for inspecting raw adapter output,
discovering nearby nodes, and choosing a better focus. It can also be the noisiest view because
containment, documentation, dependencies, calls, imports, and other relationship types may all
appear together.
In Nodes, **Hide node** removes that node and its incident edges from the presentation. It does not
remove other nodes merely because they become disconnected.
@ -282,6 +283,34 @@ Adjacent traversal is deliberately bounded. After DocForge includes a direct mem
dependency owned by the focus, it continues toward that branch rather than fanning back out
through unrelated siblings. Depth and edge limits provide a second guard against an unbounded web.
### Reading graph cards
The canvas presents nodes as compact semantic cards rather than anonymous circles:
- **Focus** identifies the node being explained.
- **Structure** identifies packages, modules, classes, methods, definitions, and other containment
paths that establish where the focus exists.
- **Behavior** identifies base classes, derived classes, and implementation relationships.
- **Dependency** identifies imported modules and required services or helpers.
- **Execution** identifies callers, dispatchers, launchers, activators, and focus-owned execution
branches.
- **Data** identifies values or resources read and written.
- **Evidence** identifies tests, verification, governing rules, and documentation.
- **Context** identifies descriptive relationships that do not imply execution or ownership.
- **Related** is the deterministic fallback for adapter-specific relationships that do not fit a
built-in category.
The colored rail, category badge, edge style, and relationship label provide separate visual cues.
Color is not the only signal. Cards also display the node kind, such as `Test class` or
`Test method`.
Canvas cards use the readable leaf name. For example,
`tests.test_settings.SettingsTests.test_default_settings_load` appears as
`test_default_settings_load`, while `tests.test_settings` appears as `test_settings`. Long leaf
names wrap at identifier boundaries instead of being truncated. The complete qualified title and
stable node ID remain available in the pointer tooltip, compact descriptor, and full inspector, so
the shorter canvas label never changes identity or loses information.
### Hiding nodes and pruning ancestors
Hidden nodes are browser presentation state. Hiding never changes canonical files, the derived
@ -533,8 +562,8 @@ ambiguous adapter evidence.
### Full inspector content does not fit
DocForge 0.14 uses a fixed header and footer with a scrollable inspector body. If an older page is
still open, stop and reopen the visualization so it loads the current `graph-browser@14` template.
DocForge 0.15 uses a fixed header and footer with a scrollable inspector body. If an older page is
still open, stop and reopen the visualization so it loads the current `graph-browser@15` template.
### Render output is stale