fix: add delete/bookmark actions for blueprints in V2 node library sidebar#10827
fix: add delete/bookmark actions for blueprints in V2 node library sidebar#10827
Conversation
🎨 Storybook: ✅ Built — View Storybook |
🎭 Playwright: ✅ 941 passed, 0 failed · 2 flaky📊 Browser Reports
|
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (8)
💤 Files with no reviewable changes (1)
✅ Files skipped from review due to trivial changes (1)
🚧 Files skipped from review as they are similar to previous changes (6)
📝 WalkthroughWalkthroughRefactors favorites/bookmark handling to use the subgraph store directly (adds delete-bookmark UI flow), adds Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant TreeExplorerNode as "TreeExplorerV2Node"
participant TreeExplorer as "TreeExplorerV2"
participant SubgraphStore as "subgraphStore"
User->>TreeExplorerNode: right-click folder
TreeExplorerNode->>TreeExplorer: set contextMenuNode (or clear)
TreeExplorer->>TreeExplorer: render context menu when contextMenuNode.data present
User->>TreeExplorer: click "Delete" (if shown)
TreeExplorer->>SubgraphStore: deleteBlueprint(name)
SubgraphStore-->>TreeExplorer: deletion result
TreeExplorer-->>User: update UI (remove blueprint / refresh)
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Poem
Caution Pre-merge checks failedPlease resolve all errors before merging. Addressing warnings is optional.
❌ Failed checks (1 error, 1 warning)
✅ Passed checks (3 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
📦 Bundle: 5.11 MB gzip 🔴 +231 BDetailsSummary
Category Glance App Entry Points — 22.3 kB (baseline 22.3 kB) • ⚪ 0 BMain entry bundles and manifests
Status: 1 added / 1 removed Graph Workspace — 1.2 MB (baseline 1.2 MB) • ⚪ 0 BGraph editor runtime, canvas, workflow orchestration
Status: 1 added / 1 removed Views & Navigation — 76.6 kB (baseline 76.6 kB) • ⚪ 0 BTop-level views, pages, and routed surfaces
Status: 9 added / 9 removed / 2 unchanged Panels & Settings — 484 kB (baseline 484 kB) • ⚪ 0 BConfiguration panels, inspectors, and settings screens
Status: 10 added / 10 removed / 12 unchanged User & Accounts — 17.1 kB (baseline 17.1 kB) • ⚪ 0 BAuthentication, profile, and account management bundles
Status: 5 added / 5 removed / 2 unchanged Editors & Dialogs — 109 kB (baseline 109 kB) • ⚪ 0 BModals, dialogs, drawers, and in-app editors
Status: 2 added / 2 removed UI Components — 60.3 kB (baseline 60.3 kB) • ⚪ 0 BReusable component library chunks
Status: 5 added / 5 removed / 8 unchanged Data & Services — 2.97 MB (baseline 2.97 MB) • 🔴 +1.93 kBStores, services, APIs, and repositories
Status: 13 added / 13 removed / 4 unchanged Utilities & Hooks — 338 kB (baseline 338 kB) • ⚪ 0 BHelpers, composables, and utility bundles
Status: 13 added / 13 removed / 13 unchanged Vendor & Third-Party — 9.8 MB (baseline 9.8 MB) • ⚪ 0 BExternal libraries and shared vendor chunks Status: 16 unchanged Other — 8.44 MB (baseline 8.44 MB) • ⚪ 0 BBundles that do not match a named category
Status: 55 added / 55 removed / 79 unchanged ⚡ Performance Report
All metrics
Historical variance (last 15 runs)
Trend (last 15 commits on main)
Raw data{
"timestamp": "2026-04-03T16:18:18.847Z",
"gitSha": "08b248d9cbd2e3f3d3e2cad663aaa5eb4869de05",
"branch": "fix/v2-sidebar-blueprint-actions",
"measurements": [
{
"name": "canvas-idle",
"durationMs": 2024.6810000000153,
"styleRecalcs": 10,
"styleRecalcDurationMs": 10.956000000000001,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 407.643,
"heapDeltaBytes": 21028648,
"heapUsedBytes": 63777716,
"domNodes": 20,
"jsHeapTotalBytes": 23068672,
"scriptDurationMs": 28.158,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "canvas-idle",
"durationMs": 2024.926999999991,
"styleRecalcs": 10,
"styleRecalcDurationMs": 10.289,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 438.135,
"heapDeltaBytes": 20380476,
"heapUsedBytes": 63172684,
"domNodes": 20,
"jsHeapTotalBytes": 23068672,
"scriptDurationMs": 29.192000000000004,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "canvas-idle",
"durationMs": 2040.501000000063,
"styleRecalcs": 11,
"styleRecalcDurationMs": 10.13,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 423.05499999999995,
"heapDeltaBytes": 21086772,
"heapUsedBytes": 63809540,
"domNodes": 22,
"jsHeapTotalBytes": 23068672,
"scriptDurationMs": 28.245,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333335,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "canvas-mouse-sweep",
"durationMs": 2105.702000000008,
"styleRecalcs": 84,
"styleRecalcDurationMs": 53.87399999999999,
"layouts": 12,
"layoutDurationMs": 3.863,
"taskDurationMs": 1098.1129999999998,
"heapDeltaBytes": 16252416,
"heapUsedBytes": 59190800,
"domNodes": 66,
"jsHeapTotalBytes": 23068672,
"scriptDurationMs": 155.361,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "canvas-mouse-sweep",
"durationMs": 1827.0640000000071,
"styleRecalcs": 76,
"styleRecalcDurationMs": 41.816,
"layouts": 12,
"layoutDurationMs": 3.5699999999999994,
"taskDurationMs": 815.768,
"heapDeltaBytes": 15982804,
"heapUsedBytes": 58813612,
"domNodes": 61,
"jsHeapTotalBytes": 23592960,
"scriptDurationMs": 142.43200000000002,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "canvas-mouse-sweep",
"durationMs": 2006.5650000000232,
"styleRecalcs": 81,
"styleRecalcDurationMs": 45.573,
"layouts": 12,
"layoutDurationMs": 3.4029999999999996,
"taskDurationMs": 1002.573,
"heapDeltaBytes": 16367208,
"heapUsedBytes": 60170700,
"domNodes": 66,
"jsHeapTotalBytes": 23330816,
"scriptDurationMs": 138.02100000000002,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.699999999999818
},
{
"name": "canvas-zoom-sweep",
"durationMs": 1732.4210000000448,
"styleRecalcs": 32,
"styleRecalcDurationMs": 18.761,
"layouts": 6,
"layoutDurationMs": 0.565,
"taskDurationMs": 366.3190000000001,
"heapDeltaBytes": 24930220,
"heapUsedBytes": 67566968,
"domNodes": 81,
"jsHeapTotalBytes": 19922944,
"scriptDurationMs": 33.207,
"eventListeners": 19,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "canvas-zoom-sweep",
"durationMs": 1755.3819999999973,
"styleRecalcs": 31,
"styleRecalcDurationMs": 20.647000000000006,
"layouts": 6,
"layoutDurationMs": 0.691,
"taskDurationMs": 332.491,
"heapDeltaBytes": 24690532,
"heapUsedBytes": 67512644,
"domNodes": 79,
"jsHeapTotalBytes": 20709376,
"scriptDurationMs": 27.995,
"eventListeners": 19,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "canvas-zoom-sweep",
"durationMs": 1747.6570000000038,
"styleRecalcs": 32,
"styleRecalcDurationMs": 18.775000000000002,
"layouts": 6,
"layoutDurationMs": 0.6219999999999999,
"taskDurationMs": 330.797,
"heapDeltaBytes": 24566564,
"heapUsedBytes": 67516848,
"domNodes": 79,
"jsHeapTotalBytes": 20447232,
"scriptDurationMs": 26.703999999999997,
"eventListeners": 19,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "dom-widget-clipping",
"durationMs": 601.7660000000262,
"styleRecalcs": 13,
"styleRecalcDurationMs": 10.086,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 365.11699999999996,
"heapDeltaBytes": -2522608,
"heapUsedBytes": 49201872,
"domNodes": 22,
"jsHeapTotalBytes": 16515072,
"scriptDurationMs": 67.56700000000001,
"eventListeners": 2,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.799999999999727
},
{
"name": "dom-widget-clipping",
"durationMs": 615.493000000015,
"styleRecalcs": 13,
"styleRecalcDurationMs": 10.966999999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 378.201,
"heapDeltaBytes": 6865496,
"heapUsedBytes": 49345320,
"domNodes": 22,
"jsHeapTotalBytes": 13893632,
"scriptDurationMs": 74.72800000000001,
"eventListeners": 2,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000273
},
{
"name": "dom-widget-clipping",
"durationMs": 577.2640000000138,
"styleRecalcs": 14,
"styleRecalcDurationMs": 10.406999999999998,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 361.104,
"heapDeltaBytes": 6275816,
"heapUsedBytes": 49025724,
"domNodes": 23,
"jsHeapTotalBytes": 13893632,
"scriptDurationMs": 72.274,
"eventListeners": 2,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000273
},
{
"name": "large-graph-idle",
"durationMs": 2055.4160000000084,
"styleRecalcs": 10,
"styleRecalcDurationMs": 9.988,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 589.634,
"heapDeltaBytes": 5232904,
"heapUsedBytes": 55921144,
"domNodes": -259,
"jsHeapTotalBytes": 16183296,
"scriptDurationMs": 108.379,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "large-graph-idle",
"durationMs": 2067.3810000000117,
"styleRecalcs": 12,
"styleRecalcDurationMs": 12.981,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 690.5559999999999,
"heapDeltaBytes": 4855240,
"heapUsedBytes": 55398968,
"domNodes": -257,
"jsHeapTotalBytes": 16183296,
"scriptDurationMs": 126.521,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "large-graph-idle",
"durationMs": 2046.385999999984,
"styleRecalcs": 9,
"styleRecalcDurationMs": 12.196000000000002,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 642.8450000000001,
"heapDeltaBytes": 4585056,
"heapUsedBytes": 55923536,
"domNodes": -257,
"jsHeapTotalBytes": 16183296,
"scriptDurationMs": 117.091,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "large-graph-pan",
"durationMs": 2144.7950000000164,
"styleRecalcs": 69,
"styleRecalcDurationMs": 17.218999999999998,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 1221.942,
"heapDeltaBytes": 18266888,
"heapUsedBytes": 71562444,
"domNodes": -260,
"jsHeapTotalBytes": 17960960,
"scriptDurationMs": 432.924,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "large-graph-pan",
"durationMs": 2154.5919999999796,
"styleRecalcs": 68,
"styleRecalcDurationMs": 16.183000000000003,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 1203.5849999999998,
"heapDeltaBytes": 15063040,
"heapUsedBytes": 68628352,
"domNodes": -263,
"jsHeapTotalBytes": 17698816,
"scriptDurationMs": 439.581,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "large-graph-pan",
"durationMs": 2110.563999999954,
"styleRecalcs": 68,
"styleRecalcDurationMs": 14.790000000000001,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 1099.958,
"heapDeltaBytes": 14350896,
"heapUsedBytes": 67990292,
"domNodes": -262,
"jsHeapTotalBytes": 17960960,
"scriptDurationMs": 384.49999999999994,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "large-graph-zoom",
"durationMs": 3212.9449999999906,
"styleRecalcs": 65,
"styleRecalcDurationMs": 17.575000000000003,
"layouts": 60,
"layoutDurationMs": 7.672999999999999,
"taskDurationMs": 1420.506,
"heapDeltaBytes": 7557208,
"heapUsedBytes": 62580092,
"domNodes": -266,
"jsHeapTotalBytes": 17231872,
"scriptDurationMs": 531.904,
"eventListeners": -123,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.699999999999818
},
{
"name": "large-graph-zoom",
"durationMs": 3161.711999999966,
"styleRecalcs": 64,
"styleRecalcDurationMs": 15.688,
"layouts": 60,
"layoutDurationMs": 8.121,
"taskDurationMs": 1418.838,
"heapDeltaBytes": 11264464,
"heapUsedBytes": 67234568,
"domNodes": -266,
"jsHeapTotalBytes": 17551360,
"scriptDurationMs": 538.6220000000001,
"eventListeners": -125,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "large-graph-zoom",
"durationMs": 3198.863000000074,
"styleRecalcs": 65,
"styleRecalcDurationMs": 15.997999999999998,
"layouts": 60,
"layoutDurationMs": 7.868999999999999,
"taskDurationMs": 1411.427,
"heapDeltaBytes": 1340712,
"heapUsedBytes": 66279540,
"domNodes": -267,
"jsHeapTotalBytes": 13676544,
"scriptDurationMs": 527.403,
"eventListeners": -125,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "minimap-idle",
"durationMs": 2067.310999999961,
"styleRecalcs": 10,
"styleRecalcDurationMs": 10.360999999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 662.5619999999999,
"heapDeltaBytes": 4444348,
"heapUsedBytes": 56816512,
"domNodes": -258,
"jsHeapTotalBytes": 15659008,
"scriptDurationMs": 119.033,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "minimap-idle",
"durationMs": 2034.5519999999624,
"styleRecalcs": 10,
"styleRecalcDurationMs": 10.076000000000002,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 596.89,
"heapDeltaBytes": 4201056,
"heapUsedBytes": 56519792,
"domNodes": -260,
"jsHeapTotalBytes": 16707584,
"scriptDurationMs": 113.256,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "minimap-idle",
"durationMs": 2028.1589999999596,
"styleRecalcs": 8,
"styleRecalcDurationMs": 9.843000000000002,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 625.027,
"heapDeltaBytes": 2728960,
"heapUsedBytes": 56813960,
"domNodes": -264,
"jsHeapTotalBytes": 15134720,
"scriptDurationMs": 109.8,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "subgraph-dom-widget-clipping",
"durationMs": 570.2770000000328,
"styleRecalcs": 47,
"styleRecalcDurationMs": 11.148000000000001,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 376.07899999999995,
"heapDeltaBytes": 6194436,
"heapUsedBytes": 49262560,
"domNodes": 20,
"jsHeapTotalBytes": 13631488,
"scriptDurationMs": 127.70500000000001,
"eventListeners": 8,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.799999999999727
},
{
"name": "subgraph-dom-widget-clipping",
"durationMs": 562.7910000000043,
"styleRecalcs": 47,
"styleRecalcDurationMs": 11.751999999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 362.404,
"heapDeltaBytes": 6534156,
"heapUsedBytes": 49678216,
"domNodes": 20,
"jsHeapTotalBytes": 13107200,
"scriptDurationMs": 130.121,
"eventListeners": 8,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.799999999999727
},
{
"name": "subgraph-dom-widget-clipping",
"durationMs": 625.9539999999788,
"styleRecalcs": 49,
"styleRecalcDurationMs": 17.148000000000003,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 412.272,
"heapDeltaBytes": -2208932,
"heapUsedBytes": 49102244,
"domNodes": 23,
"jsHeapTotalBytes": 15204352,
"scriptDurationMs": 134.31799999999998,
"eventListeners": 8,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "subgraph-idle",
"durationMs": 2007.5630000000046,
"styleRecalcs": 11,
"styleRecalcDurationMs": 11.633,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 374.55800000000005,
"heapDeltaBytes": 20974292,
"heapUsedBytes": 63946260,
"domNodes": 22,
"jsHeapTotalBytes": 22806528,
"scriptDurationMs": 20.662000000000006,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "subgraph-idle",
"durationMs": 2009.866000000045,
"styleRecalcs": 9,
"styleRecalcDurationMs": 9.912999999999998,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 422.449,
"heapDeltaBytes": -4871652,
"heapUsedBytes": 44538812,
"domNodes": 18,
"jsHeapTotalBytes": 24379392,
"scriptDurationMs": 22.691999999999997,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "subgraph-idle",
"durationMs": 2007.0530000000417,
"styleRecalcs": 11,
"styleRecalcDurationMs": 10.245999999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 411.40200000000004,
"heapDeltaBytes": 19963544,
"heapUsedBytes": 62966004,
"domNodes": 21,
"jsHeapTotalBytes": 23068672,
"scriptDurationMs": 24.581,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "subgraph-mouse-sweep",
"durationMs": 1976.2920000000008,
"styleRecalcs": 85,
"styleRecalcDurationMs": 48.193,
"layouts": 16,
"layoutDurationMs": 5.026,
"taskDurationMs": 925.4959999999999,
"heapDeltaBytes": 11813936,
"heapUsedBytes": 55049764,
"domNodes": 73,
"jsHeapTotalBytes": 22544384,
"scriptDurationMs": 105.078,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "subgraph-mouse-sweep",
"durationMs": 1693.9429999999902,
"styleRecalcs": 76,
"styleRecalcDurationMs": 37.830999999999996,
"layouts": 16,
"layoutDurationMs": 4.649,
"taskDurationMs": 698.221,
"heapDeltaBytes": 11779292,
"heapUsedBytes": 54916896,
"domNodes": 63,
"jsHeapTotalBytes": 22806528,
"scriptDurationMs": 102.873,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.670000000000012,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "subgraph-mouse-sweep",
"durationMs": 1985.61200000006,
"styleRecalcs": 84,
"styleRecalcDurationMs": 47.563,
"layouts": 16,
"layoutDurationMs": 5.212000000000001,
"taskDurationMs": 977.878,
"heapDeltaBytes": 11839092,
"heapUsedBytes": 55016388,
"domNodes": 72,
"jsHeapTotalBytes": 22544384,
"scriptDurationMs": 113.046,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "viewport-pan-sweep",
"durationMs": 8266.052000000001,
"styleRecalcs": 252,
"styleRecalcDurationMs": 45.858,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 4021.718,
"heapDeltaBytes": 25925176,
"heapUsedBytes": 76767596,
"domNodes": -255,
"jsHeapTotalBytes": 19533824,
"scriptDurationMs": 1317.8500000000001,
"eventListeners": -107,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "viewport-pan-sweep",
"durationMs": 8222.844000000008,
"styleRecalcs": 251,
"styleRecalcDurationMs": 45.623000000000005,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 4011.729,
"heapDeltaBytes": 20584828,
"heapUsedBytes": 71311032,
"domNodes": -256,
"jsHeapTotalBytes": 19271680,
"scriptDurationMs": 1325.958,
"eventListeners": -111,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.670000000000012,
"p95FrameDurationMs": 16.80000000000109
},
{
"name": "viewport-pan-sweep",
"durationMs": 8195.950999999923,
"styleRecalcs": 252,
"styleRecalcDurationMs": 45.13699999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 4203.048,
"heapDeltaBytes": 25801268,
"heapUsedBytes": 76445156,
"domNodes": -255,
"jsHeapTotalBytes": 24514560,
"scriptDurationMs": 1471.6039999999998,
"eventListeners": -107,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.669999999999952,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "vue-large-graph-idle",
"durationMs": 12350.535000000036,
"styleRecalcs": 0,
"styleRecalcDurationMs": 0,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 12339.923999999999,
"heapDeltaBytes": -50575132,
"heapUsedBytes": 159981888,
"domNodes": -8331,
"jsHeapTotalBytes": 18964480,
"scriptDurationMs": 580.2479999999999,
"eventListeners": -16464,
"totalBlockingTimeMs": 0,
"frameDurationMs": 17.223333333333358,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "vue-large-graph-idle",
"durationMs": 12609.181999999975,
"styleRecalcs": 0,
"styleRecalcDurationMs": 0,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 12591.024000000001,
"heapDeltaBytes": -24168032,
"heapUsedBytes": 167543832,
"domNodes": -8331,
"jsHeapTotalBytes": -16424960,
"scriptDurationMs": 628.8689999999999,
"eventListeners": -16488,
"totalBlockingTimeMs": 0,
"frameDurationMs": 17.223333333333358,
"p95FrameDurationMs": 16.80000000000291
},
{
"name": "vue-large-graph-idle",
"durationMs": 12588.753999999994,
"styleRecalcs": 0,
"styleRecalcDurationMs": 0,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 12574.241,
"heapDeltaBytes": -30526356,
"heapUsedBytes": 165988396,
"domNodes": -8331,
"jsHeapTotalBytes": 28925952,
"scriptDurationMs": 645.06,
"eventListeners": -16466,
"totalBlockingTimeMs": 0,
"frameDurationMs": 17.219999999999953,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "vue-large-graph-pan",
"durationMs": 14890.265999999996,
"styleRecalcs": 71,
"styleRecalcDurationMs": 15.39199999999996,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 14863.636,
"heapDeltaBytes": -63645264,
"heapUsedBytes": 148079636,
"domNodes": -8333,
"jsHeapTotalBytes": -4366336,
"scriptDurationMs": 881.0120000000001,
"eventListeners": -16462,
"totalBlockingTimeMs": 0,
"frameDurationMs": 17.223333333333358,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "vue-large-graph-pan",
"durationMs": 14522.65499999993,
"styleRecalcs": 66,
"styleRecalcDurationMs": 15.12800000000003,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 14498.303999999998,
"heapDeltaBytes": -36206888,
"heapUsedBytes": 172061084,
"domNodes": -8331,
"jsHeapTotalBytes": -12840960,
"scriptDurationMs": 906.8510000000001,
"eventListeners": -16453,
"totalBlockingTimeMs": 0,
"frameDurationMs": 17.776666666666642,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "vue-large-graph-pan",
"durationMs": 14577.268000000004,
"styleRecalcs": 66,
"styleRecalcDurationMs": 17.47399999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 14555.081000000002,
"heapDeltaBytes": -33464256,
"heapUsedBytes": 160056288,
"domNodes": -8330,
"jsHeapTotalBytes": -3665920,
"scriptDurationMs": 891.2729999999999,
"eventListeners": -16458,
"totalBlockingTimeMs": 35,
"frameDurationMs": 17.776666666666642,
"p95FrameDurationMs": 16.80000000000291
},
{
"name": "workflow-execution",
"durationMs": 476.08999999999924,
"styleRecalcs": 22,
"styleRecalcDurationMs": 25.938,
"layouts": 6,
"layoutDurationMs": 2.0010000000000003,
"taskDurationMs": 146.48099999999997,
"heapDeltaBytes": 4831792,
"heapUsedBytes": 55103900,
"domNodes": 190,
"jsHeapTotalBytes": 262144,
"scriptDurationMs": 32.98,
"eventListeners": 71,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000273
},
{
"name": "workflow-execution",
"durationMs": 459.3919999999798,
"styleRecalcs": 17,
"styleRecalcDurationMs": 23.075,
"layouts": 5,
"layoutDurationMs": 1.4969999999999999,
"taskDurationMs": 128.761,
"heapDeltaBytes": 4513600,
"heapUsedBytes": 48259868,
"domNodes": 158,
"jsHeapTotalBytes": 0,
"scriptDurationMs": 30.192000000000004,
"eventListeners": 71,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.663333333333338,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "workflow-execution",
"durationMs": 450.9680000001026,
"styleRecalcs": 18,
"styleRecalcDurationMs": 24.39,
"layouts": 5,
"layoutDurationMs": 1.387,
"taskDurationMs": 125.35200000000002,
"heapDeltaBytes": 4513788,
"heapUsedBytes": 49160228,
"domNodes": 157,
"jsHeapTotalBytes": 262144,
"scriptDurationMs": 31.013999999999992,
"eventListeners": 71,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.669999999999998,
"p95FrameDurationMs": 16.799999999999727
}
]
} |
5fd0b9b to
ad00410
Compare
| const ACTION_BTN_CLASS = | ||
| 'flex size-6 shrink-0 cursor-pointer items-center justify-center rounded-sm border-none bg-transparent opacity-0 group-hover/tree-node:opacity-100 hover:text-foreground' | ||
|
|
There was a problem hiding this comment.
question: The bookmark button grew from size-4 (16px) to size-6 (24px). If intentional for better touch targets, that's fine — but it's a visual regression for the existing bookmark button, not just the new delete button. Worth confirming this is desired (the node row is py-2, so 24px buttons may feel cramped or oversized depending on the design spec).
There was a problem hiding this comment.
make senses. updated it back to size-4
| function isUserBlueprint(nodeType?: string): boolean { | ||
| if (!nodeType?.startsWith(typePrefix)) return false | ||
| return !isGlobalBlueprint(nodeType.slice(typePrefix.length)) | ||
| } | ||
|
|
There was a problem hiding this comment.
This returns true for any nodeType starting with "SubgraphBlueprint." that isn't in blueprintNodes as a global. If a node somehow has that prefix but isn't loaded into subgraphCache, clicking delete would throw "not yet loaded"(line 399 of subgraphStore.ts). The V1 code (NodeTreeLeaf.vue:134-139) had the identical logic inline, so this isn't a regression — but since you're extracting it to a shared helper, consider adding a positive existence check
| openai: '#B6B6B6', | ||
| pixverse: ['#B465E6', '#E8632A'], | ||
| 'quiver-ai': '#B6B6B6', | ||
| quiver: '#B6B6B6', |
There was a problem hiding this comment.
nit: The quiver-ai → quiver rename is unrelated to the blueprint actions fix. Consider splitting into a separate commit or PR to keep the diff focused and bisectable.
There was a problem hiding this comment.
split to another commit
| }) | ||
| }) | ||
|
|
||
| expect(wrapper.find('[aria-label="g.delete"]').exists()).toBe(true) |
There was a problem hiding this comment.
Issue: This asserts against the raw i18n key (g.delete) since the test environment returns keys verbatim. It works, but if the i18n key is ever renamed the test will silently stop matching. Consider adding a constant or test helper if this pattern proliferates. Not blocking — just a note for maintainability.
…debar - Add delete button and context menu delete option for user blueprints in TreeExplorerV2Node and TreeExplorerV2 - Extract isUserBlueprint() helper in subgraphStore for DRY usage across V1/V2 sidebars - Fix stale context menu data when right-clicking folders - Enable context menu in BlueprintsPanel - Remove unused edit button and addToFavorites emit - Refactor NodeTreeLeaf to use shared isUserBlueprint helper
- Rename quiver-ai.svg icon to quiver.svg - Update provider color key in categoryUtil - Update CSS safelist in style.css
ad00410 to
3876d45
Compare
Summary
Add missing delete and bookmark actions for user blueprints in the V2 node library sidebar, fixing parity with the V1 sidebar.
Changes
TreeExplorerV2NodeandTreeExplorerV2isUserBlueprint()helper insubgraphStorefor DRY usage across V1/V2 sidebarsReview Focus
isUserBlueprintconsolidates logic previously duplicated betweenNodeTreeLeafand the new V2 componentscontextMenuNode?.dataprevents showing empty menus@contextmenuhandler clears stalecontextMenuNodeto prevent wrong actions┆Issue is synchronized with this Notion page by Unito