Repository: deephaven/deephaven-plugins (language: python)

Issue:
Version bump to latest DHC packages and update TestUtils references



Discussion / hints:

Fix patch:
diff --git a/package-lock.json b/package-lock.json
index 0124c9306..9112bd141 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3590,6 +3590,14 @@
         "url": "https://github.com/sponsors/mysticatea"
       }
     },
+    "node_modules/@deephaven/test-utils": {
+      "version": "0.95.0",
+      "resolved": "https://registry.npmjs.org/@deephaven/test-utils/-/test-utils-0.95.0.tgz",
+      "integrity": "sha512-zXfPHujH5Gtz1Z2A84zgXQDfoZHxu3aE7DepKlmcq6UPcKBvhFS46GwqIYIGB4Jclc4e+Iu8HjYVvwrXxZgVIg==",
+      "engines": {
+        "node": ">=16"
+      }
+    },
     "node_modules/@deephaven/tsconfig": {
       "version": "0.72.0",
       "dev": true,
@@ -32175,23 +32183,24 @@
       "version": "0.21.0",
       "license": "Apache-2.0",
       "dependencies": {
-        "@deephaven/chart": "^0.91.0",
-        "@deephaven/components": "^0.91.0",
-        "@deephaven/dashboard": "^0.91.0",
-        "@deephaven/dashboard-core-plugins": "^0.91.0",
-        "@deephaven/golden-layout": "^0.91.0",
-        "@deephaven/grid": "^0.91.0",
-        "@deephaven/icons": "^0.91.0",
-        "@deephaven/iris-grid": "^0.91.0",
-        "@deephaven/jsapi-bootstrap": "^0.91.0",
-        "@deephaven/jsapi-components": "^0.91.0",
+        "@deephaven/chart": "^0.95.0",
+        "@deephaven/components": "^0.95.0",
+        "@deephaven/dashboard": "^0.95.0",
+        "@deephaven/dashboard-core-plugins": "^0.95.0",
+        "@deephaven/golden-layout": "^0.95.0",
+        "@deephaven/grid": "^0.95.0",
+        "@deephaven/icons": "^0.95.0",
+        "@deephaven/iris-grid": "^0.95.0",
+        "@deephaven/jsapi-bootstrap": "^0.95.0",
+        "@deephaven/jsapi-components": "^0.95.0",
         "@deephaven/jsapi-types": "^1.0.0-dev0.35.0",
-        "@deephaven/jsapi-utils": "^0.91.0",
-        "@deephaven/log": "^0.91.0",
-        "@deephaven/plugin": "^0.91.0",
-        "@deephaven/react-hooks": "^0.91.0",
-        "@deephaven/redux": "^0.91.0",
-        "@deephaven/utils": "^0.91.0",
+        "@deephaven/jsapi-utils": "^0.95.0",
+        "@deephaven/log": "^0.95.0",
+        "@deephaven/plugin": "^0.95.0",
+        "@deephaven/react-hooks": "^0.95.0",
+        "@deephaven/redux": "^0.95.0",
+        "@deephaven/test-utils": "^0.95.0",
+        "@deephaven/utils": "^0.95.0",
         "@fortawesome/react-fontawesome": "^0.2.0",
         "@internationalized/date": "^3.5.5",
         "classnames": "^2.5.1",
@@ -32211,17 +32220,17 @@
       }
     },
     "plugins/ui/src/js/node_modules/@deephaven/chart": {
-      "version": "0.91.0",
-      "resolved": "https://registry.npmjs.org/@deephaven/chart/-/chart-0.91.0.tgz",
-      "integrity": "sha512-UfZY3tPn+RrCYyNfH0DWnmUmvL0LRO0QuALT56GQTTZoWrGlZbsYUsk91sZW2u+KMLxHXkvKQTfLsuJmxP2y+w==",
+      "version": "0.95.0",
+      "resolved": "https://registry.npmjs.org/@deephaven/chart/-/chart-0.95.0.tgz",
+      "integrity": "sha512-1yB+qc8GtpM4XokT2l4NCLsWlHPSvy3smdSL9al7hvr1N20jwlGPfiNEVgals/HH+FDptw1E/qVSkVwPzKf3hg==",
       "dependencies": {
-        "@deephaven/components": "^0.91.0",
-        "@deephaven/icons": "^0.91.0",
+        "@deephaven/components": "^0.95.0",
+        "@deephaven/icons": "^0.95.0",
         "@deephaven/jsapi-types": "^1.0.0-dev0.34.0",
-        "@deephaven/jsapi-utils": "^0.91.0",
-        "@deephaven/log": "^0.91.0",
-        "@deephaven/react-hooks": "^0.91.0",
-        "@deephaven/utils": "^0.91.0",
+        "@deephaven/jsapi-utils": "^0.95.0",
+        "@deephaven/log": "^0.95.0",
+        "@deephaven/react-hooks": "^0.95.0",
+        "@deephaven/utils": "^0.95.0",
         "buffer": "^6.0.3",
         "fast-deep-equal": "^3.1.3",
         "lodash.debounce": "^4.0.8",
@@ -32240,15 +32249,15 @@
       }
     },
     "plugins/ui/src/js/node_modules/@deephaven/components": {
-      "version": "0.91.0",
-      "resolved": "https://registry.npmjs.org/@deephaven/components/-/components-0.91.0.tgz",
-      "integrity": "sha512-GmEmOqw/njgPtHnC7i09c2q9Og7qFFKqfqklJvoha6kOZwiVjAPaign2ifmy388vvWMRhtwF8pK3mzjegj1xrQ==",
+      "version": "0.95.0",
+      "resolved": "https://registry.npmjs.org/@deephaven/components/-/components-0.95.0.tgz",
+      "integrity": "sha512-LRLV+HMnd18KlJyNR1p5eWZiu1PnCfQUW0WQDes7sgtj/vaVN11xiVWQJxc09RITw4CxBvElC9HZ+/JQOHZnGQ==",
       "dependencies": {
         "@adobe/react-spectrum": "3.35.1",
-        "@deephaven/icons": "^0.91.0",
-        "@deephaven/log": "^0.91.0",
-        "@deephaven/react-hooks": "^0.91.0",
-        "@deephaven/utils": "^0.91.0",
+        "@deephaven/icons": "^0.95.0",
+        "@deephaven/log": "^0.95.0",
+        "@deephaven/react-hooks": "^0.95.0",
+        "@deephaven/utils": "^0.95.0",
         "@fortawesome/fontawesome-svg-core": "^6.2.1",
         "@fortawesome/react-fontawesome": "^0.2.0",
         "@internationalized/date": "^3.5.5",
@@ -32282,16 +32291,16 @@
       }
     },
     "plugins/ui/src/js/node_modules/@deephaven/dashboard": {
-      "version": "0.91.0",
-      "resolved": "https://registry.npmjs.org/@deephaven/dashboard/-/dashboard-0.91.0.tgz",
-      "integrity": "sha512-A8L2emY3o2qYmUdh0O3j7y5Za/gF912+bP0gVxDnGG5ayMuWUVJAl8Mtluj5Coz/MxP48VdyEGQGuNNh2ggnvw==",
-      "dependencies": {
-        "@deephaven/components": "^0.91.0",
-        "@deephaven/golden-layout": "^0.91.0",
-        "@deephaven/log": "^0.91.0",
-        "@deephaven/react-hooks": "^0.91.0",
-        "@deephaven/redux": "^0.91.0",
-        "@deephaven/utils": "^0.91.0",
+      "version": "0.95.0",
+      "resolved": "https://registry.npmjs.org/@deephaven/dashboard/-/dashboard-0.95.0.tgz",
+      "integrity": "sha512-ehecVa92ZplXX31AWiWaT29BWuvOZq/Mr0fRhHOgtvFvjMyfl+u9bIZ8xmBguVbjn2ZhMdDwygVzw1uvUx7Yiw==",
+      "dependencies": {
+        "@deephaven/components": "^0.95.0",
+        "@deephaven/golden-layout": "^0.95.0",
+        "@deephaven/log": "^0.95.0",
+        "@deephaven/react-hooks": "^0.95.0",
+        "@deephaven/redux": "^0.95.0",
+        "@deephaven/utils": "^0.95.0",
         "fast-deep-equal": "^3.1.3",
         "lodash.ismatch": "^4.1.1",
         "lodash.throttle": "^4.1.1",
@@ -32308,30 +32317,30 @@
       }
     },
     "plugins/ui/src/js/node_modules/@deephaven/dashboard-core-plugins": {
-      "version": "0.91.0",
-      "resolved": "https://registry.npmjs.org/@deephaven/dashboard-core-plugins/-/dashboard-core-plugins-0.91.0.tgz",
-      "integrity": "sha512-Y7mBd5feexOi5Q6Os/3YNXTSShIEzmw2TMdvDnup+6WEHx29xuw0RVRXI0Ru52MKTB7mdkNAwHXerYGGXy3zrg==",
-      "dependencies": {
-        "@deephaven/chart": "^0.91.0",
-        "@deephaven/components": "^0.91.0",
-        "@deephaven/console": "^0.91.0",
-        "@deephaven/dashboard": "^0.91.0",
-        "@deephaven/file-explorer": "^0.91.0",
-        "@deephaven/filters": "^0.91.0",
-        "@deephaven/golden-layout": "^0.91.0",
-        "@deephaven/grid": "^0.91.0",
-        "@deephaven/icons": "^0.91.0",
-        "@deephaven/iris-grid": "^0.91.0",
-        "@deephaven/jsapi-bootstrap": "^0.91.0",
-        "@deephaven/jsapi-components": "^0.91.0",
+      "version": "0.95.0",
+      "resolved": "https://registry.npmjs.org/@deephaven/dashboard-core-plugins/-/dashboard-core-plugins-0.95.0.tgz",
+      "integrity": "sha512-+a2MEYZ2e/63MWN8PHd+a+evXZbjfBxD4ltIJ89A65zKdS94RGLvevoUHuFpGCOlDmA/7JTjBHPZbgEyaFbw1A==",
+      "dependencies": {
+        "@deephaven/chart": "^0.95.0",
+        "@deephaven/components": "^0.95.0",
+        "@deephaven/console": "^0.95.0",
+        "@deephaven/dashboard": "^0.95.0",
+        "@deephaven/file-explorer": "^0.95.0",
+        "@deephaven/filters": "^0.95.0",
+        "@deephaven/golden-layout": "^0.95.0",
+        "@deephaven/grid": "^0.95.0",
+        "@deephaven/icons": "^0.95.0",
+        "@deephaven/iris-grid": "^0.95.0",
+        "@deephaven/jsapi-bootstrap": "^0.95.0",
+        "@deephaven/jsapi-components": "^0.95.0",
         "@deephaven/jsapi-types": "^1.0.0-dev0.34.0",
-        "@deephaven/jsapi-utils": "^0.91.0",
-        "@deephaven/log": "^0.91.0",
-        "@deephaven/plugin": "^0.91.0",
-        "@deephaven/react-hooks": "^0.91.0",
-        "@deephaven/redux": "^0.91.0",
-        "@deephaven/storage": "^0.91.0",
-        "@deephaven/utils": "^0.91.0",
+        "@deephaven/jsapi-utils": "^0.95.0",
+        "@deephaven/log": "^0.95.0",
+        "@deephaven/plugin": "^0.95.0",
+        "@deephaven/react-hooks": "^0.95.0",
+        "@deephaven/redux": "^0.95.0",
+        "@deephaven/storage": "^0.95.0",
+        "@deephaven/utils": "^0.95.0",
         "@fortawesome/react-fontawesome": "^0.2.0",
         "classnames": "^2.3.1",
         "fast-deep-equal": "^3.1.3",
@@ -32359,19 +32368,19 @@
       }
     },
     "plugins/ui/src/js/node_modules/@deephaven/dashboard-core-plugins/node_modules/@deephaven/console": {
-      "version": "0.91.0",
-      "resolved": "https://registry.npmjs.org/@deephaven/console/-/console-0.91.0.tgz",
-      "integrity": "sha512-9jdvLDiygaJKf4dC6O5Zg5gZ7SVg2Y+hhhmwdALCfFU3oP56d8/ABCpzOqQ/EFpUw9u9M5o+scKKfD4knHjYZg==",
-      "dependencies": {
-        "@deephaven/chart": "^0.91.0",
-        "@deephaven/components": "^0.91.0",
-        "@deephaven/icons": "^0.91.0",
-        "@deephaven/jsapi-bootstrap": "^0.91.0",
+      "version": "0.95.0",
+      "resolved": "https://registry.npmjs.org/@deephaven/console/-/console-0.95.0.tgz",
+      "integrity": "sha512-JSM6w7iH0Pxbl1AMQyz54vyRch+d3HD2PGDfrhdc+ezvTv5aGqLD7THStGGe1y1byig0OE4SBwR48crlHpNBIA==",
+      "dependencies": {
+        "@deephaven/chart": "^0.95.0",
+        "@deephaven/components": "^0.95.0",
+        "@deephaven/icons": "^0.95.0",
+        "@deephaven/jsapi-bootstrap": "^0.95.0",
         "@deephaven/jsapi-types": "^1.0.0-dev0.34.0",
-        "@deephaven/log": "^0.91.0",
-        "@deephaven/react-hooks": "^0.91.0",
-        "@deephaven/storage": "^0.91.0",
-        "@deephaven/utils": "^0.91.0",
+        "@deephaven/log": "^0.95.0",
+        "@deephaven/react-hooks": "^0.95.0",
+        "@deephaven/storage": "^0.95.0",
+        "@deephaven/utils": "^0.95.0",
         "@fortawesome/react-fontawesome": "^0.2.0",
         "classnames": "^2.3.1",
         "linkifyjs": "^4.1.0",
@@ -32395,15 +32404,15 @@
       }
     },
     "plugins/ui/src/js/node_modules/@deephaven/dashboard-core-plugins/node_modules/@deephaven/file-explorer": {
-      "version": "0.91.0",
-      "resolved": "https://registry.npmjs.org/@deephaven/file-explorer/-/file-explorer-0.91.0.tgz",
-      "integrity": "sha512-nj9xk1Sc4q9MPbUSnFcOylgPTdhIhY8nopoaV9kKcqP1F7GfS86B83DSeILVc59OQDHeB9/+CLIb5kdhVrJglA==",
-      "dependencies": {
-        "@deephaven/components": "^0.91.0",
-        "@deephaven/icons": "^0.91.0",
-        "@deephaven/log": "^0.91.0",
-        "@deephaven/storage": "^0.91.0",
-        "@deephaven/utils": "^0.91.0",
+      "version": "0.95.0",
+      "resolved": "https://registry.npmjs.org/@deephaven/file-explorer/-/file-explorer-0.95.0.tgz",
+      "integrity": "sha512-7fuE6aVEuMVDTPaM1Z3S1EdzdeQg/hSW9Xjtt8IUJkYgqMlx77hPy+Dv4ob3YxImhDYVkzVXujiLyypk/Gl5lA==",
+      "dependencies": {
+        "@deephaven/components": "^0.95.0",
+        "@deephaven/icons": "^0.95.0",
+        "@deephaven/log": "^0.95.0",
+        "@deephaven/storage": "^0.95.0",
+        "@deephaven/utils": "^0.95.0",
         "@fortawesome/fontawesome-svg-core": "^6.2.1",
         "@fortawesome/react-fontawesome": "^0.2.0",
         "classnames": "^2.3.1",
@@ -32418,12 +32427,12 @@
       }
     },
     "plugins/ui/src/js/node_modules/@deephaven/dashboard-core-plugins/node_modules/@deephaven/storage": {
-      "version": "0.91.0",
-      "resolved": "https://registry.npmjs.org/@deephaven/storage/-/storage-0.91.0.tgz",
-      "integrity": "sha512-eEEj0UAJOSosad8kxuENbP2ByIyr1IBMHtWvu8sJ4TX2s3VphNunFnHgwP5ekA3UpjvwtxhoUvCRXc2iaNVxEQ==",
+      "version": "0.95.0",
+      "resolved": "https://registry.npmjs.org/@deephaven/storage/-/storage-0.95.0.tgz",
+      "integrity": "sha512-Gsc/p9fHrrSdzMtZ/a6/IpSzs2VT3WTOBSspWD0G7P0v682adXl7d25YFdl6uYIQSMq/tBU+JtTgAegMN5zfGg==",
       "dependencies": {
-        "@deephaven/filters": "^0.91.0",
-        "@deephaven/log": "^0.91.0",
+        "@deephaven/filters": "^0.95.0",
+        "@deephaven/log": "^0.95.0",
         "lodash.throttle": "^4.1.1"
       },
       "engines": {
@@ -32434,19 +32443,19 @@
       }
     },
     "plugins/ui/src/js/node_modules/@deephaven/filters": {
-      "version": "0.91.0",
-      "resolved": "https://registry.npmjs.org/@deephaven/filters/-/filters-0.91.0.tgz",
-      "integrity": "sha512-ELWgt6m98+OGoRdvjhhTXUUSzo1ry/h9RTVDnmRK9qwGoT3rnqYvrqyFaOzaVLhsrK/3iYZoM2yLQkq0dPikVA==",
+      "version": "0.95.0",
+      "resolved": "https://registry.npmjs.org/@deephaven/filters/-/filters-0.95.0.tgz",
+      "integrity": "sha512-eU5VtrCJgdPzikML5Y4mW3tkuPIxs99+OTZent22gH6Dm3PBt+gjPrjpLpm4IHTdtR1SL2TSDi1ETf2j5+eO9Q==",
       "engines": {
         "node": ">=16"
       }
     },
     "plugins/ui/src/js/node_modules/@deephaven/golden-layout": {
-      "version": "0.91.0",
-      "resolved": "https://registry.npmjs.org/@deephaven/golden-layout/-/golden-layout-0.91.0.tgz",
-      "integrity": "sha512-WzoIhOp1aENZJrVagE8W4M1zEc76rkTm0MxYIduBO1RtqRjpunoAR+RWUmMwfPaOIp8dxX+RfJz+YFlKdZEs6A==",
+      "version": "0.95.0",
+      "resolved": "https://registry.npmjs.org/@deephaven/golden-layout/-/golden-layout-0.95.0.tgz",
+      "integrity": "sha512-OyKW/v+KK9QiRLMJMOcv+49z3UjW8BO2xnPdJN2Nt1Aep18QUIFdFK/nm45SqfL7gkecOrOEDcElyD4aWz0tcw==",
       "dependencies": {
-        "@deephaven/components": "^0.91.0",
+        "@deephaven/components": "^0.95.0",
         "jquery": "^3.6.0",
         "nanoid": "^5.0.7"
       },
@@ -32456,11 +32465,11 @@
       }
     },
     "plugins/ui/src/js/node_modules/@deephaven/grid": {
-      "version": "0.91.0",
-      "resolved": "https://registry.npmjs.org/@deephaven/grid/-/grid-0.91.0.tgz",
-      "integrity": "sha512-fOv2RrXKWIpwH4G+6pypFE1WIbYYjz8K4PcRvwPdob8RRI2C83HpIWQS/XSot0WqzITu2rqOYwWxfHu7+BGcyg==",
+      "version": "0.95.0",
+      "resolved": "https://registry.npmjs.org/@deephaven/grid/-/grid-0.95.0.tgz",
+      "integrity": "sha512-iODcW/uRLqh85MsC6QCnYVCoPzsBZNs6wN1Kjb71XR/AhtrMskgfJb3kJasysfKLEC5Prk8BwvGu8jdIyNs8qw==",
       "dependencies": {
-        "@deephaven/utils": "^0.91.0",
+        "@deephaven/utils": "^0.95.0",
         "classnames": "^2.3.1",
         "color-convert": "^2.0.1",
         "event-target-shim": "^6.0.2",
@@ -32478,9 +32487,9 @@
       }
     },
     "plugins/ui/src/js/node_modules/@deephaven/icons": {
-      "version": "0.91.0",
-      "resolved": "https://registry.npmjs.org/@deephaven/icons/-/icons-0.91.0.tgz",
-      "integrity": "sha512-b+b//+gk8ZJz+JXURCw99FSQlExN89V3+F+LWVHJc+L3bzMa7pR2vhMVTKG0hG2tqF9ZDU8cYWGIS6o+6uiv2w==",
+      "version": "0.95.0",
+      "resolved": "https://registry.npmjs.org/@deephaven/icons/-/icons-0.95.0.tgz",
+      "integrity": "sha512-BJ0SS7GbJYJ2V0u5on1VDx2v+DZ77t18MqvfXWvYuV5DjODwMRjP8XsEKyH05c+jdXMZsyB+gv2+jysPTGcSBw==",
       "dependencies": {
         "@fortawesome/fontawesome-common-types": "^6.1.1"
       },
@@ -32490,22 +32499,22 @@
       }
     },
     "plugins/ui/src/js/node_modules/@deephaven/iris-grid": {
-      "version": "0.91.0",
-      "resolved": "https://registry.npmjs.org/@deephaven/iris-grid/-/iris-grid-0.91.0.tgz",
-      "integrity": "sha512-OgJvZg9z0KBbVoAXgPQiuJDScOrtfn8CouWd7G2WkJtVxK3OC3Rdeg5QLv8n54Lg2nwtrhuow6DV4oxybAv8gA==",
-      "dependencies": {
-        "@deephaven/components": "^0.91.0",
-        "@deephaven/console": "^0.91.0",
-        "@deephaven/filters": "^0.91.0",
-        "@deephaven/grid": "^0.91.0",
-        "@deephaven/icons": "^0.91.0",
-        "@deephaven/jsapi-components": "^0.91.0",
+      "version": "0.95.0",
+      "resolved": "https://registry.npmjs.org/@deephaven/iris-grid/-/iris-grid-0.95.0.tgz",
+      "integrity": "sha512-wOs66BHXR0GPBAe2UIEQIG/Av8/Ju+96+u6+1dzS5afFfiKSoIxNxTi+HOklj9QkCDcAbPQ/pg6/eZThWfZS4g==",
+      "dependencies": {
+        "@deephaven/components": "^0.95.0",
+        "@deephaven/console": "^0.95.0",
+        "@deephaven/filters": "^0.95.0",
+        "@deephaven/grid": "^0.95.0",
+        "@deephaven/icons": "^0.95.0",
+        "@deephaven/jsapi-components": "^0.95.0",
         "@deephaven/jsapi-types": "^1.0.0-dev0.34.0",
-        "@deephaven/jsapi-utils": "^0.91.0",
-        "@deephaven/log": "^0.91.0",
-        "@deephaven/react-hooks": "^0.91.0",
-        "@deephaven/storage": "^0.91.0",
-        "@deephaven/utils": "^0.91.0",
+        "@deephaven/jsapi-utils": "^0.95.0",
+        "@deephaven/log": "^0.95.0",
+        "@deephaven/react-hooks": "^0.95.0",
+        "@deephaven/storage": "^0.95.0",
+        "@deephaven/utils": "^0.95.0",
         "@dnd-kit/core": "^6.1.0",
         "@dnd-kit/sortable": "^7.0.2",
         "@dnd-kit/utilities": "^3.2.2",
@@ -32532,19 +32541,19 @@
       }
     },
     "plugins/ui/src/js/node_modules/@deephaven/iris-grid/node_modules/@deephaven/console": {
-      "version": "0.91.0",
-      "resolved": "https://registry.npmjs.org/@deephaven/console/-/console-0.91.0.tgz",
-      "integrity": "sha512-9jdvLDiygaJKf4dC6O5Zg5gZ7SVg2Y+hhhmwdALCfFU3oP56d8/ABCpzOqQ/EFpUw9u9M5o+scKKfD4knHjYZg==",
-      "dependencies": {
-        "@deephaven/chart": "^0.91.0",
-        "@deephaven/components": "^0.91.0",
-        "@deephaven/icons": "^0.91.0",
-        "@deephaven/jsapi-bootstrap": "^0.91.0",
+      "version": "0.95.0",
+      "resolved": "https://registry.npmjs.org/@deephaven/console/-/console-0.95.0.tgz",
+      "integrity": "sha512-JSM6w7iH0Pxbl1AMQyz54vyRch+d3HD2PGDfrhdc+ezvTv5aGqLD7THStGGe1y1byig0OE4SBwR48crlHpNBIA==",
+      "dependencies": {
+        "@deephaven/chart": "^0.95.0",
+        "@deephaven/components": "^0.95.0",
+        "@deephaven/icons": "^0.95.0",
+        "@deephaven/jsapi-bootstrap": "^0.95.0",
         "@deephaven/jsapi-types": "^1.0.0-dev0.34.0",
-        "@deephaven/log": "^0.91.0",
-        "@deephaven/react-hooks": "^0.91.0",
-        "@deephaven/storage": "^0.91.0",
-        "@deephaven/utils": "^0.91.0",
+        "@deephaven/log": "^0.95.0",
+        "@deephaven/react-hooks": "^0.95.0",
+        "@deephaven/storage": "^0.95.0",
+        "@deephaven/utils": "^0.95.0",
         "@fortawesome/react-fontawesome": "^0.2.0",
         "classnames": "^2.3.1",
         "linkifyjs": "^4.1.0",
@@ -32568,12 +32577,12 @@
       }
     },
     "plugins/ui/src/js/node_modules/@deephaven/iris-grid/node_modules/@deephaven/storage": {
-      "version": "0.91.0",
-      "resolved": "https://registry.npmjs.org/@deephaven/storage/-/storage-0.91.0.tgz",
-      "integrity": "sha512-eEEj0UAJOSosad8kxuENbP2ByIyr1IBMHtWvu8sJ4TX2s3VphNunFnHgwP5ekA3UpjvwtxhoUvCRXc2iaNVxEQ==",
+      "version": "0.95.0",
+      "resolved": "https://registry.npmjs.org/@deephaven/storage/-/storage-0.95.0.tgz",
+      "integrity": "sha512-Gsc/p9fHrrSdzMtZ/a6/IpSzs2VT3WTOBSspWD0G7P0v682adXl7d25YFdl6uYIQSMq/tBU+JtTgAegMN5zfGg==",
       "dependencies": {
-        "@deephaven/filters": "^0.91.0",
-        "@deephaven/log": "^0.91.0",
+        "@deephaven/filters": "^0.95.0",
+        "@deephaven/log": "^0.95.0",
         "lodash.throttle": "^4.1.1"
       },
       "engines": {
@@ -32584,15 +32593,15 @@
       }
     },
     "plugins/ui/src/js/node_modules/@deephaven/jsapi-bootstrap": {
-      "version": "0.91.0",
-      "resolved": "https://registry.npmjs.org/@deephaven/jsapi-bootstrap/-/jsapi-bootstrap-0.91.0.tgz",
-      "integrity": "sha512-00irzZyhEIqRn000ZH38+zk1tOjBsaWhn35/weg5HNL4gbBtW4sg5+hsDHRzYhbEqbJDErvgNUPml23Rll732g==",
+      "version": "0.95.0",
+      "resolved": "https://registry.npmjs.org/@deephaven/jsapi-bootstrap/-/jsapi-bootstrap-0.95.0.tgz",
+      "integrity": "sha512-UJ9akQyFFRJKpf9vm0o9jp3JZWjjOXIR6KHUXAUgNoEccTTSdH1xMkHFrfTGuXYFtnSC3L7HCSzW07EcEXoZtQ==",
       "dependencies": {
-        "@deephaven/components": "^0.91.0",
+        "@deephaven/components": "^0.95.0",
         "@deephaven/jsapi-types": "^1.0.0-dev0.34.0",
-        "@deephaven/log": "^0.91.0",
-        "@deephaven/react-hooks": "^0.91.0",
-        "@deephaven/utils": "^0.91.0"
+        "@deephaven/log": "^0.95.0",
+        "@deephaven/react-hooks": "^0.95.0",
+        "@deephaven/utils": "^0.95.0"
       },
       "engines": {
         "node": ">=16"
@@ -32602,17 +32611,17 @@
       }
     },
     "plugins/ui/src/js/node_modules/@deephaven/jsapi-components": {
-      "version": "0.91.0",
-      "resolved": "https://registry.npmjs.org/@deephaven/jsapi-components/-/jsapi-components-0.91.0.tgz",
-      "integrity": "sha512-h5pgltU/S5+NoaYKdOJbCyLvx+6zmakiXIVS4GXo5P+mnOHyALvylxDT29jkGcgbPjNLLejWwjaIGHSSWWGG8w==",
+      "version": "0.95.0",
+      "resolved": "https://registry.npmjs.org/@deephaven/jsapi-components/-/jsapi-components-0.95.0.tgz",
+      "integrity": "sha512-9WCbJHEcblUXHOMThHxHrb4FFZQ8EZeQlPJc0vK1aTTi5m4S/rIkGMiCD2maJyi5wDlDj9q9syUl1qLDCl2qtQ==",
       "dependencies": {
-        "@deephaven/components": "^0.91.0",
-        "@deephaven/jsapi-bootstrap": "^0.91.0",
+        "@deephaven/components": "^0.95.0",
+        "@deephaven/jsapi-bootstrap": "^0.95.0",
         "@deephaven/jsapi-types": "^1.0.0-dev0.34.0",
-        "@deephaven/jsapi-utils": "^0.91.0",
-        "@deephaven/log": "^0.91.0",
-        "@deephaven/react-hooks": "^0.91.0",
-        "@deephaven/utils": "^0.91.0",
+        "@deephaven/jsapi-utils": "^0.95.0",
+        "@deephaven/log": "^0.95.0",
+        "@deephaven/react-hooks": "^0.95.0",
+        "@deephaven/utils": "^0.95.0",
         "@types/js-cookie": "^3.0.3",
         "classnames": "^2.3.2",
         "js-cookie": "^3.0.5",
@@ -32632,14 +32641,14 @@
       "integrity": "sha512-X35g2ktmXbiTwjMNF20IkuNawJJ6Tlvrv23VuUVIjWHkpWcmyCYWIBle2zo7QAF6nnJpkccwFKJiC+TIkWl7hg=="
     },
     "plugins/ui/src/js/node_modules/@deephaven/jsapi-utils": {
-      "version": "0.91.0",
-      "resolved": "https://registry.npmjs.org/@deephaven/jsapi-utils/-/jsapi-utils-0.91.0.tgz",
-      "integrity": "sha512-7+52u4fGeCU5Zy+bUi+uqv/tNujq1fdaBw4XjEcC+KSW3ojPo+xzpdl8E0L7IPYgD2ep/IPosaq/kbLp6JU3+g==",
+      "version": "0.95.0",
+      "resolved": "https://registry.npmjs.org/@deephaven/jsapi-utils/-/jsapi-utils-0.95.0.tgz",
+      "integrity": "sha512-nr0MK33wDl9deaO2909BV538APzd8teMPDeXkmySM3ayEFVXjAFFDqONTY5ysLFcEtMSDiSXZBizWrKtpsjtaA==",
       "dependencies": {
-        "@deephaven/filters": "^0.91.0",
+        "@deephaven/filters": "^0.95.0",
         "@deephaven/jsapi-types": "^1.0.0-dev0.34.0",
-        "@deephaven/log": "^0.91.0",
-        "@deephaven/utils": "^0.91.0",
+        "@deephaven/log": "^0.95.0",
+        "@deephaven/utils": "^0.95.0",
         "lodash.clamp": "^4.0.3",
         "nanoid": "^5.0.7"
       },
@@ -32648,9 +32657,9 @@
       }
     },
     "plugins/ui/src/js/node_modules/@deephaven/log": {
-      "version": "0.91.0",
-      "resolved": "https://registry.npmjs.org/@deephaven/log/-/log-0.91.0.tgz",
-      "integrity": "sha512-IXT6+0XiR+5bhm5+3XELZFMTKPMZBmdckhswdJibrID0l79wgGiqKiqSnBjn1mFOGuOO+JYqU4KzoaIRJXZdyA==",
+      "version": "0.95.0",
+      "resolved": "https://registry.npmjs.org/@deephaven/log/-/log-0.95.0.tgz",
+      "integrity": "sha512-2p3X+FlSDOlBVCBMy8N1hL6wU4akIDHY1yhJ0mrUkHEwPn3ESAGpLlWWvjY7wHt9mvgFGbjIjpgsQPA9x06EnA==",
       "dependencies": {
         "event-target-shim": "^6.0.2"
       },
@@ -32659,18 +32668,18 @@
       }
     },
     "plugins/ui/src/js/node_modules/@deephaven/plugin": {
-      "version": "0.91.0",
-      "resolved": "https://registry.npmjs.org/@deephaven/plugin/-/plugin-0.91.0.tgz",
-      "integrity": "sha512-ip2b2VG8wus88ySOUaKg4XfrCtgLd7eH6f8CswuFnSNbYVcg+UurbGJRvBAvX1F8JYgwJeWIzyiEHkYKYT1i4g==",
-      "dependencies": {
-        "@deephaven/components": "^0.91.0",
-        "@deephaven/golden-layout": "^0.91.0",
-        "@deephaven/grid": "^0.91.0",
-        "@deephaven/icons": "^0.91.0",
-        "@deephaven/iris-grid": "^0.91.0",
+      "version": "0.95.0",
+      "resolved": "https://registry.npmjs.org/@deephaven/plugin/-/plugin-0.95.0.tgz",
+      "integrity": "sha512-yUHkEzgT6JtbLfOhbMPOoQLbi8/TrZ+/pHo2FG84sOmv4nGAcXsuBw9yjcrzRF17nLoRT7sihXIayAvlghZ1wQ==",
+      "dependencies": {
+        "@deephaven/components": "^0.95.0",
+        "@deephaven/golden-layout": "^0.95.0",
+        "@deephaven/grid": "^0.95.0",
+        "@deephaven/icons": "^0.95.0",
+        "@deephaven/iris-grid": "^0.95.0",
         "@deephaven/jsapi-types": "^1.0.0-dev0.34.0",
-        "@deephaven/log": "^0.91.0",
-        "@deephaven/react-hooks": "^0.91.0",
+        "@deephaven/log": "^0.95.0",
+        "@deephaven/react-hooks": "^0.95.0",
         "@fortawesome/fontawesome-common-types": "^6.1.1",
         "@fortawesome/react-fontawesome": "^0.2.0"
       },
@@ -32682,13 +32691,13 @@
       }
     },
     "plugins/ui/src/js/node_modules/@deephaven/react-hooks": {
-      "version": "0.91.0",
-      "resolved": "https://registry.npmjs.org/@deephaven/react-hooks/-/react-hooks-0.91.0.tgz",
-      "integrity": "sha512-G08G2RBPREpQIEYJ0FelvwqzsSqaq5/uG36kFspyxa8pkxQ5Lf9Bxqsnx/McR4sRYzVlbr1ADcL7r2Ecl19Ddg==",
+      "version": "0.95.0",
+      "resolved": "https://registry.npmjs.org/@deephaven/react-hooks/-/react-hooks-0.95.0.tgz",
+      "integrity": "sha512-bC0gAgZcl5GrjSThdtUNMeXrjhE4z6iZk9YgVo6QqINq0BCMEo4C8ZmAozWxyJoiyDMhmALXI2MaQ7uaoTfgyQ==",
       "dependencies": {
         "@adobe/react-spectrum": "3.35.1",
-        "@deephaven/log": "^0.91.0",
-        "@deephaven/utils": "^0.91.0",
+        "@deephaven/log": "^0.95.0",
+        "@deephaven/utils": "^0.95.0",
         "lodash.debounce": "^4.0.8",
         "lodash.throttle": "^4.1.1",
         "nanoid": "^5.0.7"
@@ -32701,14 +32710,14 @@
       }
     },
     "plugins/ui/src/js/node_modules/@deephaven/redux": {
-      "version": "0.91.0",
-      "resolved": "https://registry.npmjs.org/@deephaven/redux/-/redux-0.91.0.tgz",
-      "integrity": "sha512-1JnXcBUpxQDLT65S2SPA4hkoKc0tCkThzTV28zKQy+4pqGP5oD5QmlcgtUkeTqQPsNqEf8ZO9XZjkZHpQ0xqVQ==",
+      "version": "0.95.0",
+      "resolved": "https://registry.npmjs.org/@deephaven/redux/-/redux-0.95.0.tgz",
+      "integrity": "sha512-8sI3J0G3FDyIudOiBKTyhbfe2srRC77/QsSHF/zuQJbBF7K4RB8JIbiZktY9HBf6kMv1RnCab0fZlzxtSRGOyQ==",
       "dependencies": {
         "@deephaven/jsapi-types": "^1.0.0-dev0.34.0",
-        "@deephaven/jsapi-utils": "^0.91.0",
-        "@deephaven/log": "^0.91.0",
-        "@deephaven/plugin": "^0.91.0",
+        "@deephaven/jsapi-utils": "^0.95.0",
+        "@deephaven/log": "^0.95.0",
+        "@deephaven/plugin": "^0.95.0",
         "fast-deep-equal": "^3.1.3",
         "proxy-memoize": "^3.0.0",
         "redux-thunk": "2.4.1"
@@ -32721,9 +32730,9 @@
       }
     },
     "plugins/ui/src/js/node_modules/@deephaven/utils": {
-      "version": "0.91.0",
-      "resolved": "https://registry.npmjs.org/@deephaven/utils/-/utils-0.91.0.tgz",
-      "integrity": "sha512-MQAnLvJux9N6ZeCdxWle6NEJ8dqrpxVtkMd9oVqqa0mjmRVPjz6UuT8Hl10VagrYJya1TjKHizW3BrDyhYPQ1w==",
+      "version": "0.95.0",
+      "resolved": "https://registry.npmjs.org/@deephaven/utils/-/utils-0.95.0.tgz",
+      "integrity": "sha512-knAh6xxNl1b2dqsCv6Jv87+3gC2OmGqCW/Ub7FXSsoY+qRWO7r5LG7DkVi9S2kLxVgzNH2tWSqSOA7AUt+wLyQ==",
       "engines": {
         "node": ">=16"
       }
@@ -35814,23 +35823,24 @@
     "@deephaven/js-plugin-ui": {
       "version": "file:plugins/ui/src/js",
       "requires": {
-        "@deephaven/chart": "^0.91.0",
-        "@deephaven/components": "^0.91.0",
-        "@deephaven/dashboard": "^0.91.0",
-        "@deephaven/dashboard-core-plugins": "^0.91.0",
-        "@deephaven/golden-layout": "^0.91.0",
-        "@deephaven/grid": "^0.91.0",
-        "@deephaven/icons": "^0.91.0",
-        "@deephaven/iris-grid": "^0.91.0",
-        "@deephaven/jsapi-bootstrap": "^0.91.0",
-        "@deephaven/jsapi-components": "^0.91.0",
+        "@deephaven/chart": "^0.95.0",
+        "@deephaven/components": "^0.95.0",
+        "@deephaven/dashboard": "^0.95.0",
+        "@deephaven/dashboard-core-plugins": "^0.95.0",
+        "@deephaven/golden-layout": "^0.95.0",
+        "@deephaven/grid": "^0.95.0",
+        "@deephaven/icons": "^0.95.0",
+        "@deephaven/iris-grid": "^0.95.0",
+        "@deephaven/jsapi-bootstrap": "^0.95.0",
+        "@deephaven/jsapi-components": "^0.95.0",
         "@deephaven/jsapi-types": "^1.0.0-dev0.35.0",
-        "@deephaven/jsapi-utils": "^0.91.0",
-        "@deephaven/log": "^0.91.0",
-        "@deephaven/plugin": "^0.91.0",
-        "@deephaven/react-hooks": "^0.91.0",
-        "@deephaven/redux": "^0.91.0",
-        "@deephaven/utils": "^0.91.0",
+        "@deephaven/jsapi-utils": "^0.95.0",
+        "@deephaven/log": "^0.95.0",
+        "@deephaven/plugin": "^0.95.0",
+        "@deephaven/react-hooks": "^0.95.0",
+        "@deephaven/redux": "^0.95.0",
+        "@deephaven/test-utils": "^0.95.0",
+        "@deephaven/utils": "^0.95.0",
         "@fortawesome/react-fontawesome": "^0.2.0",
         "@internationalized/date": "^3.5.5",
         "@types/react": "^17.0.2",
@@ -35844,17 +35854,17 @@
       },
       "dependencies": {
         "@deephaven/chart": {
-          "version": "0.91.0",
-          "resolved": "https://registry.npmjs.org/@deephaven/chart/-/chart-0.91.0.tgz",
-          "integrity": "sha512-UfZY3tPn+RrCYyNfH0DWnmUmvL0LRO0QuALT56GQTTZoWrGlZbsYUsk91sZW2u+KMLxHXkvKQTfLsuJmxP2y+w==",
+          "version": "0.95.0",
+          "resolved": "https://registry.npmjs.org/@deephaven/chart/-/chart-0.95.0.tgz",
+          "integrity": "sha512-1yB+qc8GtpM4XokT2l4NCLsWlHPSvy3smdSL9al7hvr1N20jwlGPfiNEVgals/HH+FDptw1E/qVSkVwPzKf3hg==",
           "requires": {
-            "@deephaven/components": "^0.91.0",
-            "@deephaven/icons": "^0.91.0",
+            "@deephaven/components": "^0.95.0",
+            "@deephaven/icons": "^0.95.0",
             "@deephaven/jsapi-types": "^1.0.0-dev0.34.0",
-            "@deephaven/jsapi-utils": "^0.91.0",
-            "@deephaven/log": "^0.91.0",
-            "@deephaven/react-hooks": "^0.91.0",
-            "@deephaven/utils": "^0.91.0",
+            "@deephaven/jsapi-utils": "^0.95.0",
+            "@deephaven/log": "^0.95.0",
+            "@deephaven/react-hooks": "^0.95.0",
+            "@deephaven/utils": "^0.95.0",
             "buffer": "^6.0.3",
             "fast-deep-equal": "^3.1.3",
             "lodash.debounce": "^4.0.8",
@@ -35867,15 +35877,15 @@
           }
         },
         "@deephaven/components": {
-          "version": "0.91.0",
-          "resolved": "https://registry.npmjs.org/@deephaven/components/-/components-0.91.0.tgz",
-          "integrity": "sha512-GmEmOqw/njgPtHnC7i09c2q9Og7qFFKqfqklJvoha6kOZwiVjAPaign2ifmy388vvWMRhtwF8pK3mzjegj1xrQ==",
+          "version": "0.95.0",
+          "resolved": "https://registry.npmjs.org/@deephaven/components/-/components-0.95.0.tgz",
+          "integrity": "sha512-LRLV+HMnd18KlJyNR1p5eWZiu1PnCfQUW0WQDes7sgtj/vaVN11xiVWQJxc09RITw4CxBvElC9HZ+/JQOHZnGQ==",
           "requires": {
             "@adobe/react-spectrum": "3.35.1",
-            "@deephaven/icons": "^0.91.0",
-            "@deephaven/log": "^0.91.0",
-            "@deephaven/react-hooks": "^0.91.0",
-            "@deephaven/utils": "^0.91.0",
+            "@deephaven/icons": "^0.95.0",
+            "@deephaven/log": "^0.95.0",
+            "@deephaven/react-hooks": "^0.95.0",
+            "@deephaven/utils": "^0.95.0",
             "@fortawesome/fontawesome-svg-core": "^6.2.1",
             "@fortawesome/react-fontawesome": "^0.2.0",
             "@internationalized/date": "^3.5.5",
@@ -35901,16 +35911,16 @@
           }
         },
         "@deephaven/dashboard": {
-          "version": "0.91.0",
-          "resolved": "https://registry.npmjs.org/@deephaven/dashboard/-/dashboard-0.91.0.tgz",
-          "integrity": "sha512-A8L2emY3o2qYmUdh0O3j7y5Za/gF912+bP0gVxDnGG5ayMuWUVJAl8Mtluj5Coz/MxP48VdyEGQGuNNh2ggnvw==",
-          "requires": {
-            "@deephaven/components": "^0.91.0",
-            "@deephaven/golden-layout": "^0.91.0",
-            "@deephaven/log": "^0.91.0",
-            "@deephaven/react-hooks": "^0.91.0",
-            "@deephaven/redux": "^0.91.0",
-            "@deephaven/utils": "^0.91.0",
+          "version": "0.95.0",
+          "resolved": "https://registry.npmjs.org/@deephaven/dashboard/-/dashboard-0.95.0.tgz",
+          "integrity": "sha512-ehecVa92ZplXX31AWiWaT29BWuvOZq/Mr0fRhHOgtvFvjMyfl+u9bIZ8xmBguVbjn2ZhMdDwygVzw1uvUx7Yiw==",
+          "requires": {
+            "@deephaven/components": "^0.95.0",
+            "@deephaven/golden-layout": "^0.95.0",
+            "@deephaven/log": "^0.95.0",
+            "@deephaven/react-hooks": "^0.95.0",
+            "@deephaven/redux": "^0.95.0",
+            "@deephaven/utils": "^0.95.0",
             "fast-deep-equal": "^3.1.3",
             "lodash.ismatch": "^4.1.1",
             "lodash.throttle": "^4.1.1",
@@ -35919,30 +35929,30 @@
           }
         },
         "@deephaven/dashboard-core-plugins": {
-          "version": "0.91.0",
-          "resolved": "https://registry.npmjs.org/@deephaven/dashboard-core-plugins/-/dashboard-core-plugins-0.91.0.tgz",
-          "integrity": "sha512-Y7mBd5feexOi5Q6Os/3YNXTSShIEzmw2TMdvDnup+6WEHx29xuw0RVRXI0Ru52MKTB7mdkNAwHXerYGGXy3zrg==",
-          "requires": {
-            "@deephaven/chart": "^0.91.0",
-            "@deephaven/components": "^0.91.0",
-            "@deephaven/console": "^0.91.0",
-            "@deephaven/dashboard": "^0.91.0",
-            "@deephaven/file-explorer": "^0.91.0",
-            "@deephaven/filters": "^0.91.0",
-            "@deephaven/golden-layout": "^0.91.0",
-            "@deephaven/grid": "^0.91.0",
-            "@deephaven/icons": "^0.91.0",
-            "@deephaven/iris-grid": "^0.91.0",
-            "@deephaven/jsapi-bootstrap": "^0.91.0",
-            "@deephaven/jsapi-components": "^0.91.0",
+          "version": "0.95.0",
+          "resolved": "https://registry.npmjs.org/@deephaven/dashboard-core-plugins/-/dashboard-core-plugins-0.95.0.tgz",
+          "integrity": "sha512-+a2MEYZ2e/63MWN8PHd+a+evXZbjfBxD4ltIJ89A65zKdS94RGLvevoUHuFpGCOlDmA/7JTjBHPZbgEyaFbw1A==",
+          "requires": {
+            "@deephaven/chart": "^0.95.0",
+            "@deephaven/components": "^0.95.0",
+            "@deephaven/console": "^0.95.0",
+            "@deephaven/dashboard": "^0.95.0",
+            "@deephaven/file-explorer": "^0.95.0",
+            "@deephaven/filters": "^0.95.0",
+            "@deephaven/golden-layout": "^0.95.0",
+            "@deephaven/grid": "^0.95.0",
+            "@deephaven/icons": "^0.95.0",
+            "@deephaven/iris-grid": "^0.95.0",
+            "@deephaven/jsapi-bootstrap": "^0.95.0",
+            "@deephaven/jsapi-components": "^0.95.0",
             "@deephaven/jsapi-types": "^1.0.0-dev0.34.0",
-            "@deephaven/jsapi-utils": "^0.91.0",
-            "@deephaven/log": "^0.91.0",
-            "@deephaven/plugin": "^0.91.0",
-            "@deephaven/react-hooks": "^0.91.0",
-            "@deephaven/redux": "^0.91.0",
-            "@deephaven/storage": "^0.91.0",
-            "@deephaven/utils": "^0.91.0",
+            "@deephaven/jsapi-utils": "^0.95.0",
+            "@deephaven/log": "^0.95.0",
+            "@deephaven/plugin": "^0.95.0",
+            "@deephaven/react-hooks": "^0.95.0",
+            "@deephaven/redux": "^0.95.0",
+            "@deephaven/storage": "^0.95.0",
+            "@deephaven/utils": "^0.95.0",
             "@fortawesome/react-fontawesome": "^0.2.0",
             "classnames": "^2.3.1",
             "fast-deep-equal": "^3.1.3",
@@ -35962,19 +35972,19 @@
           },
           "dependencies": {
             "@deephaven/console": {
-              "version": "0.91.0",
-              "resolved": "https://registry.npmjs.org/@deephaven/console/-/console-0.91.0.tgz",
-              "integrity": "sha512-9jdvLDiygaJKf4dC6O5Zg5gZ7SVg2Y+hhhmwdALCfFU3oP56d8/ABCpzOqQ/EFpUw9u9M5o+scKKfD4knHjYZg==",
+              "version": "0.95.0",
+              "resolved": "https://registry.npmjs.org/@deephaven/console/-/console-0.95.0.tgz",
+              "integrity": "sha512-JSM6w7iH0Pxbl1AMQyz54vyRch+d3HD2PGDfrhdc+ezvTv5aGqLD7THStGGe1y1byig0OE4SBwR48crlHpNBIA==",
               "requires": {
-                "@deephaven/chart": "^0.91.0",
-                "@deephaven/components": "^0.91.0",
-                "@deephaven/icons": "^0.91.0",
-                "@deephaven/jsapi-bootstrap": "^0.91.0",
+                "@deephaven/chart": "^0.95.0",
+                "@deephaven/components": "^0.95.0",
+                "@deephaven/icons": "^0.95.0",
+                "@deephaven/jsapi-bootstrap": "^0.95.0",
                 "@deephaven/jsapi-types": "^1.0.0-dev0.34.0",
-                "@deephaven/log": "^0.91.0",
-                "@deephaven/react-hooks": "^0.91.0",
-                "@deephaven/storage": "^0.91.0",
-                "@deephaven/utils": "^0.91.0",
+                "@deephaven/log": "^0.95.0",
+                "@deephaven/react-hooks": "^0.95.0",
+                "@deephaven/storage": "^0.95.0",
+                "@deephaven/utils": "^0.95.0",
                 "@fortawesome/react-fontawesome": "^0.2.0",
                 "classnames": "^2.3.1",
                 "linkifyjs": "^4.1.0",
@@ -35991,15 +36001,15 @@
               }
             },
             "@deephaven/file-explorer": {
-              "version": "0.91.0",
-              "resolved": "https://registry.npmjs.org/@deephaven/file-explorer/-/file-explorer-0.91.0.tgz",
-              "integrity": "sha512-nj9xk1Sc4q9MPbUSnFcOylgPTdhIhY8nopoaV9kKcqP1F7GfS86B83DSeILVc59OQDHeB9/+CLIb5kdhVrJglA==",
+              "version": "0.95.0",
+              "resolved": "https://registry.npmjs.org/@deephaven/file-explorer/-/file-explorer-0.95.0.tgz",
+              "integrity": "sha512-7fuE6aVEuMVDTPaM1Z3S1EdzdeQg/hSW9Xjtt8IUJkYgqMlx77hPy+Dv4ob3YxImhDYVkzVXujiLyypk/Gl5lA==",
               "requires": {
-                "@deephaven/components": "^0.91.0",
-                "@deephaven/icons": "^0.91.0",
-                "@deephaven/log": "^0.91.0",
-                "@deephaven/storage": "^0.91.0",
-                "@deephaven/utils": "^0.91.0",
+                "@deephaven/components": "^0.95.0",
+                "@deephaven/icons": "^0.95.0",
+                "@deephaven/log": "^0.95.0",
+                "@deephaven/storage": "^0.95.0",
+                "@deephaven/utils": "^0.95.0",
                 "@fortawesome/fontawesome-svg-core": "^6.2.1",
                 "@fortawesome/react-fontawesome": "^0.2.0",
                 "classnames": "^2.3.1",
@@ -36008,38 +36018,38 @@
               }
             },
             "@deephaven/storage": {
-              "version": "0.91.0",
-              "resolved": "https://registry.npmjs.org/@deephaven/storage/-/storage-0.91.0.tgz",
-              "integrity": "sha512-eEEj0UAJOSosad8kxuENbP2ByIyr1IBMHtWvu8sJ4TX2s3VphNunFnHgwP5ekA3UpjvwtxhoUvCRXc2iaNVxEQ==",
+              "version": "0.95.0",
+              "resolved": "https://registry.npmjs.org/@deephaven/storage/-/storage-0.95.0.tgz",
+              "integrity": "sha512-Gsc/p9fHrrSdzMtZ/a6/IpSzs2VT3WTOBSspWD0G7P0v682adXl7d25YFdl6uYIQSMq/tBU+JtTgAegMN5zfGg==",
               "requires": {
-                "@deephaven/filters": "^0.91.0",
-                "@deephaven/log": "^0.91.0",
+                "@deephaven/filters": "^0.95.0",
+                "@deephaven/log": "^0.95.0",
                 "lodash.throttle": "^4.1.1"
               }
             }
           }
         },
         "@deephaven/filters": {
-          "version": "0.91.0",
-          "resolved": "https://registry.npmjs.org/@deephaven/filters/-/filters-0.91.0.tgz",
-          "integrity": "sha512-ELWgt6m98+OGoRdvjhhTXUUSzo1ry/h9RTVDnmRK9qwGoT3rnqYvrqyFaOzaVLhsrK/3iYZoM2yLQkq0dPikVA=="
+          "version": "0.95.0",
+          "resolved": "https://registry.npmjs.org/@deephaven/filters/-/filters-0.95.0.tgz",
+          "integrity": "sha512-eU5VtrCJgdPzikML5Y4mW3tkuPIxs99+OTZent22gH6Dm3PBt+gjPrjpLpm4IHTdtR1SL2TSDi1ETf2j5+eO9Q=="
         },
         "@deephaven/golden-layout": {
-          "version": "0.91.0",
-          "resolved": "https://registry.npmjs.org/@deephaven/golden-layout/-/golden-layout-0.91.0.tgz",
-          "integrity": "sha512-WzoIhOp1aENZJrVagE8W4M1zEc76rkTm0MxYIduBO1RtqRjpunoAR+RWUmMwfPaOIp8dxX+RfJz+YFlKdZEs6A==",
+          "version": "0.95.0",
+          "resolved": "https://registry.npmjs.org/@deephaven/golden-layout/-/golden-layout-0.95.0.tgz",
+          "integrity": "sha512-OyKW/v+KK9QiRLMJMOcv+49z3UjW8BO2xnPdJN2Nt1Aep18QUIFdFK/nm45SqfL7gkecOrOEDcElyD4aWz0tcw==",
           "requires": {
-            "@deephaven/components": "^0.91.0",
+            "@deephaven/components": "^0.95.0",
             "jquery": "^3.6.0",
             "nanoid": "^5.0.7"
           }
         },
         "@deephaven/grid": {
-          "version": "0.91.0",
-          "resolved": "https://registry.npmjs.org/@deephaven/grid/-/grid-0.91.0.tgz",
-          "integrity": "sha512-fOv2RrXKWIpwH4G+6pypFE1WIbYYjz8K4PcRvwPdob8RRI2C83HpIWQS/XSot0WqzITu2rqOYwWxfHu7+BGcyg==",
+          "version": "0.95.0",
+          "resolved": "https://registry.npmjs.org/@deephaven/grid/-/grid-0.95.0.tgz",
+          "integrity": "sha512-iODcW/uRLqh85MsC6QCnYVCoPzsBZNs6wN1Kjb71XR/AhtrMskgfJb3kJasysfKLEC5Prk8BwvGu8jdIyNs8qw==",
           "requires": {
-            "@deephaven/utils": "^0.91.0",
+            "@deephaven/utils": "^0.95.0",
             "classnames": "^2.3.1",
             "color-convert": "^2.0.1",
             "event-target-shim": "^6.0.2",
@@ -36051,30 +36061,30 @@
           }
         },
         "@deephaven/icons": {
-          "version": "0.91.0",
-          "resolved": "https://registry.npmjs.org/@deephaven/icons/-/icons-0.91.0.tgz",
-          "integrity": "sha512-b+b//+gk8ZJz+JXURCw99FSQlExN89V3+F+LWVHJc+L3bzMa7pR2vhMVTKG0hG2tqF9ZDU8cYWGIS6o+6uiv2w==",
+          "version": "0.95.0",
+          "resolved": "https://registry.npmjs.org/@deephaven/icons/-/icons-0.95.0.tgz",
+          "integrity": "sha512-BJ0SS7GbJYJ2V0u5on1VDx2v+DZ77t18MqvfXWvYuV5DjODwMRjP8XsEKyH05c+jdXMZsyB+gv2+jysPTGcSBw==",
           "requires": {
             "@fortawesome/fontawesome-common-types": "^6.1.1"
           }
         },
         "@deephaven/iris-grid": {
-          "version": "0.91.0",
-          "resolved": "https://registry.npmjs.org/@deephaven/iris-grid/-/iris-grid-0.91.0.tgz",
-          "integrity": "sha512-OgJvZg9z0KBbVoAXgPQiuJDScOrtfn8CouWd7G2WkJtVxK3OC3Rdeg5QLv8n54Lg2nwtrhuow6DV4oxybAv8gA==",
-          "requires": {
-            "@deephaven/components": "^0.91.0",
-            "@deephaven/console": "^0.91.0",
-            "@deephaven/filters": "^0.91.0",
-            "@deephaven/grid": "^0.91.0",
-            "@deephaven/icons": "^0.91.0",
-            "@deephaven/jsapi-components": "^0.91.0",
+          "version": "0.95.0",
+          "resolved": "https://registry.npmjs.org/@deephaven/iris-grid/-/iris-grid-0.95.0.tgz",
+          "integrity": "sha512-wOs66BHXR0GPBAe2UIEQIG/Av8/Ju+96+u6+1dzS5afFfiKSoIxNxTi+HOklj9QkCDcAbPQ/pg6/eZThWfZS4g==",
+          "requires": {
+            "@deephaven/components": "^0.95.0",
+            "@deephaven/console": "^0.95.0",
+            "@deephaven/filters": "^0.95.0",
+            "@deephaven/grid": "^0.95.0",
+            "@deephaven/icons": "^0.95.0",
+            "@deephaven/jsapi-components": "^0.95.0",
             "@deephaven/jsapi-types": "^1.0.0-dev0.34.0",
-            "@deephaven/jsapi-utils": "^0.91.0",
-            "@deephaven/log": "^0.91.0",
-            "@deephaven/react-hooks": "^0.91.0",
-            "@deephaven/storage": "^0.91.0",
-            "@deephaven/utils": "^0.91.0",
+            "@deephaven/jsapi-utils": "^0.95.0",
+            "@deephaven/log": "^0.95.0",
+            "@deephaven/react-hooks": "^0.95.0",
+            "@deephaven/storage": "^0.95.0",
+            "@deephaven/utils": "^0.95.0",
             "@dnd-kit/core": "^6.1.0",
             "@dnd-kit/sortable": "^7.0.2",
             "@dnd-kit/utilities": "^3.2.2",
@@ -36094,19 +36104,19 @@
           },
           "dependencies": {
             "@deephaven/console": {
-              "version": "0.91.0",
-              "resolved": "https://registry.npmjs.org/@deephaven/console/-/console-0.91.0.tgz",
-              "integrity": "sha512-9jdvLDiygaJKf4dC6O5Zg5gZ7SVg2Y+hhhmwdALCfFU3oP56d8/ABCpzOqQ/EFpUw9u9M5o+scKKfD4knHjYZg==",
+              "version": "0.95.0",
+              "resolved": "https://registry.npmjs.org/@deephaven/console/-/console-0.95.0.tgz",
+              "integrity": "sha512-JSM6w7iH0Pxbl1AMQyz54vyRch+d3HD2PGDfrhdc+ezvTv5aGqLD7THStGGe1y1byig0OE4SBwR48crlHpNBIA==",
               "requires": {
-                "@deephaven/chart": "^0.91.0",
-                "@deephaven/components": "^0.91.0",
-                "@deephaven/icons": "^0.91.0",
-                "@deephaven/jsapi-bootstrap": "^0.91.0",
+                "@deephaven/chart": "^0.95.0",
+                "@deephaven/components": "^0.95.0",
+                "@deephaven/icons": "^0.95.0",
+                "@deephaven/jsapi-bootstrap": "^0.95.0",
                 "@deephaven/jsapi-types": "^1.0.0-dev0.34.0",
-                "@deephaven/log": "^0.91.0",
-                "@deephaven/react-hooks": "^0.91.0",
-                "@deephaven/storage": "^0.91.0",
-                "@deephaven/utils": "^0.91.0",
+                "@deephaven/log": "^0.95.0",
+                "@deephaven/react-hooks": "^0.95.0",
+                "@deephaven/storage": "^0.95.0",
+                "@deephaven/utils": "^0.95.0",
                 "@fortawesome/react-fontawesome": "^0.2.0",
                 "classnames": "^2.3.1",
                 "linkifyjs": "^4.1.0",
@@ -36123,41 +36133,41 @@
               }
             },
             "@deephaven/storage": {
-              "version": "0.91.0",
-              "resolved": "https://registry.npmjs.org/@deephaven/storage/-/storage-0.91.0.tgz",
-              "integrity": "sha512-eEEj0UAJOSosad8kxuENbP2ByIyr1IBMHtWvu8sJ4TX2s3VphNunFnHgwP5ekA3UpjvwtxhoUvCRXc2iaNVxEQ==",
+              "version": "0.95.0",
+              "resolved": "https://registry.npmjs.org/@deephaven/storage/-/storage-0.95.0.tgz",
+              "integrity": "sha512-Gsc/p9fHrrSdzMtZ/a6/IpSzs2VT3WTOBSspWD0G7P0v682adXl7d25YFdl6uYIQSMq/tBU+JtTgAegMN5zfGg==",
               "requires": {
-                "@deephaven/filters": "^0.91.0",
-                "@deephaven/log": "^0.91.0",
+                "@deephaven/filters": "^0.95.0",
+                "@deephaven/log": "^0.95.0",
                 "lodash.throttle": "^4.1.1"
               }
             }
           }
         },
         "@deephaven/jsapi-bootstrap": {
-          "version": "0.91.0",
-          "resolved": "https://registry.npmjs.org/@deephaven/jsapi-bootstrap/-/jsapi-bootstrap-0.91.0.tgz",
-          "integrity": "sha512-00irzZyhEIqRn000ZH38+zk1tOjBsaWhn35/weg5HNL4gbBtW4sg5+hsDHRzYhbEqbJDErvgNUPml23Rll732g==",
+          "version": "0.95.0",
+          "resolved": "https://registry.npmjs.org/@deephaven/jsapi-bootstrap/-/jsapi-bootstrap-0.95.0.tgz",
+          "integrity": "sha512-UJ9akQyFFRJKpf9vm0o9jp3JZWjjOXIR6KHUXAUgNoEccTTSdH1xMkHFrfTGuXYFtnSC3L7HCSzW07EcEXoZtQ==",
           "requires": {
-            "@deephaven/components": "^0.91.0",
+            "@deephaven/components": "^0.95.0",
             "@deephaven/jsapi-types": "^1.0.0-dev0.34.0",
-            "@deephaven/log": "^0.91.0",
-            "@deephaven/react-hooks": "^0.91.0",
-            "@deephaven/utils": "^0.91.0"
+            "@deephaven/log": "^0.95.0",
+            "@deephaven/react-hooks": "^0.95.0",
+            "@deephaven/utils": "^0.95.0"
           }
         },
         "@deephaven/jsapi-components": {
-          "version": "0.91.0",
-          "resolved": "https://registry.npmjs.org/@deephaven/jsapi-components/-/jsapi-components-0.91.0.tgz",
-          "integrity": "sha512-h5pgltU/S5+NoaYKdOJbCyLvx+6zmakiXIVS4GXo5P+mnOHyALvylxDT29jkGcgbPjNLLejWwjaIGHSSWWGG8w==",
+          "version": "0.95.0",
+          "resolved": "https://registry.npmjs.org/@deephaven/jsapi-components/-/jsapi-components-0.95.0.tgz",
+          "integrity": "sha512-9WCbJHEcblUXHOMThHxHrb4FFZQ8EZeQlPJc0vK1aTTi5m4S/rIkGMiCD2maJyi5wDlDj9q9syUl1qLDCl2qtQ==",
           "requires": {
-            "@deephaven/components": "^0.91.0",
-            "@deephaven/jsapi-bootstrap": "^0.91.0",
+            "@deephaven/components": "^0.95.0",
+            "@deephaven/jsapi-bootstrap": "^0.95.0",
             "@deephaven/jsapi-types": "^1.0.0-dev0.34.0",
-            "@deephaven/jsapi-utils": "^0.91.0",
-            "@deephaven/log": "^0.91.0",
-            "@deephaven/react-hooks": "^0.91.0",
-            "@deephaven/utils": "^0.91.0",
+            "@deephaven/jsapi-utils": "^0.95.0",
+            "@deephaven/log": "^0.95.0",
+            "@deephaven/react-hooks": "^0.95.0",
+            "@deephaven/utils": "^0.95.0",
             "@types/js-cookie": "^3.0.3",
             "classnames": "^2.3.2",
             "js-cookie": "^3.0.5",
@@ -36171,74 +36181,74 @@
           "integrity": "sha512-X35g2ktmXbiTwjMNF20IkuNawJJ6Tlvrv23VuUVIjWHkpWcmyCYWIBle2zo7QAF6nnJpkccwFKJiC+TIkWl7hg=="
         },
         "@deephaven/jsapi-utils": {
-          "version": "0.91.0",
-          "resolved": "https://registry.npmjs.org/@deephaven/jsapi-utils/-/jsapi-utils-0.91.0.tgz",
-          "integrity": "sha512-7+52u4fGeCU5Zy+bUi+uqv/tNujq1fdaBw4XjEcC+KSW3ojPo+xzpdl8E0L7IPYgD2ep/IPosaq/kbLp6JU3+g==",
+          "version": "0.95.0",
+          "resolved": "https://registry.npmjs.org/@deephaven/jsapi-utils/-/jsapi-utils-0.95.0.tgz",
+          "integrity": "sha512-nr0MK33wDl9deaO2909BV538APzd8teMPDeXkmySM3ayEFVXjAFFDqONTY5ysLFcEtMSDiSXZBizWrKtpsjtaA==",
           "requires": {
-            "@deephaven/filters": "^0.91.0",
+            "@deephaven/filters": "^0.95.0",
             "@deephaven/jsapi-types": "^1.0.0-dev0.34.0",
-            "@deephaven/log": "^0.91.0",
-            "@deephaven/utils": "^0.91.0",
+            "@deephaven/log": "^0.95.0",
+            "@deephaven/utils": "^0.95.0",
             "lodash.clamp": "^4.0.3",
             "nanoid": "^5.0.7"
           }
         },
         "@deephaven/log": {
-          "version": "0.91.0",
-          "resolved": "https://registry.npmjs.org/@deephaven/log/-/log-0.91.0.tgz",
-          "integrity": "sha512-IXT6+0XiR+5bhm5+3XELZFMTKPMZBmdckhswdJibrID0l79wgGiqKiqSnBjn1mFOGuOO+JYqU4KzoaIRJXZdyA==",
+          "version": "0.95.0",
+          "resolved": "https://registry.npmjs.org/@deephaven/log/-/log-0.95.0.tgz",
+          "integrity": "sha512-2p3X+FlSDOlBVCBMy8N1hL6wU4akIDHY1yhJ0mrUkHEwPn3ESAGpLlWWvjY7wHt9mvgFGbjIjpgsQPA9x06EnA==",
           "requires": {
             "event-target-shim": "^6.0.2"
           }
         },
         "@deephaven/plugin": {
-          "version": "0.91.0",
-          "resolved": "https://registry.npmjs.org/@deephaven/plugin/-/plugin-0.91.0.tgz",
-          "integrity": "sha512-ip2b2VG8wus88ySOUaKg4XfrCtgLd7eH6f8CswuFnSNbYVcg+UurbGJRvBAvX1F8JYgwJeWIzyiEHkYKYT1i4g==",
-          "requires": {
-            "@deephaven/components": "^0.91.0",
-            "@deephaven/golden-layout": "^0.91.0",
-            "@deephaven/grid": "^0.91.0",
-            "@deephaven/icons": "^0.91.0",
-            "@deephaven/iris-grid": "^0.91.0",
+          "version": "0.95.0",
+          "resolved": "https://registry.npmjs.org/@deephaven/plugin/-/plugin-0.95.0.tgz",
+          "integrity": "sha512-yUHkEzgT6JtbLfOhbMPOoQLbi8/TrZ+/pHo2FG84sOmv4nGAcXsuBw9yjcrzRF17nLoRT7sihXIayAvlghZ1wQ==",
+          "requires": {
+            "@deephaven/components": "^0.95.0",
+            "@deephaven/golden-layout": "^0.95.0",
+            "@deephaven/grid": "^0.95.0",
+            "@deephaven/icons": "^0.95.0",
+            "@deephaven/iris-grid": "^0.95.0",
             "@deephaven/jsapi-types": "^1.0.0-dev0.34.0",
-            "@deephaven/log": "^0.91.0",
-            "@deephaven/react-hooks": "^0.91.0",
+            "@deephaven/log": "^0.95.0",
+            "@deephaven/react-hooks": "^0.95.0",
             "@fortawesome/fontawesome-common-types": "^6.1.1",
             "@fortawesome/react-fontawesome": "^0.2.0"
           }
         },
         "@deephaven/react-hooks": {
-          "version": "0.91.0",
-          "resolved": "https://registry.npmjs.org/@deephaven/react-hooks/-/react-hooks-0.91.0.tgz",
-          "integrity": "sha512-G08G2RBPREpQIEYJ0FelvwqzsSqaq5/uG36kFspyxa8pkxQ5Lf9Bxqsnx/McR4sRYzVlbr1ADcL7r2Ecl19Ddg==",
+          "version": "0.95.0",
+          "resolved": "https://registry.npmjs.org/@deephaven/react-hooks/-/react-hooks-0.95.0.tgz",
+          "integrity": "sha512-bC0gAgZcl5GrjSThdtUNMeXrjhE4z6iZk9YgVo6QqINq0BCMEo4C8ZmAozWxyJoiyDMhmALXI2MaQ7uaoTfgyQ==",
           "requires": {
             "@adobe/react-spectrum": "3.35.1",
-            "@deephaven/log": "^0.91.0",
-            "@deephaven/utils": "^0.91.0",
+            "@deephaven/log": "^0.95.0",
+            "@deephaven/utils": "^0.95.0",
             "lodash.debounce": "^4.0.8",
             "lodash.throttle": "^4.1.1",
             "nanoid": "^5.0.7"
           }
         },
         "@deephaven/redux": {
-          "version": "0.91.0",
-          "resolved": "https://registry.npmjs.org/@deephaven/redux/-/redux-0.91.0.tgz",
-          "integrity": "sha512-1JnXcBUpxQDLT65S2SPA4hkoKc0tCkThzTV28zKQy+4pqGP5oD5QmlcgtUkeTqQPsNqEf8ZO9XZjkZHpQ0xqVQ==",
+          "version": "0.95.0",
+          "resolved": "https://registry.npmjs.org/@deephaven/redux/-/redux-0.95.0.tgz",
+          "integrity": "sha512-8sI3J0G3FDyIudOiBKTyhbfe2srRC77/QsSHF/zuQJbBF7K4RB8JIbiZktY9HBf6kMv1RnCab0fZlzxtSRGOyQ==",
           "requires": {
             "@deephaven/jsapi-types": "^1.0.0-dev0.34.0",
-            "@deephaven/jsapi-utils": "^0.91.0",
-            "@deephaven/log": "^0.91.0",
-            "@deephaven/plugin": "^0.91.0",
+            "@deephaven/jsapi-utils": "^0.95.0",
+            "@deephaven/log": "^0.95.0",
+            "@deephaven/plugin": "^0.95.0",
             "fast-deep-equal": "^3.1.3",
             "proxy-memoize": "^3.0.0",
             "redux-thunk": "2.4.1"
           }
         },
         "@deephaven/utils": {
-          "version": "0.91.0",
-          "resolved": "https://registry.npmjs.org/@deephaven/utils/-/utils-0.91.0.tgz",
-          "integrity": "sha512-MQAnLvJux9N6ZeCdxWle6NEJ8dqrpxVtkMd9oVqqa0mjmRVPjz6UuT8Hl10VagrYJya1TjKHizW3BrDyhYPQ1w=="
+          "version": "0.95.0",
+          "resolved": "https://registry.npmjs.org/@deephaven/utils/-/utils-0.95.0.tgz",
+          "integrity": "sha512-knAh6xxNl1b2dqsCv6Jv87+3gC2OmGqCW/Ub7FXSsoY+qRWO7r5LG7DkVi9S2kLxVgzNH2tWSqSOA7AUt+wLyQ=="
         },
         "buffer": {
           "version": "6.0.3",
@@ -36503,6 +36513,11 @@
         }
       }
     },
+    "@deephaven/test-utils": {
+      "version": "0.95.0",
+      "resolved": "https://registry.npmjs.org/@deephaven/test-utils/-/test-utils-0.95.0.tgz",
+      "integrity": "sha512-zXfPHujH5Gtz1Z2A84zgXQDfoZHxu3aE7DepKlmcq6UPcKBvhFS46GwqIYIGB4Jclc4e+Iu8HjYVvwrXxZgVIg=="
+    },
     "@deephaven/tsconfig": {
       "version": "0.72.0",
       "dev": true
diff --git a/plugins/ui/src/js/__mocks__/@deephaven/log.js b/plugins/ui/src/js/__mocks__/@deephaven/log.js
new file mode 100644
index 000000000..3f4e5be52
--- /dev/null
+++ b/plugins/ui/src/js/__mocks__/@deephaven/log.js
@@ -0,0 +1,14 @@
+const Log = {
+  module: () => ({
+    debug: jest.fn().mockName('debug'),
+    debug2: jest.fn().mockName('debug2'),
+    error: jest.fn().mockName('error'),
+    info: jest.fn().mockName('info'),
+    log: jest.fn().mockName('log'),
+    warn: jest.fn().mockName('warn'),
+  }),
+  setLogLevel: jest.fn().mockName('setLogLevel'),
+};
+
+module.exports = Log;
+module.exports.Log = Log;
diff --git a/plugins/ui/src/js/package.json b/plugins/ui/src/js/package.json
index f1c84fc46..247da5b77 100644
--- a/plugins/ui/src/js/package.json
+++ b/plugins/ui/src/js/package.json
@@ -39,23 +39,24 @@
     "react-dom": "^17.0.2"
   },
   "dependencies": {
-    "@deephaven/chart": "^0.91.0",
-    "@deephaven/components": "^0.91.0",
-    "@deephaven/dashboard": "^0.91.0",
-    "@deephaven/dashboard-core-plugins": "^0.91.0",
-    "@deephaven/golden-layout": "^0.91.0",
-    "@deephaven/grid": "^0.91.0",
-    "@deephaven/icons": "^0.91.0",
-    "@deephaven/iris-grid": "^0.91.0",
-    "@deephaven/jsapi-bootstrap": "^0.91.0",
-    "@deephaven/jsapi-components": "^0.91.0",
+    "@deephaven/chart": "^0.95.0",
+    "@deephaven/components": "^0.95.0",
+    "@deephaven/dashboard": "^0.95.0",
+    "@deephaven/dashboard-core-plugins": "^0.95.0",
+    "@deephaven/golden-layout": "^0.95.0",
+    "@deephaven/grid": "^0.95.0",
+    "@deephaven/icons": "^0.95.0",
+    "@deephaven/iris-grid": "^0.95.0",
+    "@deephaven/jsapi-bootstrap": "^0.95.0",
+    "@deephaven/jsapi-components": "^0.95.0",
     "@deephaven/jsapi-types": "^1.0.0-dev0.35.0",
-    "@deephaven/jsapi-utils": "^0.91.0",
-    "@deephaven/log": "^0.91.0",
-    "@deephaven/plugin": "^0.91.0",
-    "@deephaven/react-hooks": "^0.91.0",
-    "@deephaven/redux": "^0.91.0",
-    "@deephaven/utils": "^0.91.0",
+    "@deephaven/jsapi-utils": "^0.95.0",
+    "@deephaven/log": "^0.95.0",
+    "@deephaven/plugin": "^0.95.0",
+    "@deephaven/react-hooks": "^0.95.0",
+    "@deephaven/redux": "^0.95.0",
+    "@deephaven/test-utils": "^0.95.0",
+    "@deephaven/utils": "^0.95.0",
     "@fortawesome/react-fontawesome": "^0.2.0",
     "@internationalized/date": "^3.5.5",
     "classnames": "^2.5.1",
diff --git a/plugins/ui/src/js/src/widget/WidgetTestUtils.ts b/plugins/ui/src/js/src/widget/WidgetTestUtils.ts
index a452944ff..d3220e171 100644
--- a/plugins/ui/src/js/src/widget/WidgetTestUtils.ts
+++ b/plugins/ui/src/js/src/widget/WidgetTestUtils.ts
@@ -1,5 +1,5 @@
 import { WidgetDescriptor } from '@deephaven/dashboard';
-import { TestUtils } from '@deephaven/utils';
+import { TestUtils } from '@deephaven/test-utils';
 import type { dh } from '@deephaven/jsapi-types';
 import { WidgetMessageEvent } from './WidgetTypes';
 


Test patch:
diff --git a/plugins/ui/src/js/src/elements/utils/ElementUtils.test.tsx b/plugins/ui/src/js/src/elements/utils/ElementUtils.test.tsx
index c3a0767a3..bb120bd56 100644
--- a/plugins/ui/src/js/src/elements/utils/ElementUtils.test.tsx
+++ b/plugins/ui/src/js/src/elements/utils/ElementUtils.test.tsx
@@ -1,7 +1,7 @@
 import React from 'react';
 import { Text } from '@deephaven/components';
 import type { dh } from '@deephaven/jsapi-types';
-import { TestUtils } from '@deephaven/utils';
+import { TestUtils } from '@deephaven/test-utils';
 import {
   ELEMENT_KEY,
   fetchReexportedTable,
diff --git a/plugins/ui/src/js/src/layout/LayoutUtils.test.tsx b/plugins/ui/src/js/src/layout/LayoutUtils.test.tsx
index a8b452c6a..7c3fe1d6e 100644
--- a/plugins/ui/src/js/src/layout/LayoutUtils.test.tsx
+++ b/plugins/ui/src/js/src/layout/LayoutUtils.test.tsx
@@ -1,6 +1,6 @@
 /* eslint-disable react/jsx-key */
 import React from 'react';
-import { TestUtils } from '@deephaven/utils';
+import { TestUtils } from '@deephaven/test-utils';
 import Column from './Column';
 import {
   isPanelElementNode,
diff --git a/plugins/ui/src/js/src/layout/ReactPanel.test.tsx b/plugins/ui/src/js/src/layout/ReactPanel.test.tsx
index a30e72c80..dc6905e38 100644
--- a/plugins/ui/src/js/src/layout/ReactPanel.test.tsx
+++ b/plugins/ui/src/js/src/layout/ReactPanel.test.tsx
@@ -5,7 +5,7 @@ import {
   WidgetDescriptor,
   useListener,
 } from '@deephaven/dashboard';
-import { TestUtils } from '@deephaven/utils';
+import { TestUtils } from '@deephaven/test-utils';
 import ReactPanel from './ReactPanel';
 import {
   ReactPanelManager,
diff --git a/plugins/ui/src/js/src/widget/DocumentHandler.test.tsx b/plugins/ui/src/js/src/widget/DocumentHandler.test.tsx
index 0cf6037ce..f45127afd 100644
--- a/plugins/ui/src/js/src/widget/DocumentHandler.test.tsx
+++ b/plugins/ui/src/js/src/widget/DocumentHandler.test.tsx
@@ -1,6 +1,6 @@
 import React from 'react';
 import { WidgetDescriptor } from '@deephaven/dashboard';
-import { TestUtils } from '@deephaven/utils';
+import { TestUtils } from '@deephaven/test-utils';
 import { render } from '@testing-library/react';
 import DocumentHandler, { DocumentHandlerProps } from './DocumentHandler';
 import { ReactPanelProps } from '../layout/LayoutUtils';
diff --git a/plugins/ui/src/js/src/widget/WidgetHandler.test.tsx b/plugins/ui/src/js/src/widget/WidgetHandler.test.tsx
index 208c2d744..2d2c7c2a6 100644
--- a/plugins/ui/src/js/src/widget/WidgetHandler.test.tsx
+++ b/plugins/ui/src/js/src/widget/WidgetHandler.test.tsx
@@ -2,7 +2,7 @@ import React from 'react';
 import { act, render } from '@testing-library/react';
 import { useWidget } from '@deephaven/jsapi-bootstrap';
 import { dh } from '@deephaven/jsapi-types';
-import { TestUtils } from '@deephaven/utils';
+import { TestUtils } from '@deephaven/test-utils';
 import WidgetHandler, { WidgetHandlerProps } from './WidgetHandler';
 import { DocumentHandlerProps } from './DocumentHandler';
 import {
@@ -15,6 +15,9 @@ import {
 const mockApi = { Widget: { EVENT_MESSAGE: 'message' } };
 const defaultWidgetWrapper: ReturnType<typeof useWidget> = {
   widget: TestUtils.createMockProxy<dh.Widget>({
+    addEventListener: jest
+      .fn(() => jest.fn().mockName('cleanup'))
+      .mockName('addEventListener'),
     getDataAsString: jest.fn(() => ''),
     exportedObjects: [],
   }),
diff --git a/plugins/ui/src/js/src/widget/WidgetUtils.test.tsx b/plugins/ui/src/js/src/widget/WidgetUtils.test.tsx
index c3d5e7894..e77ec228a 100644
--- a/plugins/ui/src/js/src/widget/WidgetUtils.test.tsx
+++ b/plugins/ui/src/js/src/widget/WidgetUtils.test.tsx
@@ -1,7 +1,7 @@
 import React from 'react';
 import type { JSONRPCServerAndClient } from 'json-rpc-2.0';
 import { Text } from '@deephaven/components';
-import { TestUtils } from '@deephaven/utils';
+import { TestUtils } from '@deephaven/test-utils';
 import {
   ELEMENT_NAME,
   ELEMENT_PREFIX,