Skip to content

Releases: silverbulletmd/silverbullet

2.4.1

16 Jan 12:08

Choose a tag to compare

For 2026 I decided to go back to the basics, and revisit some of the foundational stuff that makes SilverBullet work. Making it more robust and performant.

For 2.4 this is primarily about the indexer (on top of which queries are built, among other things). I've run various experiments trying to speed this up, and for my own space (which is now approximating about 2k pages) I managed to roughly speed this up a clean index by 200%. As I did this work, I also added tests to allow to make more improvements here down the line. As usual I encountered some things along the way, and fixed those too.

I also upgraded the fuse.js library, which is used for e.g. the page picker, command picker etc. and tweaked some parameters too. These are hard to test very well, because they're more about "vibes". Let me know if the results work for you.

What's changed

  • Indexer rework (note: upgrading will start a full space reindex automatically):
    • Performance: up to 2x faster
    • Internal refactor, actually adding at least (rudimentary) unit tests now (imagine!)
    • item and task now also index (wiki) links and inherited (wiki) links (links appearing in parent nodes), as requested here under links and ilinks. Updated the "Linked Tasks" widget now to rely on ilinks.
    • Rewrote snippet text for links (used in [[Linked Mention|Linked Mentions]]) to be more contextual, now also includes child bullet items, see community discussion.
    • For consistency with items, task refs now point to the item’s position resulting in a slight positional shift, if you have code relying on this, you may have to adjust it.
    • Disabled indexing all paragraph text by default, this caused significant indexing overhead. See discussion.
      To re-enable: config.set("index.paragraph.all", true)
    • Better link support in frontmatter (by Tomasz Gorochowik)
    • The page:index event now also receives a text and meta attributes.
  • Transclusions improvements:
    • Now have an “eye” button to navigate to the transcluded location
    • Transclusions now only live preview when the cursor is outside of them (as with other pieces of markup)
    • Transclusions now properly support headers
    • Items and tasks are now transcluded with their children (based on @pos notation) (this is mostly helpful when used in queries)
  • Page/document/meta picker tweaks:
    • Upgraded the Fuse.js library and tuned the ranking parameters, hopefully leading to better results.
    • Meta picker now more consistent with page picker
    • You can now use Alt-space to complete a folder matching the first result — try it and let me know how this works for you in practice.
  • Built-in full-text search has been removed from the main distribution, this has now been moved to a separate repo (installable via the library manager). Rationale: full text indexing is expensive and the search results were quite bad. Recommendation: install Silversearch as an alternative.
  • Tasks:
    • Removed: taskstate objects are no more. Custom task states should now be defined using the [[API/taskState]] API.
    • Removed: deadline syntax (legacy syntax from v1) for tasks, please use attributes instead (e.g. [deadline: "2026-01-01"]).
  • New APIs:
    • space.readFileWithMeta(name)
    • space.readPageWithMeta(name)
    • space.readRef(ref)
    • taskState.define(def) (see “Tasks” above)
  • New commands:
    • Navigate: Copy Ref To Current Position
    • Navigate: Copy Link To Current Position
  • Lua:
  • Production builds now include sourcemaps for easier debugging in browser DevTools. If you don't want to serve sourcemaps publicly, you can block *.js.map files at your reverse proxy level (see [[TLS#Blocking sourcemaps]]).
  • Should now deal better with authentication layers (Cloudflare Zero Trust, Authelia, Pangolin)
  • Sync errors now propagate better to the UI
  • Document editors now fixed in Safari (by MrMugame)
  • % now supported in page names
  • Lua widgets “flapping” should now be less

Upgrading

  • Upgrade as usual
  • After upgrading the server, make sure you reload all your SilverBullet tabs a few times, just to make sure the cache is flushed.
  • Note that a full space reindex will automatically kick off, which — while ideally being faster, will still take some time. Caveat here (which I noticed randomly): If you have multiple tabs open with SilverBullet and some still run the old version, you end up in an infinite reindex cycle. Just close other tabs, or reload them to stop this from happening.
  • If you were using some older edge version and somehow get stuck with a never moving index progress indicator, run the Client: Clean command and then run Space: Reindex again, this should solve the issue.

Dedication

I've made the decision to reduce my regular day job to fewer days and spend this 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 sensible for me.

2.3.0

24 Nov 09:48

Choose a tag to compare

This release (re)introduces Share, formalizes Libraries, and introduces in initial version of the Library Manager, a type of package manager for SilverBullet. It also progresses on Lua 5.4 compatibility.

Here’s what’s new:

  • Share: a new mechanism to push content to external places and pull external content in (also used as the foundation of Library). This partially replaces many Export use cases. Export will be more for one-off use cases.
  • Library: is now a more “real” thing, and can be distributed via the Library Manager and curated with Repositories. For instructions on how to build your own libraries, see Development. Eventually, this mechanism will succeed the plugs configuration and Plugs: Update mechanism. Plug authors can already start to update their plugs to get ready, usually all that needs to be done is to add a PLUG.md file to their repository: example.
  • Services: a new mechanism used behind the scenes to power Share, but also Export and likely other features in the future.
  • URI is now a more formalized and centralized mechanism, used by Share and likely other features in the future.
  • Removed “Import” support, succeeded by Share.
  • Tag Picker is here: to quickly navigate to tag pages
  • Space Lua improvements (courtesy of Matouš Jan Fialka):
    • Support for goto (yes, I said I’d never add it, but Matouš did anyway)
  • More of an in-your-face error when you’re not using TLS and you should, with instructions how to fix it: even though using plain HTTP was never a supported configuration, it hard-broke in 2.2.1
  • Plugs are now loaded from anywhere in the space, as long as they end with .plug.js (so no longer need to be in _plug, in fact all shipped core plugs are now mounted under Library/Std/Plugs). See upgrade notes below.
  • Automatically follow system dark mode (by Lelouch He)
  • Fix Youtube embeds (by Rodolfo Souza)
  • Fixed offline support in certain cases

Upgrade notes:

  • If you have third-party plugs installed and intend to reinstall them as Libraries: be sure to delete the old versions first. You can do so by cleaning out your _plug folder right on the file system, or use the document picker, filter on plug.js and delete every single document that’s in the _plug folder that way.
  • Reminder: If you somehow end up in a state where SilverBullet doesn’t load properly, have a look at Troubleshooting for hints on what to try to fix it.

2.2.1

03 Nov 06:57

Choose a tag to compare

The one with client-side encryption and a bunch of Lua fixes and DOM API improvements.

This is a dot release primarily due to changes in how IndexedDB databases are named (to enable client-side encryption). A fully resync and reindex of your space will happen on all your devices after upgrade. I’m sorry for the inconvenience, I try to limit how often this is required. If you’d like to clean up unnecessary databases afterwards you can run the Client: Clean command (once) afterwards.

In addition to the (constantly increasing) number of contributors to this release, I'd really like to thank my Github sponsors for their financial support allowing me to spend more time on SilverBullet than ever. While not nearly financially sustainable, every new sponsor does give me a motivation boost. Just sayin' ;)

What's in this release:

2.1.9

09 Oct 13:57

Choose a tag to compare

Hotfix: fixes virtual page regression

2.1.8

09 Oct 08:21

Choose a tag to compare

2.1.7

04 Oct 13:41

Choose a tag to compare

2.1.7

2.1.6

30 Sep 09:09

Choose a tag to compare

2.1.6

2.1.5

27 Sep 04:43

Choose a tag to compare

2.1.5

2.1.4

26 Sep 10:20

Choose a tag to compare

2.1.4

2.1.3

25 Sep 13:31

Choose a tag to compare

2.1.3