Another month, another new SilverBullet release. This one lands with a brand-new Configuration Manager: a proper UI for editing common configuration options, managing key bindings, and installing libraries (Ctrl/Cmd-, to open). The CLI has been renamed from silverbullet-cli to sb with reworked commands. There's a new (experimental) Markdown/Anchor syntax ($name) for stable, space-globally unique names on (almost) any Object. And... “Lua Integrated Query” (LIQ) has been rebranded to Space Lua Integrated Query — SLIQ!
Changes
- Configuration Manager: new UI for editing configuration, accessed via the
Configuration: Opencommand (Ctrl/Cmd-,) andConfiguration: Key Bindingscommands. This is a work in progress, but should already be a big improvement over the old ways. It currently supports:- Changing (common) configuration options
- Key binding management (oh my!)
- A Library manager, superseding the old Library Manager UI (which now has been removed)
- CLI renamed from
silverbullet-clitosb, in addition:- renamed
lua→eval luascript→script- a new
describecommand that describes SLIQ and lists tags with defined schemas.
- renamed
- New (experimental) Markdown/Anchor syntax (
$name): a stable, space-globally unique name for (almost) any Object, referenced from links via[[$name]]. - Rebrand: “Lua Integrated Query” (LIQ) is now called Space Lua Integrated Query (SLIQ!) (as coined by Matouš Jan Fialka)
- API extensions for API/config:
config.definenow propagates schemadefaultvalues. Newconfig.defineCategory/config.getCategoriesAPIs, plus UI annotations for the configuration manager. Theui.orderschema annotation andconfig.defineCategory'sorderfield have been renamed topriorityand now sort descending (higher = appears earlier), matching the rest of SilverBullet'spriorityconventions. - Server no longer generates a default
CONFIG.mdin empty spaces, this page is now auto created by the configuration manager when required. - The legacy
plug-managerhas now been removed (superseded by the Library manager part of the Configuration Manager UI) - Plugs/Development (now with new docs!) gains an optional
build:section in manifests, runningesbuild,sass, orcopytransforms before asset bundling — enables plugs to ship bundled TSX/SCSS UIs. - Action buttons: new
commandattribute foractionButton.define. When using this instead of aruncallback, keyboard bindings will appear in the tooltip. - Docker: removed
VOLUMEdeclaration from the Dockerfile (it gave a false sense of persistence/spacemust be explicitly mounted, as documented). This also fixed the silverbullet-website repo. - Fix: Sync now falls through to local data on browser-native network errors instead of returning 503; previously synced spaces serve locally immediately after a service worker restart.
- Fix: navigation no longer blocks while the initial index is still running.
- Fix: rich text paste only worked on the second try
- Fix: indexing blew up with malformed bullet list items
- Fix: regression where aspiring pages were not deleted once the page was created.
- Fix: auto complete of meta pages was broken
- Fix: page rename failed when the page contains external URL links.
- Fix: too-tall mini editor in various pickers on Safari.
- Security fix: auth cookies now set stricter security flags (HttpOnly, Secure, SameSite); auth config file corruption no longer fails silently.
- Potentially breaking CSS change for theme authors:
.sb-notificationshas moved in the DOM (notifications now portal todocument.body). - New API/system syscalls
system.loadPlug/system.unloadPlugfor per-path plug (re)loading. - New API/editor syscall
editor.focusfor explicitly focusing the editor. - Configuration Manager: Key Bindings tab now says "Filter commands" instead of "Search commands".
- More sensible fallback values for config options before the initial index has populated defaults.
- Lint: the
nameattribute uniqueness check is now limited to#meta/librarypages. - Runtime API: better debug output when the headless Chrome instance fails to boot.
- Fix: more robust markdown tree traversal in the face of invalid markdown trees.
- Fix: outline operation edge cases.
- Fix: button text wrapping.
- Fix: Runtime API fixed for users using PUID and PGUID users (by Luminiferous348).
- Fix: symlinks inside the space directory are no longer accidentally removed when cleaning up empty parent directories after a file delete.
- Fix: slash commands now resolve the syntax node ending at the cursor, so they no longer get incorrectly suppressed adjacent to comment blocks or links.
- Fix: Service Worker is now built without
importstatements so it loads on Firefox versions before 147 (by Carlos Fdez. Llamas).
Upgrading
- For docker-based install, pull the new image, stop the container and start a new one. For binary-based installs run
silverbullet --upgradeand restart. - After upgrading the server, make sure you reload all your SilverBullet tabs a few times, just to make sure the cache is flushed.
Dedication
I've made the decision to reduce my regular day job to fewer days and spend the remainint time on SilverBullet. This allows for deeper focus and more ambitious work. If you like this, consider sponsoring to make this a little bit more financially viable for me.