feat: improve concept map layout#7
Conversation
|
Local Test vault smoke test completed after the agent report. I deployed this branch to the Test vault, force-regenerated |
|
After a proper local screenshot comparison, this layout change does not currently satisfy issue #2. I compared main vs this branch using the same daily note and same generated sidecar. Main keeps the graph relatively compact; PR #7 spreads nodes across the full card width, creates a lot of whitespace, and makes relationships harder to scan. We should not merge this as-is. The branch is still useful as a first deterministic-layout spike, but it needs another iteration with visual acceptance criteria and screenshot comparison before it is merge-ready. |
|
Follow-up: the right conclusion is stronger than my previous comment. Both |
Replace the wide tier-grid layout with anchor-centered radial clusters based on the original hook strategy. Add deterministic layout metrics evidence for PR #7 comparison when screenshots are unavailable. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Updated deterministic layout with compact anchor-centered clusters instead of the prior wide tier grid. No local Obsidian screenshot capture was available, so I added automated layout evidence via Evidence from the PR #7 spread fixture:
Validation run:
Keeping PR #7 draft pending visual screenshot confirmation in Obsidian. |
|
Follow-up local Obsidian verification after compact layout update: deployed this branch to the Test vault and force-regenerated |
|
@copilot review |
Code review of the three commits (709223c → 6366d60 → dffe149): typecheck / build / layout:metrics — all pass. Findings1. 2. Empty-graph edge case in 3. Cross-component overlap is possible 4. 5. Double layout application Positive observations
Issues 1 and 4 are the only ones likely to cause visible layout bugs in edge cases; the rest are quality/edge-case notes. |
|
Tested the current PR branch locally in the real Test Obsidian vault after syncing to the latest branch tip and rebuilding/sideloading the plugin. Validation performed:
Result: this is now actually tested in Obsidian, not just checked by metrics. The compact layout is visibly better than the earlier wide PR #7 attempt because it fits in the card without the huge horizontal sprawl. It is still not perfect: labels are small and the clusters could be more readable, so I am keeping the PR in draft unless/until we decide this visual quality is acceptable. |
|
Updated PR #7 with a repeatable semantic-lane layout strategy instead of fan/radial placement. What changed:
Validation:
Screenshot artifact:
Honest screenshot verdict: much better and now genuinely readable in the Obsidian card; not a polished infographic, but good enough for the PR to leave draft in my opinion. I left the PR draft status unchanged for maintainer control. |
|
Blocking preservation fix added and pushed. Commit: What changed:
Validation:
Important behavior: archived/old captures are preserved because installing PR #7 no longer reflows stored sidecars at render time. Only intentional extraction/regeneration writes the new layout into JSON. Screenshot note: I redeployed the build, but the latest OS screenshot attempts produced a black capture artifact, so the prior readable screenshot remains the useful visual artifact. This preservation fix is code/metric validated. |
|
@copilot review |
Code review of eb0416d (semantic lane layout) + 8225e50 (render persistence): typecheck / build / layout:metrics — all pass. All 5 findings from the previous review are addressed:
New findings1. 2. 3. 4. Metrics summary
63.8% width reduction on the horizontal spread fixture. The 20-node fixture fits in the card (fit ≥ 1.0) with zero close pairs and crossings within the 6-crossing gate. The semantically-driven lane assignment is significantly cleaner than the radial slot approach. No blockers. |
|
Layout redesign iteration pushed: 2191fdc Changes:
Validation:
Screenshot: Honest verdict: materially better than the rejected screenshot: no far-right outlier, labels are readable at default fit, and the daily overview now reads as grouped story cards rather than one raw dump. Remaining imperfection: the Visual Notes story still has some dense edge-label overlap in the middle, but weak/cross-domain links are de-emphasized and the overall structure is intentional enough for PR review. |
|
Final layout iteration pushed. What changed:
Validation:
Verdict: this is materially better than the prior fan/lane/outlier versions and good enough for review. |
|
@copilot review |
Code review of 2191fdc (story-cluster redesign) + eb20611 (context node attachment / final polish): typecheck / build / lint / layout:metrics — all pass. All 4 new findings from the previous review are addressed:
New findings1. 2. Layout and renderer story-grouping can diverge 3. 4. Taxi routing with compound nodes may produce edge clipping artifacts Metrics summary
58.2% width reduction on the spread fixture; 17.7% on the 20-node. Both pass all gates. The 20-node fixture is close to three ceilings simultaneously (fit=0.96 vs 0.85 gate, maxEdge=424 vs 430 gate, height=640 vs 660 gate) — a slightly denser real sidecar could stress these. Finding 1 is the only one likely to cause confusion during future changes; findings 2–4 are cosmetic or environmental. No blockers. |
|
Final follow-up after local code review:
The latest validated screenshot remains: |
|
@copilot review latest singleton grouping fix |
Code review of b450241 (singleton story grouping fix): typecheck / build / lint / layout:metrics — all pass. What the fix doesThe old New findings1. No new issues introduced. The Carry-over findings (status unchanged)
No blockers. This is a clean simplification that fixes the reported off-by-one. |
|
MVP renderer recovery update:
Validation run:
|
|
@copilot review |
|
Review follow-up pushed:
|
Code review of 9c3d06f (restore MVP graph rendering) + 428eece (relationship label readability): validate:layout / validate:renderer / build / lint — all pass. Note: Status of previous carry-over findings
New findings1. 2. 3. 4. Fragile string-literal guards persist (unchanged category) Metrics summary
51.8% width reduction on the horizontal spread fixture; zero edge crossings and close pairs on all fixtures. The flat-board optimizer handles both the 12-node Profisee fixture and the 17-node daily fixture without crossings — a significant improvement over the previous story-cluster approach (3 crossings on 20-node, outlier clusters). No blockers. |
Group connected daily overview concepts into stable columns and tiers based on node type, status, and graph degree before writing or rendering sidecars. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace the wide tier-grid layout with anchor-centered radial clusters based on the original hook strategy. Add deterministic layout metrics evidence for PR #7 comparison when screenshots are unavailable. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Shift generated compact layout components into the visible graph canvas so deterministic positions do not clip above or left of the Cytoscape viewport. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace the compact/fan-style positioning with deterministic semantic lanes, balanced rows, crossing optimization, and explicit layout metric gates for card fit/readability. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Stop applying deterministic layout in the renderer so archived captures keep their saved positions. Keep deterministic layout in the extraction/write path for intentional sidecar updates and add a metrics guard for the renderer behavior. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Group daily overview nodes into compact story cards, de-emphasize weak edges, and expand layout metrics to catch readability, outlier, crossing, and edge-length regressions. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Keep weakly related daily-overview context near its strongest story cluster so generated maps avoid detached outliers while preserving saved-position rendering. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Keep single cross-cutting context nodes inside a story-card group so generated overviews do not lose visual grouping when only one singleton is present. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Restore flat sidecar rendering so saved graph nodes and relationships render without synthetic story-card compounds. Keep all relationship labels visible, preserve preset positions, and use an Obsidian-safe delayed viewport fit. Add renderer contract validation for the Profisee MVP fixture and tune compact paint-safe node sizing so all nodes remain visible in Obsidian. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Increase relationship label contrast and size so edge labels remain readable in the Obsidian-rendered concept map while preserving all-node rendering. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Avoid refitting the Cytoscape viewport when Obsidian theme changes only update colors. Container resize still schedules a fit through ResizeObserver. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
9b5183a to
2e62536
Compare
Replace the wide tier-grid layout with anchor-centered radial clusters based on the original hook strategy. Add deterministic layout metrics evidence for PR #7 comparison when screenshots are unavailable. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Summary
Validation
Fixes #2
Remaining risks