Website copy
parent
a95ee41ddb
commit
3d96716265
|
@ -1,27 +1,24 @@
|
|||
Silver Bullet is extensible, [open source](https://github.com/silverbulletmd/silverbullet), **personal
|
||||
knowledge management** software. Indeed, that’s fancy language for “a note taking app with links (and some other stuff).”
|
||||
knowledge management** software. Indeed, at the most basic level that translates to “a note-taking app with links.” However, Silver Bullet goes a bit beyond just that.
|
||||
|
||||
Silver Bullet provides:
|
||||
Let’s have a look at some of its features.
|
||||
|
||||
* An enjoyable markdown writing experience using [[Live Preview|live preview]] that **reduces visual noise**, but still gives direct access to the underlying [[Markdown]] syntax.
|
||||
* The ability to cross-link pages using the `[[page link]]` syntax, keeping these links automatically up-to-date as pages are renamed.
|
||||
* Primarily keyboard-based operation:
|
||||
## Features
|
||||
* Runs in any modern browser (including mobile browsers) and is installable as a PWA.
|
||||
* Provides a distraction-free, enjoyable markdown writing experience using [[Live Preview|live preview]] that **reduces visual noise**, but still gives direct access to the underlying [[Markdown]] syntax.
|
||||
* Supports wiki-like page linking using the `[[page link]]` syntax, keeping links up-to-date as pages are renamed.
|
||||
* Optimized for keyboard-based operation:
|
||||
* Quickly navigate between pages using the page switcher (triggered with `Cmd-k` on Mac or `Ctrl-k` on Linux and Windows).
|
||||
* Run commands via their keyboard shortcuts, or the command palette (triggered with `Cmd-/` or `Ctrl-/` on Linux and Windows).
|
||||
* Use [[🔌 Core/Slash Commands|slash commands]] to perform common text editing operations.
|
||||
* The ability to annotate pages with metadata (using [[Frontmatter]]), which can be [[🔌 Directive/Query|queried]] to build partially dynamic pages.
|
||||
* A robust extension mechanism using [[🔌 Plugs]]
|
||||
* Supports annotating pages with metadata (using [[Frontmatter]]).
|
||||
* Provides a platform for [End-user Programming](https://www.inkandswitch.com/end-user-programming/) through its support of [[🔌 Directive|directives]] (such as [[🔌 Directive/Query|#query]]), which make parts of pages _dynamic_.
|
||||
* Robust extension mechanism using [[🔌 Plugs]]
|
||||
* You own your data. All content is stored as plain files in a folder on disk. Nothing fancy.
|
||||
* Silver Bullet is [open source, MIT licensed](https://github.com/silverbulletmd/silverbullet) software.
|
||||
|
||||
Here is a screenshot of Silver Bullet in PWA mode (Silver Bullet can be installed as a PWA on Chromium-based browsers):
|
||||
|
||||
![Silver Bullet PWA Screenshot](silverbullet-pwa.png)
|
||||
|
||||
It also works in mobile browsers:
|
||||
|
||||
![Silver Bullet on mobile](silverbullet-ios.png)
|
||||
|
||||
|
||||
But here’s the kicker:
|
||||
## Try it
|
||||
Here’s the kicker:
|
||||
|
||||
==You are looking at a (more or less) operational copy of Silver Bullet **right now**==.
|
||||
|
||||
|
@ -29,9 +26,8 @@ That’s right, this very website is powered by a quasi-read-only version of Sil
|
|||
|
||||
On this site, everything is editable as in a regular copy of Silver Bullet, just none of it persists (the back-end is read-only).
|
||||
|
||||
So, don’t just sit there...
|
||||
So, don’t just sit there, try this!
|
||||
|
||||
## Try it out!
|
||||
* Click on the page picker (folder tree) icon at the top right, or hit `Cmd-k` (Mac) or `Ctrl-k` (Linux and Windows) to open the **page switcher**. Type the name of a nonexistent page to create it (although it won’t save in this environment).
|
||||
* Click on the run button (top right) or hit `Cmd-/` (Mac) or `Ctrl-/` (Linux and Windows) to open the **command palette** (note that not all commands will work in this mode).
|
||||
* Select some text and hit `Alt-m` to ==highlight== it, or `Cmd-b` (Mac) or `Ctrl-b` to make it **bold**.
|
||||
|
@ -67,7 +63,7 @@ name: Silver Bullet
|
|||
rating: 5
|
||||
```
|
||||
|
||||
There are a few [[🤯 Features]] you don’t get to fully experience in this environment, because they rely on a working back-end, such as:
|
||||
There are a few Features you don’t get to fully experience in this environment, because they rely on a working back-end, such as:
|
||||
|
||||
* Using Silver Bullet [[🔌 Directive|directives]] where part of pages are automatically rendered and kept up to date by querying various data sources (such as pages and their metadata, back links, tasks embedded in pages, and list items) with an SQL like syntax, rendered with handlebars templates.
|
||||
* Intelligent **page renaming**, automatically updating any pages that link to it.
|
||||
|
@ -83,11 +79,10 @@ Some things are just [better explained in a video](https://youtu.be/VemS-cqAD5k)
|
|||
Click on the links below to explore various aspects of Silver Bullet more
|
||||
in-depth:
|
||||
|
||||
* [[CHANGELOG]] — what’s new?
|
||||
* [[🤯 Features]]
|
||||
* [[💡 Inspiration]]
|
||||
* [[🔌 Plugs]]
|
||||
* [[🔨 Development]]
|
||||
* [[CHANGELOG|What’s new?]]
|
||||
* [[💡 Inspiration]]: some of the projects that inspired Silver Bullet
|
||||
* [[🔌 Plugs]]: extensions available in Silver Bullet
|
||||
* [[🔨 Development]]: how to start hacking on Silver Bullet itself
|
||||
|
||||
## Installing Silver Bullet
|
||||
This consists of two steps (unless Deno is already installed:
|
||||
|
@ -117,13 +112,13 @@ Once downloaded and booted, Silver Bullet will print out a URL to open SB in you
|
|||
## Upgrading Silver Bullet
|
||||
Simply run:
|
||||
|
||||
silverbullet upgrade
|
||||
```shell
|
||||
silverbullet upgrade
|
||||
```
|
||||
|
||||
And restart Silver Bullet. You should be good to go.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
If you upgraded to the new Deno-based Silver Bullet from an old version, you may have to use the `silverbullet fix <pages-path>` command to flush out your old database and plugs. Plugs will likely need to be updated.
|
||||
## Support
|
||||
|
||||
If you (hypothetically) find bugs or have feature requests, post them in
|
||||
[our issue tracker](https://github.com/silverbulletmd/silverbullet/issues). Want to contribute? [Check out the code](https://github.com/silverbulletmd/silverbullet).
|
||||
[our issue tracker](https://github.com/silverbulletmd/silverbullet/issues). Want to contribute? [Check out the code](https://github.com/silverbulletmd/silverbullet). Want to chat with us? [We have a Mattermost instance](https://silverbullet.cloud.mattermost.com/), join us!
|
||||
|
|
|
@ -1 +1 @@
|
|||
* [[{{name}}]] by **{{author}}** ([repo]({{repo}}))
|
||||
* [[{{name}}]] {{#if author}}by **{{author}}** ([repo]({{repo}})){{/if}}
|
|
@ -1,7 +1,6 @@
|
|||
---
|
||||
type: plug
|
||||
repo: https://github.com/silverbulletmd/silverbullet
|
||||
author: Silver Bullet Authors
|
||||
share-support: true
|
||||
---
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
---
|
||||
type: plug
|
||||
repo: https://github.com/silverbulletmd/silverbullet
|
||||
author: Silver Bullet Authors
|
||||
---
|
||||
|
||||
The core plug implements foundational functionality for Silver Bullet. It covers the following areas:
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
---
|
||||
type: plug
|
||||
repo: https://github.com/silverbulletmd/silverbullet
|
||||
author: Silver Bullet Authors
|
||||
---
|
||||
|
||||
The directive plug is a built-in plug implementing various so-called “directive” that all take the form of `<!-- #directiveName ... -->` and close with `<!-- /directiveName -->`. Currently the following directives are supported:
|
||||
|
|
|
@ -151,11 +151,11 @@ For the sake of simplicity, we will use the `page` data source and limit the res
|
|||
**Result:** Look at the data. This is more than we need. The query even gives us template pages. Let's try to limit it in the next step.
|
||||
|
||||
<!-- #query page limit 3 -->
|
||||
|name |lastModified |contentType |size|perm|
|
||||
|-------------|-------------|-------------|----|--|
|
||||
|SETTINGS |1667053645895|text/markdown|169 |rw|
|
||||
|Silver Bullet|1669379746803|text/markdown|6823|rw|
|
||||
|YAML |1669378903144|text/markdown|199 |rw|
|
||||
|name |lastModified |contentType |size|perm|type|uri |repo |author |
|
||||
|--|--|--|--|--|--|--|--|--|
|
||||
|Markdown |1669534332564|text/markdown|1022|rw| | | | |
|
||||
|🔌 Graph View|1669388320673|text/markdown|1042|rw|plug|github:bbroeksema/silverbullet-graphview/graphview.plug.json|https://github.com/bbroeksema/silverbullet-graphview|Bertjan Broeksema|
|
||||
|SETTINGS |1667053645895|text/markdown|169 |rw| | | | |
|
||||
<!-- /query -->
|
||||
|
||||
|
||||
|
@ -166,13 +166,13 @@ For the sake of simplicity, we will use the `page` data source and limit the res
|
|||
**Result:** Okay, this is what we wanted but there is also information such as `perm`, `type` and `lastModified` that we don't need.
|
||||
|
||||
<!-- #query page where type = "plug" order by lastModified desc limit 5 -->
|
||||
|name |lastModified |contentType |size|perm|type|repo |author |uri |
|
||||
|--|--|--|--|--|--|--|--|--|
|
||||
|🔌 Directive |1669382855582|text/markdown|2572|rw|plug|https://github.com/silverbulletmd/silverbullet |Silver Bullet Authors| |
|
||||
|🔌 Github |1669302595740|text/markdown|2202|rw|plug|https://github.com/silverbulletmd/silverbullet-github|Zef Hemel |github:silverbulletmd/silverbullet-github/github.plug.json |
|
||||
|🔌 Core |1668787355449|text/markdown|3418|rw|plug|https://github.com/silverbulletmd/silverbullet |Silver Bullet Authors|builtin:core |
|
||||
|🔌 Ghost |1667053645897|text/markdown|1071|rw|plug|https://github.com/silverbulletmd/silverbullet-ghost |Zef Hemel |github:silverbulletmd/silverbullet-ghost/ghost.plug.json |
|
||||
|🔌 Serendipity|1667053645897|text/markdown|1179|rw|plug|https://github.com/m1lt0n/silverbullet-serendipity |Pantelis Vratsalis |github:m1lt0n/silverbullet-serendipity/serendipity.plug.json|
|
||||
|name |lastModified |contentType |size|perm|type|repo |author |share-support|uri |
|
||||
|--|--|--|--|--|--|--|--|--|--|
|
||||
|🔌 Collab |1669389685597|text/markdown|2199|rw|plug|https://github.com/silverbulletmd/silverbullet |Silver Bullet Authors|true| |
|
||||
|🔌 Share |1669389175835|text/markdown|702 |rw|plug|https://github.com/silverbulletmd/silverbullet |Silver Bullet Authors| | |
|
||||
|🔌 Graph View|1669388320673|text/markdown|1042|rw|plug|https://github.com/bbroeksema/silverbullet-graphview |Bertjan Broeksema | |github:bbroeksema/silverbullet-graphview/graphview.plug.json|
|
||||
|🔌 Github |1669387590823|text/markdown|2222|rw|plug|https://github.com/silverbulletmd/silverbullet-github|Zef Hemel |true|github:silverbulletmd/silverbullet-github/github.plug.json |
|
||||
|🔌 Markdown |1669387575305|text/markdown|298 |rw|plug|https://github.com/silverbulletmd/silverbullet |Silver Bullet Authors|true| |
|
||||
<!-- /query -->
|
||||
|
||||
#### 6.3 Query to select only certain fields
|
||||
|
@ -184,13 +184,13 @@ and `repo` columns and then sort by last modified time.
|
|||
from a visual perspective.
|
||||
|
||||
<!-- #query page select name author repo uri where type = "plug" order by lastModified desc limit 5 -->
|
||||
|name |author |repo |ri|
|
||||
|name |author |repo |ri|
|
||||
|--|--|--|--|
|
||||
|🔌 Directive |Silver Bullet Authors|https://github.com/silverbulletmd/silverbullet ||
|
||||
|🔌 Github |Zef Hemel |https://github.com/silverbulletmd/silverbullet-github||
|
||||
|🔌 Core |Silver Bullet Authors|https://github.com/silverbulletmd/silverbullet ||
|
||||
|🔌 Ghost |Zef Hemel |https://github.com/silverbulletmd/silverbullet-ghost ||
|
||||
|🔌 Serendipity|Pantelis Vratsalis |https://github.com/m1lt0n/silverbullet-serendipity ||
|
||||
|🔌 Collab |Silver Bullet Authors|https://github.com/silverbulletmd/silverbullet ||
|
||||
|🔌 Share |Silver Bullet Authors|https://github.com/silverbulletmd/silverbullet ||
|
||||
|🔌 Graph View|Bertjan Broeksema |https://github.com/bbroeksema/silverbullet-graphview ||
|
||||
|🔌 Github |Zef Hemel |https://github.com/silverbulletmd/silverbullet-github||
|
||||
|🔌 Markdown |Silver Bullet Authors|https://github.com/silverbulletmd/silverbullet ||
|
||||
<!-- /query -->
|
||||
|
||||
#### 6.4 Display the data in a format defined by a template
|
||||
|
@ -200,11 +200,11 @@ from a visual perspective.
|
|||
**Result:** Here you go. This is the result we would like to achieve 🎉. Did you see how I used `render` and `template/plug` in a query? 🚀
|
||||
|
||||
<!-- #query page select name author repo uri where type = "plug" order by lastModified desc limit 5 render [[template/plug]] -->
|
||||
* [[🔌 Directive]] by **Silver Bullet Authors** ([repo](https://github.com/silverbulletmd/silverbullet))
|
||||
* [[🔌 Collab]] by **Silver Bullet Authors** ([repo](https://github.com/silverbulletmd/silverbullet))
|
||||
* [[🔌 Share]] by **Silver Bullet Authors** ([repo](https://github.com/silverbulletmd/silverbullet))
|
||||
* [[🔌 Graph View]] by **Bertjan Broeksema** ([repo](https://github.com/bbroeksema/silverbullet-graphview))
|
||||
* [[🔌 Github]] by **Zef Hemel** ([repo](https://github.com/silverbulletmd/silverbullet-github))
|
||||
* [[🔌 Core]] by **Silver Bullet Authors** ([repo](https://github.com/silverbulletmd/silverbullet))
|
||||
* [[🔌 Ghost]] by **Zef Hemel** ([repo](https://github.com/silverbulletmd/silverbullet-ghost))
|
||||
* [[🔌 Serendipity]] by **Pantelis Vratsalis** ([repo](https://github.com/m1lt0n/silverbullet-serendipity))
|
||||
* [[🔌 Markdown]] by **Silver Bullet Authors** ([repo](https://github.com/silverbulletmd/silverbullet))
|
||||
<!-- /query -->
|
||||
|
||||
PS: You don't need to select only certain fields to use templates. Templates are
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
---
|
||||
type: plug
|
||||
repo: https://github.com/silverbulletmd/silverbullet
|
||||
author: Silver Bullet Authors
|
||||
---
|
||||
|
||||
The Emoji plug provides support for auto-completion of the `:emoji:` style syntax.
|
|
@ -1,7 +1,6 @@
|
|||
---
|
||||
type: plug
|
||||
repo: https://github.com/silverbulletmd/silverbullet
|
||||
author: Silver Bullet Authors
|
||||
share-support: true
|
||||
---
|
||||
|
||||
|
|
|
@ -1,23 +1,29 @@
|
|||
Silver Bullet at its core is bare bones in terms of functionality, most of its power it gains from **plugs**.
|
||||
|
||||
Plugs are an extension mechanism (implemented using a library called `plugos` that runs plug code on the server in a sandboxed v8 Deno web worker, and in the browser using web workers). Plugs can hook into SB in various ways: plugs can extend the Markdown parser and its syntax, define new commands and keybindings, respond to various events triggered either on the server or client side, as well as run recurring and background tasks. Plugs can even define their own extension
|
||||
mechanisms through custom events. Each plug runs in its own sandboxed
|
||||
environment and communicates with SB via _syscalls_ that expose a vast range of functionality. Plugs can be loaded, unloaded, and updated without having to restart SB itself.
|
||||
Plugs are an extension mechanism (implemented using a library called `plugos` that runs plug code on the server in a sandboxed v8 Deno web worker, and in the browser using web workers). Plugs can hook into SB in various ways:
|
||||
|
||||
* Extend the Markdown parser and its syntax
|
||||
* Define new commands and keybindings
|
||||
* Respond to various events triggered either on the server or client-side
|
||||
* Run recurring and background tasks.
|
||||
* Define their own extension mechanisms through custom events
|
||||
|
||||
Each plug runs in its own _sandboxed environment_ and communicates with SB via _syscalls_ that expose a vast range of functionality. Plugs can be loaded, unloaded, and updated without having to restart SB itself.
|
||||
|
||||
## Core plugs
|
||||
These plugs are distributed with Silver Bullet and are automatically enabled:
|
||||
<!-- #query page where type = "plug" and uri = null order by name render [[template/plug]] -->
|
||||
* [[🔌 Collab]] by **Silver Bullet Authors** ([repo](https://github.com/silverbulletmd/silverbullet))
|
||||
* [[🔌 Core]] by **Silver Bullet Authors** ([repo](https://github.com/silverbulletmd/silverbullet))
|
||||
* [[🔌 Directive]] by **Silver Bullet Authors** ([repo](https://github.com/silverbulletmd/silverbullet))
|
||||
* [[🔌 Emoji]] by **Silver Bullet Authors** ([repo](https://github.com/silverbulletmd/silverbullet))
|
||||
* [[🔌 Markdown]] by **Silver Bullet Authors** ([repo](https://github.com/silverbulletmd/silverbullet))
|
||||
* [[🔌 Share]] by **Silver Bullet Authors** ([repo](https://github.com/silverbulletmd/silverbullet))
|
||||
* [[🔌 Tasks]] by **Silver Bullet Authors** ([repo](https://github.com/silverbulletmd/silverbullet))
|
||||
* [[🔌 Collab]]
|
||||
* [[🔌 Core]]
|
||||
* [[🔌 Directive]]
|
||||
* [[🔌 Emoji]]
|
||||
* [[🔌 Markdown]]
|
||||
* [[🔌 Share]]
|
||||
* [[🔌 Tasks]]
|
||||
<!-- /query -->
|
||||
|
||||
## Third-party plugs
|
||||
These plugs are written either by third parties, or distributed separately from the main SB distribution:
|
||||
These plugs are written either by third parties or distributed separately from the main SB distribution:
|
||||
|
||||
<!-- #query page where type = "plug" and uri != null order by name render [[template/plug]] -->
|
||||
* [[🔌 Backlinks]] by **Guillermo Vayá** ([repo](https://github.com/Willyfrog/silverbullet-backlinks))
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
---
|
||||
type: plug
|
||||
repo: https://github.com/silverbulletmd/silverbullet
|
||||
author: Silver Bullet Authors
|
||||
---
|
||||
|
||||
The Share plug provides infrastructure for sharing pages outside of your space. It standardizes the {[Share: Publish]} (bound to `Cmd-s` or `Ctrl-s`) to publish the current page to all share providers specified under the `$share` key in [[Frontmatter]].
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
---
|
||||
type: plug
|
||||
repo: https://github.com/silverbulletmd/silverbullet
|
||||
author: Silver Bullet Authors
|
||||
---
|
||||
|
||||
The Tasks plug implements a lot of the task support in Silver Bullet.
|
||||
|
@ -27,7 +26,7 @@ This metadata is extracted and available via the `task` query source to [[🔌 D
|
|||
<!-- #query task where page = "{{page}}"" -->
|
||||
|name |done |page |pos|tags |deadline |
|
||||
|---------------------|-----|--------|---|------|----------|
|
||||
|This is a task |false|🔌 Tasks|245| | |
|
||||
|This is a tagged task|false|🔌 Tasks|319|my-tag| |
|
||||
|This is due |false|🔌 Tasks|605| |2022-11-26|
|
||||
|This is a task |false|🔌 Tasks|215| | |
|
||||
|This is a tagged task|false|🔌 Tasks|289|my-tag| |
|
||||
|This is due |false|🔌 Tasks|575| |2022-11-26|
|
||||
<!-- /query -->
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
## Core features
|
||||
- **Free and open source**. Silver Bullet is [MIT licensed](https://github.com/silverbulletmd/silverbullet/blob/main/LICENSE.md).
|
||||
- **The truth is in the markdown.** Markdown is simply text files, stored on disk. Nothing fancy. No proprietary formats or lock in. While SB uses an (SQLite) database for indexing and caching some data, all of that can be rebuilt from its markdown source at any time. If SB would ever go away, you can still read your pages with any text editor.
|
||||
- [**Local first**](https://www.inkandswitch.com/local-first/): your content is under your own control.
|
||||
- **Single, distraction-free mode.** SB doesn’t have a separate view and edit mode. It doesn’t have a “focus mode.” You’re always in focused edit mode, why wouldn’t you?
|
||||
* **Run anywhere**: run it on your local machine, or install it on a server. You access it via your web browser (desktop or mobile), or install it as a PWA (giving it its own window frame and dock/launcher/dock icon).
|
||||
- **Keyboard oriented**. You can use SB fully using the keyboard, typin’ the keys.
|
||||
- **Extend it your way**. SB is highly extensible with [[🔌 Plugs]], and you can customize it to your liking and your workflows.
|
||||
|
||||
## Advanced
|
||||
* Make part of your page _dynamic_ using [[🔌 Directive]]s such as [[🔌 Directive/Query]]
|
Loading…
Reference in New Issue