An attempt at documenting the changes/new features introduced in each release.

Edge

Whenever a commit is pushed to the main branch, within ~10 minutes, it will be released as a docker image with the :v2 tag, and a binary in the edge release. If you want to live on the bleeding edge of SilverBullet goodness (or regression) this is where to do it.

2.3.0

This release (re)introduces Share, formalizes Library, 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: are now a more “real” thing, and can be distributed via the Library Manager and curated with Repository. For instructions on how to build your own libraries, see Library/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.
  • Service: a new mechanism used behind the scenes to power Share, but also Export and likely other features in the future. Built on top of Event.
  • URI are 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: 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)

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.
  • 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.0

This is a dot release primarily because due to changes in how IndexedDB databases are named, a fully resync and reindex of your space will happen on all your devices. I’m sorry for the inconvenience, we 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.

2.1.8

2.1.7

  • Restructure of the Library/Std library, added some more (self) documentation. See ^Library/Std as an entry point.
  • Re-added page:saved event that was removed in 2.1
  • When the clipboard API is used in Safari, will now give a proper error (Safari restriction) by (Noah Stanley)
  • Full text search results now show full page path
  • Space folders now support symlinks again (regression from 2.1)
  • Lua: fixes in arithmetic model (by Matouš Jan Fialka)
  • Lua: Removed unary plus from grammar (wasn’t actually supported) (by Matouš Jan Fialka)
  • Bugfix: auth and service worker caching fixes
  • Bugfix: docker health check failed when SB_URL_PREFIX was used
  • Bugfix: infinite item index loop in obscure cases

2.1.4 - 2.1.6

  • Fixed broken auth in Safari
  • Renamed the inconstently named index.search.enable to index.search.enabled
  • Last opened (for pages) and last run (for commands) timestamps are now kept persistently between client loads (and tabs)
  • Fixed docker user and group creation issues
  • Removed file:deleted triggering when checking for getFileMeta (causing an infinite indexing loop in SilverSearch)
  • Server: HTTP Gzip compression is now enabled for sensible content types
  • Nicer syntax to query tag objects from the index: tags.page becomes an alias for index.tag "page" (implemented here: ^Library/Std/APIs/Tag)
  • Hidden files and folders (starting with .) are no longer synced, as well as files without a file extension (those were not support anyway)

2.1.2

This is a major architectural overhaul compared to 2.0. Please — as always — make sure you regularly backup your space files to avoid any data loss. Nothing should happen, but better be safe than sorry!

  • All new server written in Go (previously written using Deno). Uses significantly less memory and is significantly smaller in size.
  • Docker base image is now based on Alpine (previously Ubuntu), further reducing memory and disk space usage.
  • Significant engine re-architecture: see Architecture and Sync, now lives in the service worker and parallelizes sync. Once upgrading a full resync will need to happen. Documents are no longer synced by default (you can enable this via config, see Sync).
  • More configuration options for what to index (see ^Library/Std/Config under the index section) for the purpose of reducing local storage size and needless CPU waste. Some useful ones:
    • config.set("index.search.enabled", false) to disable Full Text Search entirely (saves on processing and storage if you don’t use it)
    • config.set("index.paragraph.all", false) to disable indexing all (untagged) paragraphs. This is also somewhat wasteful if you don’t query these.
  • Disable ability to rename pages in read-only mode (by Jelenkee)
  • Improved docker build + health check (by Zef)
  • Added templates.tagItem template (by Andy Costanza)
  • Support links in table queryable objects (by Alex Dobin)
  • Refactor of document editors (by MrMugame)
  • Command to toggle markdown syntax rendering (by aphymi)
  • Fix transclusions not being indexed as links (by MrMugame)
  • Render links inside frontmatter code as clickable anchors (by Andy Constanza)
  • New SB_LOG_PUSH option asking clients to push their browser JS logs to the server so they’re visible there.
  • Hot reloading plugs has been disabled because it caused some nasty race condition. To explicitly reload plugs without restarting the client, use the Plugs: Reload command.

2.0.0

  • We’re now live!

For previous versions, see the v1 CHANGELOG