Skip to content

Create concept of 'global plugins' that are added to all instances, and initialized on start screen#5497

Open
cmdcolin wants to merge 6 commits intomainfrom
global_plugins
Open

Create concept of 'global plugins' that are added to all instances, and initialized on start screen#5497
cmdcolin wants to merge 6 commits intomainfrom
global_plugins

Conversation

@cmdcolin
Copy link
Copy Markdown
Collaborator

@cmdcolin cmdcolin commented Mar 4, 2026

This is a possible solution to making Apollo a more 'first class' system for users

It creates the concept of a 'global set of plugins' that will be initialized at the start screen, and also added to all instances

This PR allows plugins to also customize the appearence of the start page by creating a system for swapping out components

It does so by creating a new concept that leverages extension points called PluginComponents, which can be used like this

           <PluggableComponent
              pluginManager={pluginManager} //<-- plugin manager, required
              name="Desktop-StartScreenLaunchPanel" //<-- extension point name
              component={DefaultComponent} //<-- the default component to render if extension point doesn't change it
              props={{ /* props to pass to component here */ }} 
            />

@cmdcolin
Copy link
Copy Markdown
Collaborator Author

This PR now also makes another change which is to make the desktop app behave more like a 'multi-page app'. It uses 'hash routing'. So instead of having complex logic for managing whether we are on the start screen or in the main app, that is determined by literlly navigating to a hash route that says whether we are in the app

Just as a bit of a zoom out, it is nice to break out of the single-page app mindset...multi page apps can do things quite well, particularly when it makes clear sense for there to be multiple pages like the start screen vs jbrowse app

Other pages could potentially be developed too...hash router could even be developed for jbrowse web

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant