feat: set default Tab keybinding for Toggle Search Box#12982
feat: set default Tab keybinding for Toggle Search Box#12982PabloWiedemann wants to merge 2 commits into
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
✅ Files skipped from review due to trivial changes (1)
📝 WalkthroughWalkthroughA single new entry is added to the ChangesTab keybinding for SearchBox toggle
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~2 minutes Poem
🚥 Pre-merge checks | ✅ 7✅ Passed checks (7 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ 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 |
🎨 Storybook: ✅ Built — View Storybook🎭 Playwright: ✅ 1664 passed, 0 failed · 5 flaky📊 Browser Reports
📦 Bundle: 7.45 MB gzip 🔴 +49 BDetailsSummary
Category Glance App Entry Points — 46.7 kB (baseline 46.7 kB) • ⚪ 0 BMain entry bundles and manifests
Status: 1 added / 1 removed Graph Workspace — 1.25 MB (baseline 1.25 MB) • ⚪ 0 BGraph editor runtime, canvas, workflow orchestration
Status: 1 added / 1 removed Views & Navigation — 95.3 kB (baseline 95.3 kB) • ⚪ 0 BTop-level views, pages, and routed surfaces
Status: 9 added / 9 removed / 3 unchanged Panels & Settings — 525 kB (baseline 525 kB) • ⚪ 0 BConfiguration panels, inspectors, and settings screens
Status: 11 added / 11 removed / 15 unchanged User & Accounts — 19.9 kB (baseline 19.9 kB) • ⚪ 0 BAuthentication, profile, and account management bundles
Status: 6 added / 6 removed / 3 unchanged Editors & Dialogs — 112 kB (baseline 112 kB) • ⚪ 0 BModals, dialogs, drawers, and in-app editors
Status: 4 added / 4 removed / 1 unchanged UI Components — 57.2 kB (baseline 57.2 kB) • ⚪ 0 BReusable component library chunks
Status: 5 added / 5 removed / 8 unchanged Data & Services — 268 kB (baseline 268 kB) • 🔴 +119 BStores, services, APIs, and repositories
Status: 13 added / 13 removed / 3 unchanged Utilities & Hooks — 3.32 MB (baseline 3.32 MB) • ⚪ 0 BHelpers, composables, and utility bundles
Status: 14 added / 14 removed / 16 unchanged Vendor & Third-Party — 15.3 MB (baseline 15.3 MB) • ⚪ 0 BExternal libraries and shared vendor chunks Status: 16 unchanged Other — 10.4 MB (baseline 10.4 MB) • ⚪ 0 BBundles that do not match a named category
Status: 62 added / 62 removed / 89 unchanged ⚡ Performance Report
Show regressions
All metrics
Historical variance (last 15 runs)
Trend (last 15 commits on main)
Raw data{
"timestamp": "2026-06-19T15:47:16.856Z",
"gitSha": "91cb3da0d6e0a49ed66bd5bd1cc67eff94488c3a",
"branch": "feat/default-search-box-tab-keybinding",
"measurements": [
{
"name": "canvas-idle",
"durationMs": 2030.2540000000135,
"styleRecalcs": 8,
"styleRecalcDurationMs": 5.701000000000001,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 339.395,
"heapDeltaBytes": -2449296,
"heapUsedBytes": 56291088,
"domNodes": 16,
"jsHeapTotalBytes": 25952256,
"scriptDurationMs": 14.329999999999998,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "canvas-idle",
"durationMs": 2021.255999999994,
"styleRecalcs": 10,
"styleRecalcDurationMs": 7.708999999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 361.508,
"heapDeltaBytes": -1905036,
"heapUsedBytes": 56477908,
"domNodes": 20,
"jsHeapTotalBytes": 24379392,
"scriptDurationMs": 20.4,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "canvas-mouse-sweep",
"durationMs": 1975.4420000000437,
"styleRecalcs": 77,
"styleRecalcDurationMs": 43.135,
"layouts": 12,
"layoutDurationMs": 4.382,
"taskDurationMs": 868.352,
"heapDeltaBytes": -2757464,
"heapUsedBytes": 61192608,
"domNodes": 60,
"jsHeapTotalBytes": 24641536,
"scriptDurationMs": 120.281,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "canvas-mouse-sweep",
"durationMs": 1753.8659999999027,
"styleRecalcs": 74,
"styleRecalcDurationMs": 32.65,
"layouts": 12,
"layoutDurationMs": 3.3890000000000002,
"taskDurationMs": 713.337,
"heapDeltaBytes": -7200380,
"heapUsedBytes": 51328736,
"domNodes": 57,
"jsHeapTotalBytes": 25427968,
"scriptDurationMs": 111.47,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "canvas-zoom-sweep",
"durationMs": 1752.4050000000102,
"styleRecalcs": 32,
"styleRecalcDurationMs": 18.651,
"layouts": 6,
"layoutDurationMs": 0.7050000000000001,
"taskDurationMs": 392.227,
"heapDeltaBytes": -5103664,
"heapUsedBytes": 46737344,
"domNodes": -268,
"jsHeapTotalBytes": 17166336,
"scriptDurationMs": 27.283,
"eventListeners": -186,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.699999999999818
},
{
"name": "canvas-zoom-sweep",
"durationMs": 1732.7470000000176,
"styleRecalcs": 30,
"styleRecalcDurationMs": 18.447000000000003,
"layouts": 6,
"layoutDurationMs": 0.689,
"taskDurationMs": 300.183,
"heapDeltaBytes": 4140284,
"heapUsedBytes": 60213944,
"domNodes": 77,
"jsHeapTotalBytes": 19398656,
"scriptDurationMs": 17.856,
"eventListeners": 19,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333335,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "dom-widget-clipping",
"durationMs": 558.072999999979,
"styleRecalcs": 12,
"styleRecalcDurationMs": 7.4559999999999995,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 332.885,
"heapDeltaBytes": 7655528,
"heapUsedBytes": 66268788,
"domNodes": 20,
"jsHeapTotalBytes": 18874368,
"scriptDurationMs": 58.39900000000001,
"eventListeners": 0,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333335,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "dom-widget-clipping",
"durationMs": 550.7080000000997,
"styleRecalcs": 11,
"styleRecalcDurationMs": 6.4239999999999995,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 325.372,
"heapDeltaBytes": 6869488,
"heapUsedBytes": 65686040,
"domNodes": 18,
"jsHeapTotalBytes": 18874368,
"scriptDurationMs": 53.667,
"eventListeners": 0,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66666666666665,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "large-graph-idle",
"durationMs": 1994.3830000000276,
"styleRecalcs": 10,
"styleRecalcDurationMs": 8.604000000000001,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 485.86400000000003,
"heapDeltaBytes": 12623368,
"heapUsedBytes": 71953168,
"domNodes": 20,
"jsHeapTotalBytes": 13950976,
"scriptDurationMs": 81.14500000000001,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "large-graph-idle",
"durationMs": 1994.4750000000795,
"styleRecalcs": 10,
"styleRecalcDurationMs": 8.311,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 496.86199999999997,
"heapDeltaBytes": -8079048,
"heapUsedBytes": 62158740,
"domNodes": 20,
"jsHeapTotalBytes": 12726272,
"scriptDurationMs": 79.502,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "large-graph-pan",
"durationMs": 2119.3489999999997,
"styleRecalcs": 70,
"styleRecalcDurationMs": 19.890000000000004,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 989.3299999999999,
"heapDeltaBytes": 9734852,
"heapUsedBytes": 82218320,
"domNodes": 20,
"jsHeapTotalBytes": 11591680,
"scriptDurationMs": 347.89699999999993,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "large-graph-pan",
"durationMs": 2123.4610000000202,
"styleRecalcs": 68,
"styleRecalcDurationMs": 18.390000000000004,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 1019.3780000000002,
"heapDeltaBytes": -2584364,
"heapUsedBytes": 59668984,
"domNodes": -265,
"jsHeapTotalBytes": 5722112,
"scriptDurationMs": 351.711,
"eventListeners": -130,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.699999999999818
},
{
"name": "large-graph-zoom",
"durationMs": 3154.830000000004,
"styleRecalcs": 67,
"styleRecalcDurationMs": 20.09,
"layouts": 60,
"layoutDurationMs": 8.164000000000001,
"taskDurationMs": 1274.73,
"heapDeltaBytes": 15983324,
"heapUsedBytes": 70902768,
"domNodes": 16,
"jsHeapTotalBytes": 7340032,
"scriptDurationMs": 476.242,
"eventListeners": 8,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "large-graph-zoom",
"durationMs": 3048.534000000018,
"styleRecalcs": 65,
"styleRecalcDurationMs": 19.287000000000003,
"layouts": 60,
"layoutDurationMs": 8.408000000000001,
"taskDurationMs": 1251.317,
"heapDeltaBytes": -6569024,
"heapUsedBytes": 67746708,
"domNodes": 14,
"jsHeapTotalBytes": 10104832,
"scriptDurationMs": 465.313,
"eventListeners": 8,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "minimap-idle",
"durationMs": 1991.3080000000036,
"styleRecalcs": 9,
"styleRecalcDurationMs": 7.443999999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 469.88100000000003,
"heapDeltaBytes": -9360096,
"heapUsedBytes": 64409124,
"domNodes": 18,
"jsHeapTotalBytes": 7221248,
"scriptDurationMs": 74.034,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "minimap-idle",
"durationMs": 2007.0080000000416,
"styleRecalcs": 9,
"styleRecalcDurationMs": 6.830000000000001,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 475.753,
"heapDeltaBytes": -9033180,
"heapUsedBytes": 64356628,
"domNodes": 18,
"jsHeapTotalBytes": 7745536,
"scriptDurationMs": 75.71399999999998,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "subgraph-dom-widget-clipping",
"durationMs": 545.4179999999837,
"styleRecalcs": 47,
"styleRecalcDurationMs": 10.559000000000001,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 359.217,
"heapDeltaBytes": 7780004,
"heapUsedBytes": 66439816,
"domNodes": 20,
"jsHeapTotalBytes": 19398656,
"scriptDurationMs": 129.20700000000002,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000273
},
{
"name": "subgraph-dom-widget-clipping",
"durationMs": 566.4860000000544,
"styleRecalcs": 49,
"styleRecalcDurationMs": 11.690999999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 351.89000000000004,
"heapDeltaBytes": 7999912,
"heapUsedBytes": 66719184,
"domNodes": 24,
"jsHeapTotalBytes": 19398656,
"scriptDurationMs": 119.703,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "subgraph-idle",
"durationMs": 2028.855999999962,
"styleRecalcs": 10,
"styleRecalcDurationMs": 7.872000000000001,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 385.11,
"heapDeltaBytes": 8728480,
"heapUsedBytes": 62556128,
"domNodes": -302,
"jsHeapTotalBytes": 16953344,
"scriptDurationMs": 12.656999999999998,
"eventListeners": -199,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "subgraph-idle",
"durationMs": 2025.7990000000063,
"styleRecalcs": 10,
"styleRecalcDurationMs": 8.827,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 356.492,
"heapDeltaBytes": -2158600,
"heapUsedBytes": 56509012,
"domNodes": 20,
"jsHeapTotalBytes": 26214400,
"scriptDurationMs": 17,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "subgraph-mouse-sweep",
"durationMs": 1682.0569999999861,
"styleRecalcs": 76,
"styleRecalcDurationMs": 33.274,
"layouts": 16,
"layoutDurationMs": 3.7240000000000006,
"taskDurationMs": 604.218,
"heapDeltaBytes": -10821072,
"heapUsedBytes": 47857796,
"domNodes": 65,
"jsHeapTotalBytes": 25427968,
"scriptDurationMs": 79.37700000000001,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.670000000000012,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "subgraph-mouse-sweep",
"durationMs": 1704.4559999999365,
"styleRecalcs": 76,
"styleRecalcDurationMs": 33.823,
"layouts": 16,
"layoutDurationMs": 4.213000000000001,
"taskDurationMs": 629.165,
"heapDeltaBytes": -11148128,
"heapUsedBytes": 47659416,
"domNodes": 62,
"jsHeapTotalBytes": 27262976,
"scriptDurationMs": 82.20100000000001,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "subgraph-transition-enter",
"durationMs": 916.6480000000092,
"styleRecalcs": 18,
"styleRecalcDurationMs": 27.050000000000004,
"layouts": 5,
"layoutDurationMs": 12.322000000000001,
"taskDurationMs": 713.9899999999999,
"heapDeltaBytes": 4414928,
"heapUsedBytes": 80034860,
"domNodes": 13833,
"jsHeapTotalBytes": 17563648,
"scriptDurationMs": 26.700000000000003,
"eventListeners": 2527,
"totalBlockingTimeMs": 141,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "viewport-pan-sweep",
"durationMs": 8131.410999999957,
"styleRecalcs": 250,
"styleRecalcDurationMs": 54.448,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 3491.8740000000003,
"heapDeltaBytes": -17626668,
"heapUsedBytes": 65672096,
"domNodes": -273,
"jsHeapTotalBytes": 7122944,
"scriptDurationMs": 1116.078,
"eventListeners": -179,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "viewport-pan-sweep",
"durationMs": 8138.487999999938,
"styleRecalcs": 250,
"styleRecalcDurationMs": 56.181999999999995,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 3492.842,
"heapDeltaBytes": -4092812,
"heapUsedBytes": 68143152,
"domNodes": 20,
"jsHeapTotalBytes": 16310272,
"scriptDurationMs": 1133.893,
"eventListeners": 20,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "vue-large-graph-idle",
"durationMs": 13055.408,
"styleRecalcs": 0,
"styleRecalcDurationMs": 0,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 13020.109,
"heapDeltaBytes": -25184240,
"heapUsedBytes": 178006612,
"domNodes": -3304,
"jsHeapTotalBytes": 17010688,
"scriptDurationMs": 604.5010000000001,
"eventListeners": -16476,
"totalBlockingTimeMs": 0,
"frameDurationMs": 17.219999999999953,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "vue-large-graph-idle",
"durationMs": 13107.752000000004,
"styleRecalcs": 0,
"styleRecalcDurationMs": 0,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 13091.594,
"heapDeltaBytes": -26666420,
"heapUsedBytes": 177106260,
"domNodes": -3306,
"jsHeapTotalBytes": 18845696,
"scriptDurationMs": 546.412,
"eventListeners": -16472,
"totalBlockingTimeMs": 0,
"frameDurationMs": 17.776666666666763,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "vue-large-graph-pan",
"durationMs": 15596.389999999928,
"styleRecalcs": 79,
"styleRecalcDurationMs": 19.74899999999996,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 15572.537,
"heapDeltaBytes": -29927056,
"heapUsedBytes": 181674392,
"domNodes": -3310,
"jsHeapTotalBytes": 16400384,
"scriptDurationMs": 905.249,
"eventListeners": -16468,
"totalBlockingTimeMs": 62,
"frameDurationMs": 17.77333333333336,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "vue-large-graph-pan",
"durationMs": 15442.037000000028,
"styleRecalcs": 78,
"styleRecalcDurationMs": 20.02799999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 15423.034999999998,
"heapDeltaBytes": -30348160,
"heapUsedBytes": 177742828,
"domNodes": -27,
"jsHeapTotalBytes": 17711104,
"scriptDurationMs": 846.179,
"eventListeners": -16470,
"totalBlockingTimeMs": 42,
"frameDurationMs": 17.223333333333358,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "workflow-execution",
"durationMs": 447.9750000000422,
"styleRecalcs": 19,
"styleRecalcDurationMs": 22.197999999999997,
"layouts": 4,
"layoutDurationMs": 1.2619999999999998,
"taskDurationMs": 113.195,
"heapDeltaBytes": 5456508,
"heapUsedBytes": 65155716,
"domNodes": 172,
"jsHeapTotalBytes": 3407872,
"scriptDurationMs": 19.541000000000004,
"eventListeners": 69,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "workflow-execution",
"durationMs": 457.70599999991646,
"styleRecalcs": 17,
"styleRecalcDurationMs": 21.121000000000002,
"layouts": 4,
"layoutDurationMs": 1.107,
"taskDurationMs": 113.368,
"heapDeltaBytes": 5230260,
"heapUsedBytes": 64893944,
"domNodes": 157,
"jsHeapTotalBytes": 2883584,
"scriptDurationMs": 21.933,
"eventListeners": 69,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66999999999998,
"p95FrameDurationMs": 16.799999999999727
}
]
} |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/platform/keybindings/defaults.ts`:
- Around line 39-44: The keybinding in the defaults.ts file that maps the Tab
key to Workspace.SearchBox.Toggle breaks keyboard accessibility by preventing
Tab navigation between UI controls. Fix this by either changing the key
combination to something that doesn't conflict with standard keyboard navigation
(such as Ctrl+Tab or a single letter key), or by adding a targetElementId
property to scope the keybinding to a specific canvas container context (e.g.,
targetElementId: 'graph-canvas-container') so Tab only triggers the search box
when focus is within the canvas, not on buttons, links, or other interactive
elements.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: c03f8cd8-af3a-443c-92d8-67628200497c
📒 Files selected for processing (1)
src/platform/keybindings/defaults.ts
Codecov Report✅ All modified and coverable lines are covered by tests. @@ Coverage Diff @@
## main #12982 +/- ##
==========================================
- Coverage 76.27% 76.17% -0.11%
==========================================
Files 1573 1573
Lines 88782 88534 -248
Branches 26740 27280 +540
==========================================
- Hits 67718 67438 -280
- Misses 20406 20441 +35
+ Partials 658 655 -3
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 14 files with indirect coverage changes 🚀 New features to boost your workflow:
|
|
Deployment failed with the following error: Learn More: https://vercel.com/uy-tieu-s-projects?upgradeToPro=build-rate-limit |
The Toggle Search Box command (double-click node search modal) had no default keybinding. Bind it to Tab to match the node-search convention of Houdini, Nuke, and TouchDesigner. Tab is only intercepted when focus is outside text inputs (the keybinding handler skips INPUT/TEXTAREA/contenteditable), preserving normal tabbing while typing. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Address accessibility (WCAG 2.1.1) feedback: a global bare Tab binding would hijack sequential focus navigation across all UI controls. Scope it to graph-canvas-container (same pattern as Delete, Fit View, etc.) so Tab only opens the search box when focus is on the canvas, leaving normal Tab navigation intact everywhere else. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
058fbaa to
7c5c056
Compare
Summary
Set the default keybinding for the Toggle Search Box command (the node-search modal) to
Tab, scoped to the graph canvas.Changes
Tabbinding forWorkspace.SearchBox.Toggleinsrc/platform/keybindings/defaults.ts, scoped withtargetElementId: 'graph-canvas-container'.Tabmatches the node-search/add-node convention of Houdini, Nuke, and TouchDesigner — the tools ComfyUI's users come from.Review Focus
graph-canvas-container(the same pattern used byDelete,Fit View, and other canvas commands), soTabonly opens the search box when focus is on the canvas — whereTabhas no meaningful sequential-navigation role. Everywhere else (toolbar, sidebars, dialogs, settings)Tabcontinues to navigate focus normally. Verified live:Tabfrom the canvas opens search;Tabfrom outside the canvas container does not.INPUT/TEXTAREA/contenteditable, so typing is never affected.Tabwas not previously bound to any command.Follow-up
Pairs with the stacked PR that makes
Tabclose the modal (instead of cycling focus inside it).