Repository navigation
refactor(dashboard): decommission the Graph view (Vue Flow node canvas) (#1689) - #1701
Merged
Merged
Conversation
…s) (#1689) The dashboard's Grid (magnetic tile canvas) and Timeline (default) modes cover fleet-overview needs; the legacy Graph mode was a parallel Vue Flow render path (drag/positions, fit-view, reset-layout) plus four @vue-flow/* deps that no longer earned their upkeep. Dashboard.vue: - Mode toggle offers only Grid / Timeline; removed the graph canvas block (VueFlow + Background/Controls/MiniMap + AgentNode/SystemAgentNode + the TagClouds viewport layer + the collaboration-history button/panel), the graph-only Reset Layout button, the Tag Clouds toggle, the on-load fitView, resetLayout/onNodeDragStop handlers, useVueFlow(), and all vue-flow CSS + style/CSS imports. Timeline/Grid shared state (header stats, quick-tag filter, gridAgents, nodes) preserved. network.js: - 'graph' removed from VIEW_MODES (now ['grid','timeline']); a persisted 'graph' preference degrades to the default (timeline) via the existing VIEW_MODES.includes() guard at init AND setViewMode's fallback (was 'graph' → now 'timeline'). setReplayMode's non-timeline target → 'grid'. - Removed node-position persistence (nodePositions ref, saveNodePositions, loadNodePositions, resetNodePositions, onNodeDragStop + their exports). The `nodes` computed STAYS — Timeline builds its lane tiles from node.data (display_label, is_system, autonomy, avatar); only the graph-only position/draggable persistence is gone (positions default, unrendered). Deletions + deps: - Deleted components/AgentNode.vue, SystemAgentNode.vue, TagClouds.vue (Graph was their only consumer — verified no other importer). - Removed all four @vue-flow/* from package.json; regenerated package-lock.json (--package-lock-only) so npm ci stays consistent. Tests + docs: - Updated the frontend e2e (dashboard-grid-view.spec.js): the graph-mode step is gone; the smoke test now asserts Grid↔Timeline coexistence. - architecture.md (dropped the Vue Flow tech-stack entry; dashboard modes now Grid/Timeline; rewrote the stale "Collaboration Dashboard" entry that named a non-existent AgentCollaboration.vue) + the dashboard-grid-view feature flow. All touched SFCs compile via @vue/compiler-sfc; network.js passes node --check; no @vue-flow import remains anywhere (package.json + lockfile both clean). Verified live: dashboard 200, VIEW_MODES=['grid','timeline'] served, 0 graph imports in the Vite-transformed Dashboard. Related to #1689
vybe
approved these changes
Jul 20, 2026
vybe
left a comment
Contributor
There was a problem hiding this comment.
Validated via /validate-pr: grepped the head branch for every dangling reference — zero hits for AgentNode/SystemAgentNode/TagClouds, the removed store functions (saveNodePositions/loadNodePositions/resetNodePositions/onNodeDragStop), any @vue-flow/* import, and any remaining 'graph' literal. Stale localStorage['trinity-dashboard-view'] = 'graph' degrades to timeline via the VIEW_MODES.includes() guard, and the invalid-mode fallback in setViewMode moved off 'graph'. e2e green. All ACs met.
Minor (non-blocking, follow-up): getNodeColor() in Dashboard.vue is now dead — its only consumer was the Vue Flow MiniMap.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Removes the dashboard's Graph mode (the legacy Vue Flow node canvas). Grid (magnetic tile canvas) and Timeline (default) cover fleet overview; Graph was a parallel render path (drag/positions, fit-view, reset-layout) plus four
@vue-flow/*deps that no longer earned their upkeep.Acceptance criteria — all met
viewMode === 'graph'branches removed fromDashboard.vue(graph canvas, graph-only Reset Layout button, on-load fitView).'graph'removed fromVIEW_MODESinnetwork.js; node-position persistence removed (nodePositions, save/load/reset,onNodeDragStop+ exports).setViewMode's invalid-mode fallback flipped'graph'→'timeline'. Shared state (working state, circuit-breaker map, thenodescomputed Timeline consumes) preserved.'graph'preference degrades gracefully to the default — theVIEW_MODES.includes()guard at init and insetViewModeboth route it totimeline(no error, no blank canvas).AgentNode.vue+SystemAgentNode.vuedeleted (Graph was their only consumer — verified). Also deletedTagClouds.vue(the graph-canvas viewport tag-cloud layer, likewise orphaned).@vue-flow/*removed frompackage.json;package-lock.jsonregenerated sonpm cistays consistent. No@vue-flowimport remains anywhere.dashboard-grid-view.spec.js): the graph-mode assertions are gone; the smoke test now covers Grid↔Timeline coexistence.architecture.md(dropped the Vue Flow tech-stack entry; dashboard modes now Grid/Timeline; rewrote the stale "Collaboration Dashboard" entry, which named a non-existentAgentCollaboration.vue) + the dashboard-grid-view feature flow.Notes
ReplayTimelinestays (Timeline-mode replay, explicitly out of scope). It builds its lane tiles from the sharednodescomputed'snode.data(display_label, is_system, autonomy, avatar) — so thenodesmachinery is kept; only the graph-onlyposition/draggablepersistence is removed (positions default, unrendered).agent_collaborationWS events) still flows and feeds Timeline — only the Vue Flow node-graph rendering is gone.Verification
All touched SFCs compile via
@vue/compiler-sfc;network.jspassesnode --check; grep confirms 0@vue-flowimports (package.json + lockfile both clean). Verified against the live stack: dashboard returns 200, the Vite-servednetwork.jsshowsVIEW_MODES = ['grid', 'timeline'], and the Vite-transformedDashboard.vuehas 0 graph imports.(Frontend build/e2e run in CI —
node_moduleshere is root-owned from the Docker build, sonpm ci+ the Playwright suite are the mechanical gate.)Related to #1689
🤖 Generated with Claude Code
Fixes #1689