diff --git a/website/CHANGELOG.md b/website/CHANGELOG.md index cbcebc91..cf1d069e 100644 --- a/website/CHANGELOG.md +++ b/website/CHANGELOG.md @@ -3,7 +3,26 @@ An attempt at documenting the changes/new features introduced in each release. ## Edge Whenever a commit is pushed to the `main` branch, within ~5 minutes, it will be released as a docker image with the `:v2` tag, and a binary in the [edge release](https://github.com/silverbulletmd/silverbullet/releases/tag/edge). If you want to live on the bleeding edge of SilverBullet goodness (or regression) this is where to do it. -* Fix: page rename failed when the page contains external URL links +* [[Configuration Manager]]: new UI for editing configuration, accessed via the `Configuration: Open` command (`Ctrl/Cmd-,`) and `Configuration: Key Bindings` command. 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) +* The legacy `plug-manager` has now been replace (superseded by the Library manager part of the Configuration Manager UI) +* API extensions for [[API/config]]: `config.define` now propagates schema `default` values. New `config.defineCategory` / `config.getCategories` APIs, plus UI annotations for the configuration manager. +* Server no longer generates a default `CONFIG.md` in empty spaces, this page is now auto created by the configuration manager when required. +* Rebindable built-in keyboard shortcuts: almost all built-in keyboard shortcuts are now proper SilverBullet commands and can be rebound. +* [[Plugs/Development]] (now with new docs!) gains an optional `build:` section in manifests, running `esbuild`, `sass`, or `copy` transforms before asset bundling — enables plugs to ship bundled TSX/SCSS UIs. +* Action buttons: new `command` attribute for `actionButton.define`. +* [[Runtime API|CLI]] iteration: renamed `lua` → `eval` and `luascript` → `script`, and added a new `describe` command that describes LIQ and lists tags with defined schemas. +* HTTP: content type is now also exposed via the `X-Content-Type` header. +* Docker: removed `VOLUME` declaration from the Dockerfile (it gave a false sense of persistence `/space` must 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: page rename failed when the page contains external URL links. +* Fix: too-tall mini editor in various pickers on Safari. ## 2.6.1 * **Technical: Deno → Node.js migration**: The TypeScript/client codebase has been migrated from Deno to Node.js, now using vitest for tests. @@ -67,7 +86,7 @@ Whenever a commit is pushed to the `main` branch, within ~5 minutes, it will be * Fix: 32-bit ARM Docker builds. * Fix: reduce visual bouncing when navigating between pages. * Fix: encode URLs with dots in path names on WebKit/Safari (fixes opening e.g. PDF files). -* [[Vim mode]]: [allow passing arguments to vim ex commands](https://github.com/silverbulletmd/silverbullet/pull/1924) (by [Felix Riedel](https://github.com/felixr)). +* [[Vim]] mode: [allow passing arguments to vim ex commands](https://github.com/silverbulletmd/silverbullet/pull/1924) (by [Felix Riedel](https://github.com/felixr)). * Tweaked default `index` and `CONFIG` pages for new installations. * Fix: tag stripping for page templates. * Fix: widget glitching — widget HTML content is no longer cached (only heights), reducing storage usage and WebKit rendering issues. @@ -134,7 +153,7 @@ Whenever a commit is pushed to the `main` branch, within ~5 minutes, it will be * Configuration: * New `shortWikiLinks` config (defaulting to `true`) that decides whether a wiki link should be rendered in its short form (rendering just the last segment, e.g. `Person/John` would show as `John`). To always render the full name, put `config.set(“shortWikiLinks”, false)` in your [[CONFIG]]. * [[Authentication]]: how long “remember me” works is now configurable (by [Metin Yazici](https://github.com/silverbulletmd/silverbullet/pull/1796)) via [[Install/Configuration]] and more reliably persisted. -* [[Library Manager]]: SilverBullet now navigates to library page after installing one. +* Library Manager: SilverBullet now navigates to library page after installing one. * Now excluding `.plug.js` and `.js.map` files from the document list. * Fix: bring back [[Virtual Pages]]. @@ -182,12 +201,12 @@ Whenever a commit is pushed to the `main` branch, within ~5 minutes, it will be * Lua widgets “flapping” should now be less ## 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. +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](https://github.com/silverbulletmd/silverbullet-mermaid/blob/main/PLUG.md). +* [[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](https://github.com/silverbulletmd/silverbullet-mermaid/blob/main/PLUG.md). * [[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]]. diff --git a/website/CONFIG.md b/website/CONFIG.md index d0891aa9..9e4971be 100644 --- a/website/CONFIG.md +++ b/website/CONFIG.md @@ -93,4 +93,11 @@ tag.define { return o end } +``` + +```space-lua +-- managed-by: configuration-manager +config.set("shortWikiLinks", false) +config.set("smartQuotes.enabled", false) +config.set("std.widgets.linkedMentions.enabled", false) ``` \ No newline at end of file diff --git a/website/Configuration Manager.md b/website/Configuration Manager.md new file mode 100644 index 00000000..dc88b09b --- /dev/null +++ b/website/Configuration Manager.md @@ -0,0 +1,23 @@ +--- +description: Manage your space configuration +tags: maturity/beta glossary +--- +A built-in UI for editing your space's configuration without having to hand-edit [[Space Lua]] blocks in [[CONFIG]]. + +# Sections +## Configuration +Lists all configuration options registered via [[API/config#config.define(spec)]], grouped by category. For each option you can edit its value according to its schema — scalars (string, number, boolean), enums (drop-downs), passwords (masked input), and structured objects all have appropriate editors. Defaults come from the schema, so leaving a field untouched means "use the default". + +## Keyboard Shortcuts +Lists every [[Command]] in the system and lets you rebind its shortcut. Features: + +* A **chord recorder**: click the record button, then press the key combination you want — including multi-stroke chords like `Ctrl-q q`. +* Multiple **alternate bindings** per command. +* Works together with the [[#510]] rework that made almost all built-in editor shortcuts rebindable. + +## Libraries +Manages installed [[Library|Libraries]]. + +# How configuration is store +The Configuration Manager writes your edits into a managed `space-lua` block inside your [[CONFIG]] page, clearly marked. Simple hand edits to the managed block generally survive a round-trip through the UI, but the authoritative format is whatever the Configuration Manager writes. +Anything you add _outside_ that block — in the regular user-configuration block — is left alone. diff --git a/website/Library Manager.md b/website/Library Manager.md deleted file mode 100644 index 585c8a58..00000000 --- a/website/Library Manager.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -description: The UI for browsing and importing libraries. -tags: maturity/beta glossary ---- - -The library manager makes it easy to manage (install, update, remove) [[Library]]. - -The library is accessed via the ${widgets.commandButton "Library: Manager"} command. diff --git a/website/Migrate from v1.md b/website/Migrate from v1.md index 9bfd7556..e3b92654 100644 --- a/website/Migrate from v1.md +++ b/website/Migrate from v1.md @@ -38,16 +38,7 @@ _Snippets_ can be implemented as follows: [[Library/Std/Infrastructure/Slash Tem _Page templates_ now work slightly differently: [[^Library/Std/Infrastructure/Page Templates]]. # Plugs -Many existing plugs _should_ keep working, but some may need updating. -However, since Space Config is removed. You now specify the plugs you like to use with Space Lua + the [[API/config]] API: - -```lua -config.set("plugs", { - "github:joekrill/silverbullet-treeview/treeview.plug.js" -}) -``` - -After which you run the `Plugs: Update` to download and/or update them. `Plugs: Add` has not been (re)implemented, so you have to do this in code. +Many existing plugs _should_ keep working, but some may need updating. Plug installation is now handled through the Configuration Manager (open with `Client: Configuration` or `Ctrl/Cmd-,`) under the **Libraries** tab. Legacy `plugs:` config entries are ignored — install plugs from the Libraries UI instead. # Other changes * Since no database is kept on the server, you can safely delete any `.silverbullet.db` file from your space — this isn’t used anymore. diff --git a/website/Plugs/Development/Reference.md b/website/Plugs/Development/Reference.md index 291a2036..7d3d658a 100644 --- a/website/Plugs/Development/Reference.md +++ b/website/Plugs/Development/Reference.md @@ -3,13 +3,11 @@ This page is the reference surface for plug authors: the `*.plug.yaml` manifest, # Manifest A plug is described by a single YAML file, conventionally named `{plugname}.plug.yaml`. Top-level keys: -| Key | Description | -|-----|-------------| -| `name` | Plug name (required, must be unique). | -| `requiredPermissions` | List of permissions this plug may use. Recognized values: `fetch`, `shell`. | -| `functions` | Map of function-name → [FunctionDef](#function-definitions) — the heart of the manifest. | -| `assets` | Glob patterns of files to bundle into the plug. Readable at runtime via the `asset` syscall. | -| `build` | Optional pre-bundle transforms (`esbuild` / `sass` / `copy`). Rarely needed. | +* `name`: Plug name (required, must be unique) +* `requiredPermissions`: List of permissions this plug may use. Recognized values: `fetch`, `shell`. +* `functions`: function-name to [[#Function definitions|function mappings]] — the heart of the manifest. +* `assets`: Glob patterns of files to bundle into the plug. Readable at runtime via [[API/asset]] calls. +* `build`: Optional pre-bundle transforms (`esbuild` / `sass` / `copy`). Rarely needed. ## Function definitions Each entry under `functions:` is one exported plug function. Fields: @@ -19,7 +17,7 @@ Each entry under `functions:` is one exported plug function. Fields: | `path` | `"file.ts:exportedFunction"` — the TypeScript source to bundle. | | `redirect` | `"otherPlug.function"` — alias to another plug’s function (no local code). | | `syscall` | `"myplug.foo"` — expose this function as a syscall callable from other plugs and from [[Space Lua]]. | -| _hook fields_ | Zero or more of `command`, `slashCommand`, `events`, `mqSubscriptions`, `codeWidget`, `editor`, `pageNamespace` — each wires this function into an editor event. See [Hooks](#hooks) below. | +| _hook fields_ | Zero or more of `command`, `slashCommand`, `events`, `mqSubscriptions`, `codeWidget`, `editor`, `pageNamespace` — each wires this function into an editor event. See [[#Hooks]] below. | A function with only a `syscall` field (no other hooks) is a pure library function; a function with one or more hook fields is triggered when the corresponding event fires. @@ -217,7 +215,7 @@ All syscalls available to plugs are documented on pages tagged `#api/syscall`: ${template.each(query[[ from p = tags["api/syscall"] where p.tag == "page" order by p.name ]], templates.pageItem)} ## Declaring your own syscall -Any plug function can be exposed as a syscall by adding `syscall: yourplug.foo` to its manifest entry. Other plugs can then call it (via the `system` syscall or the function’s syscall name), and Space Lua code can call it as `yourplug.foo(...)`. See the [`syscall` hook](#syscall) above. +Any plug function can be exposed as a syscall by adding `syscall: yourplug.foo` to its manifest entry. Other plugs can then call it (via the `system` syscall or the function’s syscall name), and Space Lua code can call it as `yourplug.foo(...)`. See the [[#Syscalls]] above. ## Bundling assets The `assets:` manifest key bundles files into the plug binary. Read them at runtime with the [[API/asset|asset]] syscall: