@@ -259,26 +259,38 @@ class MenuBar extends React.Component {
259259 }
260260 getMeshV2Status ( ) {
261261 const vm = this . props . vm ;
262- if ( ! vm . runtime || ! vm . runtime . extensionManager ) {
263- console . log ( 'MenuBar: getMeshV2Status - vm.runtime or extensionManager missing' ) ;
262+
263+ console . log ( 'MenuBar: getMeshV2Status - vm:' , vm ) ;
264+ if ( ! vm ) return { loaded : false } ;
265+
266+ // In Smalruby 3 / Scratch 3, extensionManager is directly on the vm instance
267+ const extensionManager = vm . extensionManager ;
268+ if ( ! extensionManager ) {
269+ console . log ( 'MenuBar: getMeshV2Status - extensionManager missing on vm' ) ;
264270 return { loaded : false } ;
265271 }
266272
267- const loadedExtensions = Array . from ( vm . runtime . extensionManager . _loadedExtensions . keys ( ) ) ;
273+ const loadedExtensions = Array . from ( extensionManager . _loadedExtensions . keys ( ) ) ;
268274 console . log ( 'MenuBar: getMeshV2Status - Loaded extensions:' , loadedExtensions ) ;
269275
270- const isLoaded = vm . runtime . extensionManager . isExtensionLoaded ( 'meshV2' ) ;
276+ const isLoaded = extensionManager . isExtensionLoaded ( 'meshV2' ) ;
271277 console . log ( 'MenuBar: getMeshV2Status - isLoaded(meshV2):' , isLoaded ) ;
272278
273279 if ( ! isLoaded ) {
274280 return { loaded : false } ;
275281 }
276282
277- // Get extension instance
278- const peripheralExtensions = Object . keys ( vm . runtime . peripheralExtensions || { } ) ;
283+ // peripheralExtensions is on vm.runtime
284+ const runtime = vm . runtime ;
285+ if ( ! runtime || ! runtime . peripheralExtensions ) {
286+ console . log ( 'MenuBar: getMeshV2Status - runtime or peripheralExtensions missing' ) ;
287+ return { loaded : true , connected : false } ;
288+ }
289+
290+ const peripheralExtensions = Object . keys ( runtime . peripheralExtensions || { } ) ;
279291 console . log ( 'MenuBar: getMeshV2Status - Peripheral extensions:' , peripheralExtensions ) ;
280292
281- const extension = vm . runtime . peripheralExtensions . meshV2 ;
293+ const extension = runtime . peripheralExtensions . meshV2 ;
282294 console . log ( 'MenuBar: getMeshV2Status - meshV2 extension instance:' , extension ) ;
283295
284296 if ( ! extension ) {
0 commit comments