diff --git a/app/package.json b/app/package.json index 8b3ec5087b..4c03d27930 100644 --- a/app/package.json +++ b/app/package.json @@ -319,6 +319,7 @@ "@jupyterlab/video-extension": true }, "/tree": { + "@jupyterlab/cell-toolbar-extension": true, "@jupyterlab/extensionmanager-extension": true, "@jupyterlab/filebrowser-extension": [ "@jupyterlab/filebrowser-extension:browser", diff --git a/packages/tree-extension/src/index.ts b/packages/tree-extension/src/index.ts index 21b859f217..27736bfd37 100644 --- a/packages/tree-extension/src/index.ts +++ b/packages/tree-extension/src/index.ts @@ -280,20 +280,22 @@ const loadPlugins: JupyterFrontEndPlugin = { app.restored.then(async () => { const plugins = await connector.list('all'); - plugins.ids.forEach(async (id: string) => { - const [extension] = id.split(':'); - // load the plugin if it is built-in the notebook application explicitly - // either included as an extension or as a plugin directly - const hasPlugin = pluginsSet.has(extension) || pluginsSet.has(id); - if (!hasPlugin || isDisabled(id) || id in settingRegistry.plugins) { - return; - } - try { - await settingRegistry.load(id); - } catch (error) { - console.warn(`Settings failed to load for (${id})`, error); - } - }); + await Promise.all( + plugins.ids.map(async (id: string) => { + const [extension] = id.split(':'); + // load the plugin if it is built-in the notebook application explicitly + // either included as an extension or as a plugin directly + const hasPlugin = pluginsSet.has(extension) || pluginsSet.has(id); + if (!hasPlugin || isDisabled(id) || id in settingRegistry.plugins) { + return; + } + try { + await settingRegistry.load(id); + } catch (error) { + console.warn(`Settings failed to load for (${id})`, error); + } + }) + ); }); }, };