As you mentioned above, “AdvancedPanelControl” is the short name of the library that gets installed automatically as a dependency of Document Explorer.
The full name in my repository is, as you also noticed, “Advanced Panel Control and Window Management” (yes, it’s a mouthful). Apologies for the confusing naming.
Functionally, they are the same thing: same .md file, same .js file. The separation exists purely so users can install Advanced Panel Control on its own, without also having to install Document Explorer, if that’s all they need.
Regarding the configuration: you are correct.
These parameters control the behaviour of the panels (LHS, RHS, and BHS), such as sizing, docking mode, and gesture support.
Those three reload options are all core SilverBullet system commands and are not related to AdvancedPanelControl or Document Explorer specifically.
For clarity, here is when each one is typically used and what it affects in MY understanding:
CLIENT: RELOAD UI
- Use when the browser UI is misbehaving or needs a hard refresh
- Performs a full browser reload
- Unsaved work is lost
- Effectively the same as pressing F5
PLUGS: RELOAD
- Use after installing or updating plugins, or when plugin code changes
- Reloads all plugins
- Preserves current work
- Not related to libraries installed via the Library Manager
SYSTEM: RELOAD
- Use after modifying
CONFIG, Space Lua scripts, or when a broader refresh is needed - Saves work and reloads config, commands, and widgets
- Usually sufficient to apply
config.setchanges
But If a library also includes a.jsfile, it is recommended to additionally run CLIENT: RELOAD UI so the updated JavaScript is applied on the client side as well.
I understand where you’re coming from, and the comparison with Obsidian makes sense from a UX perspective. The key difference is that in Obsidian, side panels are a first-class feature deeply integrated into the core application.
In SilverBullet, side panels were never designed to render pages directly. There isn’t even a native command to render a markdown page independently of the main editor view. The only workaround I found was to simulate this behaviour by running a second SilverBullet instance inside an iframe, then stripping away the title bar and other UI elements to approximate a clean panel view.
This approach comes with significant limitations. For example, once a page is opened inside that iframe, any further navigation remains confined to that panel. There is no clean way to choose whether a page opens in the main window or the panel, as the iframe runs SilverBullet in a sandboxed, isolated state.
Additionally, panels can only host one element at a time. If the Document Explorer is assigned to the LHS, it occupies that panel entirely, even when running in window mode. Nothing else can be docked there unless the Document Explorer is closed first.
The BHS was never a major focus for me, largely because there are very few (if any) existing plugins or libraries that make use of it. For that reason, it also received less attention in the Advanced Panel Control library.
Thank you for the kind words and the thoughtful feedback. A lot of effort went into getting this to its current state, so it genuinely means something to receive both appreciation and constructive criticism.
That said, side panels in SilverBullet are a fairly rigid system. The fact that they can be resized, undocked, and used as floating windows at all is already pushing the boundaries of what they were originally intended to do. Especially considering that I don’t have a formal programming or software development background, and that a large portion of this work involved iterative experimentation, heavy debugging, and extensive use of LLMs.
Reaching the level of seamless UX you describe would require changes beyond what an extension library can realistically provide. I’ve tried to simplify the experience as much as possible within those constraints, but at this point the limitations are more structural than cosmetic.