1
0

Rebranding from "Silver Bullet" to "SilverBullet" and updated a lot of website copy

This commit is contained in:
Zef Hemel 2023-01-16 16:45:55 +01:00
parent c8f0304ade
commit 18c1da4431
52 changed files with 302 additions and 290 deletions

View File

@ -33,9 +33,9 @@ jobs:
uses: denoland/setup-deno@d4873ceeec10de6275fecd1f94b6985369d40231
with:
deno-version: v1.29.1
- name: Build Silver Bullet
- name: Build SilverBullet
run: deno task build
- name: Create Silver Bullet bundle
- name: Create SilverBullet bundle
run: deno task bundle
- name: Set MacOS signing certs
if: matrix.os == 'macOS-latest'

117
README.md
View File

@ -1,6 +1,6 @@
# Silver Bullet
# SilverBullet
Silver Bullet (SB) is an extensible, open source **personal knowledge
SilverBullet is an extensible, open source **personal knowledge
platform**. At its core its a clean markdown-based writing/note taking
application that stores your _pages_ (notes) as plain markdown files in a folder
referred to as a _space_. Pages can be cross-linked using the
@ -13,20 +13,20 @@ your accumulated knowledge in creative ways specific to you.
<img src="https://github.com/silverbulletmd/silverbullet/raw/main/website/silverbullet-pwa.png" height="400"/><img src="https://github.com/silverbulletmd/silverbullet/raw/main/website/silverbullet-ios.png" height="400"/>
For more in-depth information, an interactive demo, and links to more
background, check out the [Silver Bullet website](https://silverbullet.md)
background, check out the [SilverBullet website](https://silverbullet.md)
(published from this repos `website/` folder).
Or checkout these two videos:
- [A Tour of some of Silver Bullets features](https://youtu.be/VemS-cqAD5k) —
- [A Tour of some of SilverBullets features](https://youtu.be/VemS-cqAD5k) —
spoiler alert: its cool.
- [A look the SilverBullet architecture](https://youtu.be/mXCGau05p5o) — spoiler
alert: its plugs all the way down.
## Features
- **Free and open source**. Silver Bullet is MIT licensed.
- **The truth is in the markdown.** Silver Bullet doesnt use proprietary file
- **Free and open source**. SilverBullet is MIT licensed.
- **The truth is in the markdown.** SilverBullet doesnt use proprietary file
formats. It keeps its data as plain markdown files on disk. While SB uses a
database for indexing and caching some indexes, all of that can be rebuilt
from its markdown source at any time. If SB would ever go away, you can still
@ -40,114 +40,19 @@ Or checkout these two videos:
[plugs](https://silverbullet.md/🔌_Plugs), and you can customize it to your
liking and your workflows.
## Installing Silver Bullet with Deno
### Installing Deno
Silver Bullet is built using [Deno](https://deno.land). To install Deno on Linux
or Mac run:
```shell
curl -fsSL https://deno.land/install.sh | sh
```
This will install Deno into `~/.deno/bin`, add this folder to your `PATH` in
your `~/.bashrc` or `~/.zshrc` file.
To install Deno on Windows (using Powershell) run:
```powershell
irm https://deno.land/install.ps1 | iex
```
### Install Silver Bullet
With Deno installed (see instruction above), run:
```shell
deno install -f --name silverbullet -A --unstable https://get.silverbullet.md
```
This will install `silverbullet` into your `~/.deno/bin` folder (which should
already be in your path if you installed Deno following the previous
instructions).
To run Silver Bullet create a folder for your pages (it can be empty, or be an
existing folder with `.md` files) and run the following command in your
terminal:
```shell
silverbullet <pages-path>
```
By default, SB will bind to port `3000` on all interfaces. To specify a
different address or port to listen on, use the `--hostname` and `--port`
options. By default SB doesnt add authentication, to add
basic password authentication (BasicAuth), pass the `--user` flag (e.g.
`--user pete:1234` for username `pete` and password `1234`).
Once downloaded and booted, SB will print out a URL to open SB in your browser
(spoiler alert: by default this will be http://localhost:3000 ).
#protip: If you have a PWA enabled browser (like any browser based on Chromium)
hit that little button right of the location bar to install SB, and give it its
own window frame (sans location bar) and desktop/dock icon. At last the PWA has
found its killer app.
## Upgrading Silver Bullet
Simply run this:
silverbullet upgrade
And restart Silver Bullet. You should be good to go.
## Installing Silver Bullet with Docker
There is a [docker image on docker hub](https://hub.docker.com/r/zefhemel/silverbullet). To use it, first create a volume to keep your space (markdown) files:
```shell
docker volume create myspace
```
Then, run the container, e.g. as follows:
```shell
docker run -p 3000:3000 -v myspace:/space -d --name silverbullet zefhemel/silverbullet
```
If you'd like to pass in additional command line arguments (e.g. `--user` to add authentication) you can just append those to the command, e.g.:
```shell
docker run -p 3000:3000 -v myspace:/space -d --name silverbullet zefhemel/silverbullet --user me:letmein
```
To build your own version of the docker image, run `./scripts/build_docker.sh`.
You can also use docker-compose if you prefer. From a silverbullet check-out run:
```shell
PORT=3000 docker-compose up
```
or similar.
To upgrade, simply pull the latest docker image (rebuilt and pushed after every commit to "main") and start the new container.
```shell
docker pull zefhemel/silverbullet
```
## Installing SilverBullet
Check out the [official website](https://silverbullet.md)
## Troubleshooting
If you upgraded to the new Deno-based Silver Bullet from an old version, you may
If you upgraded to the new Deno-based SilverBullet 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.
## Developing Silver Bullet
## Developing SilverBullet
[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/silverbulletmd/silverbullet)
Silver Bullet is written in [TypeScript](https://www.typescriptlang.org/) and
SilverBullet is written in [TypeScript](https://www.typescriptlang.org/) and
built on top of the excellent [CodeMirror 6](https://codemirror.net/) editor
component. Additional UI is built using [Preact](https://preactjs.com).
[ESBuild]([https://parceljs.org/](https://esbuild.github.io)) is used to build both the front-end and

View File

@ -11,9 +11,6 @@ if (import.meta.main) {
},
});
await bundle(args.watch, "mobile", "mobile/dist");
await copy("mobile/index.html", `mobile/dist/index.html`, {
overwrite: true,
});
if (!args.watch) {
esbuild.stop();
}

View File

@ -24,6 +24,6 @@ export async function fixCommand(_options: any, folder: string) {
}
}
console.log(
"Alright then, that should be it. Try running Silver Bullet again.",
"Alright then, that should be it. Try running SilverBullet again.",
);
}

View File

@ -10,14 +10,14 @@ export function serveCommand(options: any, folder: string) {
const bareMode = options.bare;
console.log(
"Going to start Silver Bullet binding to",
"Going to start SilverBullet binding to",
`${hostname}:${port}`,
);
console.log("Serving pages from", pagesPath);
if (hostname === "127.0.0.1") {
console.log(
`_Note:_ Silver Bullet will only be available locally (via http://localhost:${port}), to allow outside connections, pass --host 0.0.0.0 as a flag.`,
`_Note:_ SilverBullet will only be available locally (via http://localhost:${port}), to allow outside connections, pass --host 0.0.0.0 as a flag.`,
);
}

View File

@ -66,6 +66,7 @@ export async function ensureAndLoadSettings(
`Hello! And welcome to your brand new SilverBullet space!
<!-- #include [[💭 silverbullet.md/Getting Started]] -->
Loading some onboarding content for you (but doing so does require a working internet connection)...
<!-- /include -->`,
);
}

View File

@ -1,47 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport"
content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<base href="/" />
<title>Silver Bullet</title>
<script>
Deno = {
args: [],
build: {
arch: "x86_64",
},
env: {
get(key) {
// return undefined;
},
},
errors: {
AlreadyExists: class extends Error { },
}
};
</script>
<style>
html,
body {
margin: 0;
height: 100%;
padding: 0;
width: 100%;
overflow: hidden;
}
</style>
<link rel="stylesheet" href="/main.css" />
<script type="module" src="/client.js"></script>
<link rel="manifest" href="/manifest.json" -->
<link rel="icon" type="image/x-icon" href="/favicon.png" />
</head>
<body>
<div id="sb-root"></div>
</body>
</html>

View File

@ -17,6 +17,8 @@ cp -r dist_bundle/web/* website_build/
echo "And all plugs"
cp -r dist_bundle/_plug/* website_build/fs/_plug/
echo "And additional ones"
curl https://raw.githubusercontent.com/silverbulletmd/silverbullet-mermaid/main/mermaid.plug.json > website_build/fs/_plug/mermaid.plug.json
echo "But remove some plugs"
rm -rf website_build/fs/_plug/{directive,plugmd,publish,share}.plug.json
#echo "Copying netlify config files"

View File

@ -1,7 +1,7 @@
#!/bin/bash
echo "Now building Silver Bullet bundle"
echo "Now building SilverBullet bundle"
curl -fsSL https://deno.land/install.sh | sh
export PATH=~/.deno/bin:$PATH

View File

@ -149,7 +149,7 @@ export class HttpServer {
? "localhost"
: this.hostname;
console.log(
`Silver Bullet is now running: http://${visibleHostname}:${this.port}`,
`SilverBullet is now running: http://${visibleHostname}:${this.port}`,
);
}

View File

@ -61,7 +61,7 @@ await new Command()
})
.action(invokeFunction)
// upgrade
.command("upgrade", "Upgrade Silver Bullet")
.command("upgrade", "Upgrade SilverBullet")
.action(upgradeCommand)
// version
.command("version", "Get current version")

View File

@ -5,7 +5,7 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="icon" type="image/x-icon" href="/favicon.png" />
<title>Login to Silver Bullet</title>
<title>Login to SilverBullet</title>
<style>
html,
body {
@ -55,7 +55,7 @@
<body>
<header>
<h1>Login to <img src="/logo.png" style="height: 1ch;" /> Silver Bullet</h1>
<h1>Login to <img src="/logo.png" style="height: 1ch;" /> SilverBullet</h1>
</header>
<form action="/.auth" method="POST">
<input type="hidden" name="refer" value="" />
@ -71,7 +71,7 @@
<input type="submit" value="Login" />
</div>
<footer>
<a href="https://silverbullet.md">What is Silver Bullet?</a>
<a href="https://silverbullet.md">What is SilverBullet?</a>
</footer>
</form>

View File

@ -3,10 +3,11 @@
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<meta name="viewport"
content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<base href="/" />
<title>Silver Bullet</title>
<title>SilverBullet</title>
<script>
Deno = {
args: [],
@ -40,7 +41,8 @@
</head>
<body>
<div id="sb-root"></div>
<div id="sb-root">
</div>
</body>
</html>

View File

@ -1,6 +1,6 @@
{
"short_name": "Silver Bullet",
"name": "Silver Bullet",
"short_name": "SilverBullet",
"name": "SilverBullet",
"icons": [
{
"src": "/logo.png",

View File

@ -135,7 +135,7 @@ release.
## 0.1.3
* Silver Bullet now runs on Windows!
* SilverBullet now runs on Windows!
* Frontmatter support! You can now use front matter in your markdown, to do this
start your page with `---` and end it with `---`. This will now be the
preferred way to define page metadata (although the old way will still work).
@ -287,7 +287,7 @@ release.
default is `index`). When navigating to this page, the page name will
"disappear" from the URL. That is, the index URL will simply be
`http://localhost:3000/`.
* This feature is now used in `website` and set to `Silver Bullet` there. To
* This feature is now used in `website` and set to `SilverBullet` there. To
also make the title look nicer when visiting https://silverbullet.md
---

View File

@ -1,5 +1,5 @@
You can access the “markdown web” through SilverBullet directly. The idea of the the markdown web (we really need a better name) is simple: the Internet is a messy place — tracking everywhere, tons of banners and other stuff  lets bring it back to the basics. How about Markdown?
SilverBullet supports navigating this markdown web via cloud links, theyre simply wiki links that start with “💭 “. For instance: [[💭 silverbullet.md/Silver Bullet]]. When you click one of these links, SilverBullet will simply pull in its content and present it to you in read-only mode (and do some clever internal link rewriting). What it does is simply fetch the link via HTTPs and postfixes the url with `.md`, so [[💭 silverbullet.md/Silver Bullet]] will simply fetch [this page](https://silverbullet.md/Silver%20Bullet.md). You can access all of the SilverBullet website this way, for instance heres the [[💭 silverbullet.md/CHANGELOG]].
SilverBullet supports navigating this markdown web via cloud links, theyre simply wiki links that start with “💭 “. For instance: [[💭 silverbullet.md/SilverBullet]]. When you click one of these links, SilverBullet will simply pull in its content and present it to you in read-only mode (and do some clever internal link rewriting). What it does is simply fetch the link via HTTPs and postfixes the url with `.md`, so [[💭 silverbullet.md/SilverBullet]] will simply fetch [this page](https://silverbullet.md/Silver%20Bullet.md). You can access all of the SilverBullet website this way, for instance heres the [[💭 silverbullet.md/CHANGELOG]].
To publish your own content this way, simply create an `index.md` on your host (this will be fetched as the main page), and publish all the rest of your content as `.md` files along side it. Thats all theres to it.

26
website/Desktop.md Normal file
View File

@ -0,0 +1,26 @@
SilverBullet is [available as a desktop application](https://github.com/silverbulletmd/silverbullet/releases) for:
* macOS (Intel and ARM)
* Windows (64bit)
* Linux (64bit Intel)
Why would you want to install SilverBullet as a desktop application, as opposed to the more mature [[Server]] version?
1. Its simpler to get started for most: you dont need to install Deno, or docker or whatnot. Instead, just download a single package file, install it and _go_.
2. It auto updates (at least on Mac and Windows), so you dont have to worry about upgrades.
3. Its easier to open multiple spaces without having to fiddle manually with starting multiple [[Server]] instances on different ports.
Why would you _not_ want to use the Desktop version? Youre limited to only access your space on your desktop computer, whereas the [[Server]] simply exposes SilverBullet as a web server you can access from multiple devices. You can use [[Sync]] to work around this issue, however.
Convinced? [visit the releases page](https://github.com/silverbulletmd/silverbullet/releases) to go download it.
## How it works
What the SilverBullet desktop app technically does is spin up a SilverBullet [[Server]] locally on a random port, and then simply point a fancy looking window (with menus and stuff) at that local URL without all the usual browser chrome (hah, Chrome, funny).
What ships in the desktop package:
1. A copy of Deno for your operating system (this is just a single binary thats included in the bundle).
2. The current build of silverbullet.js (the everything-in-one bundle that you also download when you install the [[SilverBullet]] from get.silverbullet.md).
3. [Electron](https://www.electronjs.org/)s Chrome engine.
Functionally, both [[Server]] and [[Desktop]] are on par in terms of how they work and what runs on your computer (except that with the Desktop app youre running yet another instance of Chrome — because thats how Electron apps work).

5
website/Download.md Normal file
View File

@ -0,0 +1,5 @@
You have three options to install and use SilverBullet. Pick your poison, as they say. Have a look at all three to decide whats best for you:
1. [[Server]] — install SilverBullet as a web server on your local machine or network, and access it via any web browser. This is the best choice for nerds 🤓.
2. [[Desktop]] — install SilverBullet as a desktop application, editing a local folder of files. This is the best option for casual users.
3. [[Mobile]] — install SilverBullet as a “native” mobile application (native: as in — distributed via the app store, and with an icon on your home screen). This is the best option for people with phones. More specifically, people with phones that dont want to access the [[Server]] via their mobile browser, or have anxiety around Internet connectivity.

View File

@ -13,9 +13,9 @@ Here is an example:
## This is a section
This is content
Silver Bullet allows arbitrary metadata to be added to pages this way, with two exceptions:
SilverBullet allows arbitrary metadata to be added to pages this way, with two exceptions:
* `name` is an attribute used for page names, so dont attempt to override it in frontmatter
* `tags` can be specified (as in the example) and are in effect another way of adding tags to your page, you can achieve the same result by simply adding hashtags in the body of your document, e.g. `#tag1 #tag2`.
Silver Bullet also has the _convention_ of using attributes starting with a `$` for internal use. For instance, the sharing capability uses the `$share` attribute, and `$disableDirectives: true` has the special meaning of disabling [[🔌 Directive]] processing on a page.
SilverBullet also has the _convention_ of using attributes starting with a `$` for internal use. For instance, the sharing capability uses the `$share` attribute, and `$disableDirectives: true` has the special meaning of disabling [[🔌 Directive]] processing on a page.

View File

@ -1,26 +1,43 @@
## Getting started
The best way to get a good feel for what SilverBullet is like to use, is to get your hands dirty (after washing your hands first, always wash your hands before touching a keyboard).
---
$disableDirectives: true
---
Here are some things for you to try _right now_:
## Getting started
The best way to get a good feel for what SilverBullet is like to use is to get your hands dirty. Not literally, that would be disgusting — wash your hands _before_ using SilverBullet please, keyboards are gross enough already, and before you say “but Im using this on mobile” — dont even get me started on mobile phone screens.
After your hands are properly washed, here are some things for you to try:
* Click on the page picker (book icon) 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 non-existent page to create it.
* You can pages in folders (if youre into that type of thing) simply by putting slashes (`/`) in the name (even on Windows), e.g. [[My Folder/My Page]] (note that although you only see the last bit of the name in live preview, the page is in fact nested in a folder).
* Click on the terminal 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). On mobile you can tap the screen with 3 fingers at the same time to open the command palette.
* You _can_ create pages in folders (if youre into that type of thing) simply by putting slashes (`/`) in the name (even on Windows), e.g. [[My Folder/My Page]] (note that although you only see the last bit of the name in live preview, the page is in fact nested in a folder).
* Click on the terminal icon (top right), hit `Cmd-/` (Mac) or `Ctrl-/` (Linux and Windows), or tap the screen with 3 fingers at the same time (on mobile) to open the **command palette**. The {[Stats: Show]} one is a safe one to try.
* Select some text and hit `Alt-m` to ==highlight== it, or `Cmd-b` (Mac) or `Ctrl-b` (Windows/Linux) to make it **bold**, or `Cmd-i` (Mac) or `Ctrl-i` (Windows/Linux) to make it _italic_.
* Click a link somewhere on this page to navigate there. When you link to a [[New Page]] it will initially show up in red (to indicate it does not yet exist), but once you click it — you will create the page automatically (only for real when you actually enter some text).
* Start typing `[[` somewhere to insert a page link (with completion).
* Start typing `[[` somewhere to insert your own page link (with completion).
* [ ] Tap this box 👈 to mark this task as done.
* Start typing `:party` to trigger the emoji picker 🎉
* Type `/` somewhere in the text to invoke a **slash command**.
* Hit `Cmd-p` (Mac) or `Ctrl-p` (Windows, Linux) to show a preview for the current page on the side.
* Click this button {[Editor: Toggle Vim Mode]} to toggle Vim mode
* If this is matching your personality type, you can click this button {[Editor: Toggle Vim Mode]} to toggle Vim mode. If you cannot figure out how to exit it, just click that button again. _Phew!_
Note that as you move your cursor around on this page and you get close to or “inside” marked up text, you will get to see the underlying [[💭 silverbullet.md/Markdown|Markdown]] code, this is what we refer to as “live preview” — generally your text looks clean, but you still can see whats under the covers. To move your cursor somewhere by mouse without navigating or activating (e.g. a wiki, regular link, or a button) hold `Alt` when you click.
Notice that as you move your cursor around on this page and you get close to or “inside” marked up text, you will get to see the underlying [[💭 silverbullet.md/Markdown|Markdown]] code. This experience is what we refer to as “live preview” — generally your text looks clean, but you still can see whats under the covers and edit it directly, as opposed to [WYSIWYG](https://en.wikipedia.org/wiki/WYSIWYG) that some other applications use. To move your cursor somewhere using your mouse without navigating or activating (e.g. a wiki, regular link, or a button) hold `Alt` when you click. Holding `Cmd` or `Ctrl` when clicking a link will open it in a new tab or window.
Hadnt we mentioned [[💭 silverbullet.md/Markdown|Markdown]] yet? Yeah, thats the markup language youll use to markup your documents. Its pretty simple to learn if you dont know it already.
Hadnt we mentioned [[💭 silverbullet.md/Markdown|Markdown]] yet? Yeah, thats the markup language youll use to add that dash of markup to your documents. Its pretty simple to learn if you dont know it already.
You will notice this whole page block is wrapped in a [[💭 silverbullet.md/%F0%9F%94%8C_Directive|Directive]] (in this case `#include`), which means that its content is automatically updated every time you run the {[Directives: Update]} command or navigate back to the page. In the case of `#include` this means the body will be replaced with the page included, so dont be surprised when whatever you update inside of this directive block will be undone later. Just sayin. [[💭 silverbullet.md/%F0%9F%94%8C_Directive|Directives]] are a powerful feature, so you should definitely look into them once you get comfortable with the basics.
You will notice this whole page section is wrapped in a strange type of block. This is a SilverBullet specific feature called a [[💭 silverbullet.md/%F0%9F%94%8C_Directive|Directive]] (in this case `#include`). There are various types of directives, and while were not keeping score, likely the coolest ones are [[💭 silverbullet.md/%F0%9F%94%8C_Directive/Query|queries]] — so you should definitely look into those.
Dont believe me, check this out, heres a list of (max 10) pages in your space ordered by last modified date, it updates (somewhat) dynamically 🤯. Create some new pages and come back here to see that it works:
<!-- #query page select name order by lastModified desc limit 10 -->
If youre seeing this, something didnt update quite right...
<!-- /query -->
That said, the directive used wrapping this page section is `#include` which simply inlines the content of another page into the current one. Directives recalculate their bodies in two scenarios:
1. When you load/switch to a page
2. When you explicitly run the {[Directives: Update]} command
In the case of `#include` this means the body will again be replaced with the page included, so dont be surprised when whatever you just updated inside of this directive block will be undone later. Just sayin. [[💭 silverbullet.md/%F0%9F%94%8C_Directive|Directives]] are a powerful feature, so you should definitely look into them once you get comfortable with the basics.
Feel free to completely remove all content on this page and make it your own, its just to get you started.
@ -28,4 +45,6 @@ Feel free to completely remove all content on this page and make it your own, it
Generally, you can find more information about SilverBullet on its official website. You have two ways to access it:
1. Through its [regular website link](https://silverbullet.md/)
2. Directly, through your local SilverBullet instance using [[💭 silverbullet.md/Cloud Links]]: [[💭 silverbullet.md/Silver Bullet]] (note that all of these will be read-only, for obvious reasons)
2. Directly without leaving SilverBullet, through [[💭 silverbullet.md/Cloud Links]], just click on this: [[💭 silverbullet.md/SilverBullet]] (note that all of these will be read-only, for obvious reasons)
To keep up with the latest and greatest going-ons in SilverBullet land, keep an eye on the [[💭 silverbullet.md/CHANGELOG]], regularly update your SilverBullet instance (`silverbullet upgrade` if youre running the Deno version). If you run into any issues or have ideas on how to make SilverBullet even awesomer (yes, thats a word), [join the conversation on GitHub](https://github.com/silverbulletmd/silverbullet).

View File

@ -1,3 +1,3 @@
Silver Bullet uses a “live preview” markdown editor. This mechanism is heavily inspired by [Obsidians live preview mode](https://help.obsidian.md/Live+preview+update).
SilverBullet uses a “live preview” markdown editor. This mechanism is heavily inspired by [Obsidians live preview mode](https://help.obsidian.md/Live+preview+update).
It reduces visual noise by not constantly showing [[Markdown]] codes such as `[this is a link](https://to.some.url)`, only showing the underlying Markdown when the cursor is placed inside.

View File

@ -1,6 +1,8 @@
Markdown is a plain text formatting system [originally developed by John Gruber](https://daringfireball.net/projects/markdown/). It has since been standardized into [CommonMark](https://commonmark.org/), which is what Silver Bullet uses (with some extensions).
Markdown is a plain text formatting system [originally developed by John Gruber](https://daringfireball.net/projects/markdown/). It has since been standardized into [CommonMark](https://commonmark.org/), which is what SilverBullet uses (with some extensions).
Specifically, Silver Bullet supports the following extensions to common mark:
If youre not yet familiar with Markdown [here is a good guide to get you started](https://www.markdownguide.org/basic-syntax/).
We mentioned markdown _extensions_, here are the ones currently supported:
* [[Frontmatter]]
* Double-bracketed wiki links: `[[link to page]]`, optionally with aliases `[[link to page|alias]]`.

7
website/Mobile.md Normal file
View File

@ -0,0 +1,7 @@
There is a “native” mobile app under development (the code [lives here](https://github.com/silverbulletmd/silverbullet/tree/main/mobile)). Initially, it will be offered for iOS (and iPadOS), but soon thereafter an Android version is planned.
The mobile app is built using [CapacitorJS](https://capacitorjs.com/) and therefore cross-platform. It essentially wraps the existing web app, and swaps out the server calls to local on-device APIs, such as using the local filesystem to store content (pages and attachments), uses a local SQLite database, and it runs all [[🔌 Plugs]] code on device. It is capable of fully running offline.
The mobile app keeps its files in the sandboxed file system of the SilverBullet app. These files are accessible via iOS file sharing capability (when you plug in your device via USB, you can see all files, copy new ones and remove them), and are included with the regular iOS backups.
In the very likely scenario youd like to synchronize with your space e.g. on [[Desktop]] or a [[Server]], youll need to use [[Sync]].

View File

@ -1,6 +1,6 @@
```
This file lists all plugs that SilverBullet will load. Run the {[Plugs: Update]} command to update and reload this list of plugs.
```yaml
- github:silverbulletmd/silverbullet-git/git.plug.json
- github:silverbulletmd/silverbullet-mermaid/mermaid.plug.json
```

View File

@ -1,6 +1,6 @@
```yaml
title: Silver Bullet
title: SilverBullet
publishAll: true
indexPage: Silver Bullet
indexPage: SilverBullet
footerPage: website-footer
```

View File

@ -32,7 +32,7 @@ $ source ~/.bashrc
$ deno -V
```
Then, just follow the standard [[Silver Bullet]] installation instructions:
Then, just follow the standard [[SilverBullet]] installation instructions:
```shell
$ deno install -f --name silverbullet -A --unstable https://get.silverbullet.md

View File

@ -2,5 +2,5 @@ This page contains settings for configuring SilverBullet and its Plugs. Any
changes outside of the yaml block will be overwritten.
```yaml
indexPage: Silver Bullet
indexPage: SilverBullet
```

View File

@ -1,6 +1,6 @@
What does Silver Bullet look like? Well, have a look around. **Youre looking at it at this very moment!** 🤯
What does SilverBullet look like? Well, have a look around. **Youre looking at it at this very moment!** 🤯
Note that what youre looking at is not a fully functional version, because the _back-end is read-only_. That said, it should give you some feel for what its like to use SB before making the commitment of running a single `deno` command (see here: [[Silver Bullet]]) to download and run it locally in its fully functioning mode.
Note that what youre looking at is not a fully functional version, because the _back-end is read-only_. That said, it should give you some feel for what its like to use SB before making the commitment of running a single `deno` command (see here: [[SilverBullet]]) to download and run it locally in its fully functioning mode.
## Start playing
So, feel free to make some edits in this space. Dont worry, you wont break anything, nothing is saved (just reload the page to see).
@ -18,13 +18,13 @@ Here are some things to try:
* Hit `Cmd-p` (Mac) or `Ctrl-p` (Windows, Linux) to show a live preview for the current page on the side, if your brain doesnt speak native Markdown yet.
* Open this site on your phone or tablet and… it just works!
* Are you using a browser with **PWA support** (e.g. any Chromium-based
browser)? Click on that little icon to the right of your location bar that says “Install Silver Bullet” to give SB its own window frame and desktop icon, like it is a stand-alone app (not particularly useful on silverbullet.md, but definitely do this once you install it yourself).
browser)? Click on that little icon to the right of your location bar that says “Install SilverBullet” to give SB its own window frame and desktop icon, like it is a stand-alone app (not particularly useful on silverbullet.md, but definitely do this once you install it yourself).
Oh yeah, you can use fancy things like tables:
| Page | Comment |
|----------|----------|
| [[Silver Bullet]] | Main product page |
| [[SilverBullet]] | Main product page |
| [[CHANGELOG]] | The latest updates |
or code snippets, like JavaScript:
@ -38,7 +38,7 @@ function helloWorld() {
or YAML:
```yaml
name: Silver Bullet
name: SilverBullet
rating: 5
```
@ -53,4 +53,4 @@ There are a few features you dont get to fully experience in this environment
Thats all, now go install this baby already!
Instructions here 👉 [[Silver Bullet]]
Instructions here 👉 [[SilverBullet]]

80
website/Server.md Normal file
View File

@ -0,0 +1,80 @@
Installing SilverBullet as a (local) web server is the most mature, and most flexible way to install SilverBullet. If mature and flexible is your thing, try this option!
The idea is simple: you run the web server (instructions below), point your browser at it and _go, go, go_! You can access the URL via your desktop browser, but also a mobile one. This makes it a great option to access your space from various devices without requiring any type of sync. You could even go _full-on YOLO_ (thats a technical term), and install it on a public cloud server somewhere and access it that way (be sure to at least enable authentication and put SSL on top of it, though).
You have two options to install and run SilverBullet as a server:
1. Installation via Deno on your host system
2. Running it with Docker
## Installation via Deno
This consists of two steps (unless Deno is already installed — in which case were down to one):
1. [Install Deno](https://deno.land/manual/getting_started/installation) (if youre using a Raspberry Pi, follow [[Raspberry Pi Installation]]-specific instructions)
2. Installing SilverBullet itself
### Install SilverBullet
With Deno installed, run:
```shell
deno install -f --name silverbullet -A --unstable https://get.silverbullet.md
```
This will install `silverbullet` into your `~/.deno/bin` folder (which should already be in your `$PATH` if you followed the Deno install instructions).
To run SilverBullet, create a folder for your pages (it can be empty, or be an existing folder with `.md` files) and run the following command in your terminal:
```shell
silverbullet <pages-path>
```
By default, SilverBullet will bind to port `3000`, to use a different port use the `--port` flag.
For security reasons, by default SilverBullet only allows connections via `localhost` (or `127.0.0.1`). To also allow connections from the network, pass a `--hostname 0.0.0.0` flag (0.0.0.0 for all connections, or insert a specific address to limit the host), ideally combined with `--user username:password` to add BasicAuth password protection.
Once downloaded and booted, SilverBullet will print out a URL to open SB in your browser.
## Upgrading SilverBullet
SilverBullet is regularly updated. To get the latest and greatest, simply run:
```shell
silverbullet upgrade
```
And restart SilverBullet. You should be good to go.
## Installing SilverBullet with Docker
There is a [docker image on docker hub](https://hub.docker.com/r/zefhemel/silverbullet). To use it, first create a volume to keep your space (markdown) files:
```shell
docker volume create myspace
```
Then, run the container, e.g. as follows:
```shell
docker run -p 3000:3000 -v myspace:/space -d --name silverbullet zefhemel/silverbullet
```
If you'd like to pass in additional command line arguments (e.g. `--user` to add authentication) you can just append those to the command, e.g.:
```shell
docker run -p 3000:3000 -v myspace:/space -d --name silverbullet zefhemel/silverbullet --user me:letmein
```
To build your own version of the docker image, run `./scripts/build_docker.sh`.
You can also use docker-compose if you prefer. From a silverbullet check-out run:
```shell
PORT=3000 docker-compose up
```
or similar.
To upgrade, simply pull the latest docker image (rebuilt and pushed after every commit to "main") and start the new container.
```shell
docker pull zefhemel/silverbullet
```

View File

@ -1,13 +1,13 @@
Silver Bullet is an extensible, [open source](https://github.com/silverbulletmd/silverbullet), **personal knowledge management** system. Indeed, thats fancy talk for “a note-taking app with links.” However, Silver Bullet goes a bit beyond just that.
_Quick links:_ [Roadmap](https://github.com/orgs/silverbulletmd/projects/2/views/1), [[CHANGELOG]], [Issues](https://github.com/silverbulletmd/silverbullet/issues), [Discussions](https://github.com/silverbulletmd/silverbullet/discussions), [Zef on Mastodon](https://hachyderm.io/@zef), [Mattermost chat](https://silverbullet.cloud.mattermost.com/), [Docker Hub](https://hub.docker.com/r/zefhemel/silverbullet).
SilverBullet is an extensible, [open source](https://github.com/silverbulletmd/silverbullet), **personal knowledge management** system. Indeed, thats fancy talk for “a note-taking app with links.” However, SilverBullet goes a bit beyond _just_ that.
Youve been told there is _no such thing_ as a [silver bullet](https://en.wikipedia.org/wiki/Silver_bullet). You were told wrong.
Lets have a look at some of Silver Bullets features.
Before we get to the nitty gritty, some _quick links_ for the impatient reader: [[Download]], [Roadmap](https://github.com/orgs/silverbulletmd/projects/2/views/1), [[CHANGELOG]], [Issues](https://github.com/silverbulletmd/silverbullet/issues), [Discussions](https://github.com/silverbulletmd/silverbullet/discussions), [Mastodon](https://hachyderm.io/@silverbullet), [Mattermost chat](https://silverbullet.cloud.mattermost.com/), [Docker Hub](https://hub.docker.com/r/zefhemel/silverbullet).
To start, lets have a look at some of SilverBullets features.
## Features
* Runs in any modern browser (including on mobile) and is installable as a [PWA](https://web.dev/progressive-web-apps/).
* Runs in any modern browser (including on mobile) when run as a [[Server]], but can also be run ask a [[Desktop]] (and soon) [[Mobile]] app.
* Provides an enjoyable [[Markdown]] writing experience with a clean UI, rendering text using [[Live Preview|live preview]] further **reducing visual noise**, while still providing direct access to the underlying markdown syntax.
* Supports wiki-style **page linking** using the `[[page link]]` syntax, even keeping links up-to-date when pages are renamed.
* Optimized for **keyboard-based operation**:
@ -18,17 +18,17 @@ Lets have a look at some of Silver Bullets features.
* Experimental [[🔌 Collab|real-time collaboration support]].
* Robust extension mechanism using [[🔌 Plugs]].
* **Self-hosted**: you own your data. All content is stored as plain files in a folder on disk. Back up, sync, edit, publish, script with any additional tools you like.
* Silver Bullet is [open source, MIT licensed](https://github.com/silverbulletmd/silverbullet) software.
* SilverBullet is [open source, MIT licensed](https://github.com/silverbulletmd/silverbullet) software.
![Screencast screenshot](demo-video-screenshot.png)
To get a good feel of what Silver Bullet is capable of, [have a look at this introduction video](https://youtu.be/VemS-cqAD5k).
To get a good feel of what SilverBullet is capable of, [have a look at this introduction video](https://youtu.be/VemS-cqAD5k).
## Try it
Heres the kicker:
==You are looking at a (more or less) operational copy of Silver Bullet **right now**==.
==You are looking at a (more or less) operational copy of SilverBullet **right now**==.
Thats right, **this very website is powered by Silver Bullet itself**. 🤯
Thats right, **this very website is powered by SilverBullet itself**. 🤯
On this site, everything is editable just none of it persists (the back-end is read-only). So, edit away, reload the page and everything resets.
@ -46,13 +46,13 @@ Dont just sit there, try it!
* Click this button {[Editor: Toggle Vim Mode]} to toggle Vim mode
* Open this site on your phone or tablet and... it just works!
* Are you using a browser with **PWA support** (e.g. any Chromium-based
browser)? Click on that little icon to the right of your location bar that says “Install Silver Bullet” to give SB its own window frame and desktop icon, like it is a stand-alone app (not particularly useful on silverbullet.md, but definitely do this once you install it yourself).
browser)? Click on that little icon to the right of your location bar that says “Install SilverBullet” to give SB its own window frame and desktop icon, like it is a stand-alone app (not particularly useful on silverbullet.md, but definitely do this once you install it yourself).
Oh yeah, and you can use fancy things like tables:
| Page | Comment |
|----------|----------|
| [[Silver Bullet]] | Main product page |
| [[SilverBullet]] | Main product page |
| [[CHANGELOG]] | The latest updates |
or code snippets, like JavaScript:
@ -66,7 +66,7 @@ function helloWorld() {
or YAML:
```yaml
name: Silver Bullet
name: SilverBullet
rating: 5
```
@ -77,52 +77,26 @@ There are a few features you dont get to fully experience in this environment
* **Full-text search**.
* **Extending** and updating SBs functionality by installing additional [[🔌 Plugs]] (SB parlance for plug-ins) and writing your own.
## Download SilverBullet
Has your mind been sufficiently blown to commit to an install? Took you long enough, alright then.
<!-- #include [[Download]] -->
You have three options to install and use SilverBullet. Pick your poison, as they say. Have a look at all three to decide whats best for you:
1. [[Server]] — install SilverBullet as a web server on your local machine or network, and access it via any web browser. This is the best choice for nerds 🤓.
2. [[Desktop]] — install SilverBullet as a desktop application, editing a local folder of files. This is the best option for casual users.
3. [[Mobile]] — install SilverBullet as a “native” mobile application (native: as in — distributed via the app store, and with an icon on your home screen). This is the best option for people with phones. More specifically, people with phones that dont want to access the [[Server]] via their mobile browser, or have anxiety around Internet connectivity.
<!-- /include -->
## Where to go from here
Click on the links below to explore various aspects of Silver Bullet more in-depth:
Click on the links below to explore various aspects of SilverBullet more in-depth:
* [[CHANGELOG]]: Whats new?
* [[🔌 Plugs]]: extensions available in Silver Bullet
* [[💡 Inspiration]]: some of the projects that inspired Silver Bullet
* [[🔨 Development]]: how to start hacking on Silver Bullet itself
## Installing Silver Bullet
This consists of two steps (unless Deno is already installed):
1. [Install Deno](https://deno.land/manual/getting_started/installation) (if youre using a Raspberry Pi, follow [[Raspberry Pi Installation]]-specific instructions)
2. Installing Silver Bullet itself
### Install Silver Bullet
With Deno installed, run:
```shell
deno install -f --name silverbullet -A --unstable https://get.silverbullet.md
```
This will install `silverbullet` into your `~/.deno/bin` folder (which should already be in your `$PATH` if you followed the Deno install instructions).
To run Silver Bullet, create a folder for your pages (it can be empty, or be an existing folder with `.md` files) and run the following command in your terminal:
```shell
silverbullet <pages-path>
```
By default, Silver Bullet will bind to port `3000`, to use a different port use the `--port` flag.
For security reasons, by default Silver Bullet only allows connections via `localhost` (or `127.0.0.1`). To also allow connections from the network, pass a `--hostname 0.0.0.0` flag (0.0.0.0 for all connections, or insert a specific address to limit the host), ideally combined with `--user username:password` to add BasicAuth password protection.
Once downloaded and booted, Silver Bullet will print out a URL to open SB in your browser.
## Upgrading Silver Bullet
Silver Bullet is regularly updated. To get the latest and greatest, simply run:
```shell
silverbullet upgrade
```
And restart Silver Bullet. You should be good to go.
* [[🔌 Plugs]]: extensions available for, and as part of SilverBullet
* [[💡 Inspiration]]: some of the projects that inspired SilverBullet
* [[🔨 Development]]: how to start hacking on SilverBullet itself
## 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).
Want to chat with us? [We have a Mattermost instance](https://silverbullet.cloud.mattermost.com/), join us!

39
website/Sync.md Normal file
View File

@ -0,0 +1,39 @@
SilverBullet now has a sync engine. Lets still consider it _experimental_, but its ready for use.
The synchronization algorithm implemented is [pretty much this one described here](https://unterwaditzer.net/2016/sync-algorithm.html).
## Architecture
Youll use a single SilverBullet [[Server]] as your central synchronization space, then connect any other instances of SilverBullet (likely primarily [[Mobile]] and [[Desktop]] apps, but could also be other [[Server]] instances) to it. Each “client” instance keeps track of sync snapshots that it uses to figure out what files have changed where.
Lets put this information in a graph, just because we can!
```mermaid
graph TD;
iPhone-->SB(SilverBullet Server);
iPad-->SB;
Desktop-->SB;
OtherSB(Other Silver Bullet instance)-->SB;
```
## Usage
Heres how to use SilverBullets sync functionality:
1. Set up a SilverBullet [[Server]] somewhere where all your other devices have access to it. This can be your local network, a VPN, or if youre living the wild life — the public Internet (do put some SSL and authentication on it please).
2. Connect any other SilverBullet instance (likely the [[Desktop]] or [[Mobile]] app) to it via the {[Sync: Configure]} command. This will ask for:
* A URL to connect to (the URL of the SB server configured under (1))
* A username and password (optional) if you run the server with the `--user myuser:mypass` flag (as you should)
3. {[Sync: Sync]} performs a sync. It stores a local sync snapshot (basically a list of timestamps for all files in your space) in its local SQLite database every time.
4. Check {[Show Logs]} for sync logs.
Right now, sync needs to be triggered manually, so run {[Sync: Sync]} whenever you feel a sync is warranted.
## The sync process
1. The sync engine compares two file listings: the local one and remote one, and figures out which files have been added, changed and removed on both ends. It uses timestamps to determine changes. Note this doesnt make any assumptions about clocks being in sync, timezones etc.
2. In most cases, based on this info (together with the snapshot from the last sync) it should be obvious what to do, and it will do just do it.
3. In case of a conflict — which would happen if files on both ends have been changed since the last sync, it will first pull down both files and compare their content. If theyre the same, no issues. If theyre different: a conflicting copy will be created with a name of `page name.conflicted.timestamp`. Youll see those appear in your page list.
## Caveats
* This is new code, and not been extremely thoroughly tested. Make backups.
* The sync engine doesnt synchronize `_plugs` code, so to update the plug list based on your [[PLUGS]] you have to manually run {[Plugs: Update]}.
So, if youre ready for this. Go try it. We do recommend: make regular backups in case the proverbial shit hits the fan, dont say we didnt warn you!

View File

@ -1,3 +1,3 @@
YAML stands for “YAML Aint Markup Language.” More information can be found at [the YAML website](https://yaml.org/).
Silver Bullet uses YAML in various contexts, specifically [[Frontmatter]].
SilverBullet uses YAML in various contexts, specifically [[Frontmatter]].

View File

@ -1 +1 @@
Moved to [[Silver Bullet]]
Moved to [[SilverBullet]]

View File

@ -1,4 +1,4 @@
---
©️ [[Silver Bullet]] authors.
_Published with [Silver Bullet Publish](https://github.com/silverbulletmd/silverbullet-publish)._
©️ [[SilverBullet]] authors.
_Published with [SilverBullet Publish](https://github.com/silverbulletmd/silverbullet-publish)._

View File

@ -1,4 +1,4 @@
Inspiration for Silver Bullet comes primarily from
Inspiration for SilverBullet comes primarily from
[Obsidian](https://obsidian.md/) and its vast plug-in ecosystem (the
work-in-progress plugs around querying and tasks are inspired by Obsidians tasks and dataview plugins), but also [Roam Research](https://roamresearch.com/) was an inspiration.

View File

@ -4,7 +4,7 @@ repo: https://github.com/silverbulletmd/silverbullet
share-support: true
---
The Collab plug implements real-time “Google Doc” style collaboration with other Silver Bullet users using the [Yjs](https://yjs.dev) library. It supports:
The Collab plug implements real-time “Google Doc” style collaboration with other SilverBullet users using the [Yjs](https://yjs.dev) library. It supports:
* Real-time editing
* Showing other participants cursors and selections
@ -22,8 +22,8 @@ To use it:
1. Open a page you would like to collaborate on
2. Run the {[Share: Collab]} command and select the collab server to use (an open one runs at `wss://collab.silverbullet.md`)
3. Copy & paste the `collab:...` URI that is injected into the `$share` [[Frontmatter]] and send to a collaborator **or** if your collaborator is not (yet) a Silver Bullet user, you can use the silverbullet.md website (which is an SB instance) directly via the `https://silverbullet.md/collab:...` URL scheme.
4. If your collaborator is an SB user, have them use the {[Share: Join Collab]} command, or directly open the `collab:...` URI as a page in Silver Bullet (both do the same).
3. Copy & paste the `collab:...` URI that is injected into the `$share` [[Frontmatter]] and send to a collaborator **or** if your collaborator is not (yet) a SilverBullet user, you can use the silverbullet.md website (which is an SB instance) directly via the `https://silverbullet.md/collab:...` URL scheme.
4. If your collaborator is an SB user, have them use the {[Share: Join Collab]} command, or directly open the `collab:...` URI as a page in SilverBullet (both do the same).
5. If the collaborator wants to keep a persistent copy of the page collaborated page, they can simply _rename_ the page to something not prefixed with `collab:`. Everything will keep working for as long as the `collab:` will appear in the `$share` attribute of [[Frontmatter]]
## How it works

View File

@ -3,7 +3,7 @@ type: plug
repo: https://github.com/silverbulletmd/silverbullet
---
The core plug implements foundational functionality for Silver Bullet. It covers the following areas:
The core plug implements foundational functionality for SilverBullet. It covers the following areas:
* [[🔌 Core/Indexing]]
* [[🔌 Core/Templates]]

View File

@ -1,4 +1,4 @@
Silver Bullet has a generic indexing infrastructure. Pages are reindexed upon saving, so about every second. Manual reindexing can be done running the {[Space: Reindex]} command.
SilverBullet has a generic indexing infrastructure. Pages are reindexed upon saving, so about every second. Manual reindexing can be done running the {[Space: Reindex]} command.
The [[🔌 Core]] plug indexes the following:

View File

@ -1,4 +1,4 @@
Silver Bullet has infrastructure to “unfurl” — that is: replace with something nice — various types of URLs. Unfurling can be triggered by putting your cursor on any “naked” URL, and running the {[Link: Unfurl]} command.
SilverBullet has infrastructure to “unfurl” — that is: replace with something nice — various types of URLs. Unfurling can be triggered by putting your cursor on any “naked” URL, and running the {[Link: Unfurl]} command.
Plugs can provide custom unfurls for specific URL patterns. For instance the [[🔌 Twitter]] plug provides the ability to unfurl tweets, and pull in their content.

View File

@ -1,6 +1,6 @@
Plug management using the [[PLUGS]] file is also implemented in the [[🔌 Core]] plug.
The optional [[PLUGS]] file is only processed when running the {[Plugs: Update]} command, in which case it will fetch all the listed plugs and copy them into the (hidden) `_plug/` folder in the users space. Silver Bullet loads these files on boot (or on demand after running the {[Plugs: Update]} command).
The optional [[PLUGS]] file is only processed when running the {[Plugs: Update]} command, in which case it will fetch all the listed plugs and copy them into the (hidden) `_plug/` folder in the users space. SilverBullet loads these files on boot (or on demand after running the {[Plugs: Update]} command).
You can also use the {[Plugs: Add]} to add a plug, which will automatically create a [[PLUGS]] if it does not yet exist.

View File

@ -1,4 +1,4 @@
Slash commands are built-in to Silver Bullet. You can trigger them by typing a `/` in your text (after whitespace).
Slash commands are built-in to SilverBullet. You can trigger them by typing a `/` in your text (after whitespace).
The [[🔌 Core]] plug provides a few helpful ones:

View File

@ -1,4 +1,4 @@
Tags in Silver Bullet can be added in two ways:
Tags in SilverBullet can be added in two ways:
1. Through the `tags` attribute in [[Frontmatter]]
2. By putting a `#tag` at the top level (to tag a page), or at the task or item level to tag those blocks specifically.

View File

@ -117,7 +117,7 @@ Templates are predefined formats to render the body of the query.
It is pretty easy. You just need to create a new page. However, it is
recommended to create your templates using `template/[TEMPLATE_NAME]`
convention. For this guide, we will create `template/plug` to display list of Plugs available in Silver Bullet. We will use this template in the Examples section below.
convention. For this guide, we will create `template/plug` to display list of Plugs available in SilverBullet. We will use this template in the Examples section below.
#### 5.2 What is the syntax?
@ -127,7 +127,7 @@ We are using Handlebars which is a simple templating language. It is using doubl
Let me break it down for you
- `*` is creating a bullet point for each item in Silver Bullet
- `*` is creating a bullet point for each item in SilverBullet
- `[[{{name}}]]` is injecting the name of Plug and creating an internal link to
the page of the Plug
- `**{{author}}**` is injecting the author of the Plug and making it bold

View File

@ -7,7 +7,7 @@ share-support: true
---
<!-- #include [[https://raw.githubusercontent.com/silverbulletmd/silverbullet-ghost/main/README.md]] -->
# Ghost plug for Silver Bullet
# Ghost plug for SilverBullet
This allows you to publish your pages as [Ghost](https://ghost.org/) pages or posts. I use it to publish [Zef+](https://zef.plus).
@ -28,7 +28,7 @@ Then, create a Custom Integration (in your Ghost control panel under Settings >
```
## Usage
The plugin hooks into Silver Bullet's [Share infrastructure](https://silverbullet.md/%F0%9F%94%8C_Share). Therefore to share a page as either a Ghost page or post, add a `$share` front matter key. For posts this should take the shape of:
The plugin hooks into SilverBullet's [Share infrastructure](https://silverbullet.md/%F0%9F%94%8C_Share). Therefore to share a page as either a Ghost page or post, add a `$share` front matter key. For posts this should take the shape of:
---
$share:

View File

@ -9,7 +9,7 @@ author: Bertjan Broeksema
# SilverBullet plug for showing a graph view of the documents
This plug aims to bring similar functionality as the Obsidian Graph view to
Silver Bullet.
SilverBullet.
## Installation

View File

@ -6,7 +6,7 @@ author: Zef Hemel
---
<!-- #include [[https://raw.githubusercontent.com/silverbulletmd/silverbullet-katex/main/README.md]] -->
# Silver Bullet KaTeX plug
# SilverBullet KaTeX plug
## Installation
Run the {[Plugs: Add]} command and paste in: `github:silverbulletmd/silverbullet-katex/katex.plug.json`
@ -26,7 +26,7 @@ And move your cursor outside of the block to live preview it!
**Note:** [KaTeX](https://katex.org) itself is not bundled with this plug, it pulls the JavaScript, CSS and fonts from the JSDelivr CDN. This means _this plug will not work without an Internet connection_. The reason for this limitation is that it is not yet possible to distribute font files via plugs, and KaTeX depends on specific web fonts.
## Build
Assuming you have Deno and Silver Bullet installed, simply build using:
Assuming you have Deno and SilverBullet installed, simply build using:
```shell
deno task build

View File

@ -7,12 +7,12 @@ share-support: true
---
<!-- #include [[https://raw.githubusercontent.com/silverbulletmd/silverbullet-mattermost/main/README.md]] -->
# Mattermost for Silver Bullet
# Mattermost for SilverBullet
This plug provides various integrations with the [Mattermost suite](https://www.mattermost.com) of products. Please follow the installation, configuration sections, and have a look at the example.
Features:
* Integration with [Silver Bullet Share](https://silverbullet.md/%F0%9F%94%8C_Share), allowing you to publish and update a page as a post on Mattermost, as well as load existing posts into SB as a page using the {[Share: Mattermost Post: Publish]} (to publish an existing page as a Mattermost post) and {[Share: Mattermost Post: Load]} (to load an existing post into SB) commands.
* Integration with [SilverBullet Share](https://silverbullet.md/%F0%9F%94%8C_Share), allowing you to publish and update a page as a post on Mattermost, as well as load existing posts into SB as a page using the {[Share: Mattermost Post: Publish]} (to publish an existing page as a Mattermost post) and {[Share: Mattermost Post: Load]} (to load an existing post into SB) commands.
* Access your saved posts via the `mm-saved` query provider
* Unfurl support for posts (after dumping a permalink URL to a post in a page, use the {[Link: Unfurl]} command).
* Boards support is WIP

View File

@ -6,8 +6,8 @@ author: Zef Hemel
---
<!-- #include [[https://raw.githubusercontent.com/silverbulletmd/silverbullet-mermaid/main/README.md]] -->
# Silver Bullet plug for Mermaid diagrams
This plug adds basic [Mermaid](https://mermaid.js.org/) support to Silver Bullet.
# SilverBullet plug for Mermaid diagrams
This plug adds basic [Mermaid](https://mermaid.js.org/) support to SilverBullet.
**Note:** The Mermaid library itself is not bundled with this plug, it pulls the JavaScript from the JSDelivr CDN. This means _this plug will not work without an Internet connection_. The reason for this is primarily plug size (bundling the library would amount to 1.1MB). This way Mermaid is only loaded on pages with actual Mermaid diagrams rather than on every SB load.
@ -28,7 +28,7 @@ Put a mermaid block in your markdown:
And move your cursor outside of the block to live preview it!
## Build
Assuming you have Deno and Silver Bullet installed, simply build using:
Assuming you have Deno and SilverBullet installed, simply build using:
```shell
deno task build

View File

@ -1,4 +1,4 @@
Silver Bullet at its core is bare bones in terms of functionality, most of its power it gains from **plugs**.
SilverBullet 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 thats part of the silverbullet repo) that runs “plug” code on the server in Deno web workers ([with severely locked down permissions](https://deno.land/manual@v1.28.2/runtime/workers#instantiation-permissions)), and in the browser using web workers.
@ -15,7 +15,7 @@ Each plug runs in its own _sandboxed environment_ and communicates with SB via _
Plugs are distributed as self-contained JSON files (ending with `.plug.json`). Upon boot, SB will load all core plugs bundled with SB itself (listed below), as well as any additional plugs stored in the `_plug` folder in your space. Typically, management of plugs in the `_plug` folder is done using [[🔌 Core/Plug Management]].
## Core plugs
These plugs are distributed with Silver Bullet and are automatically enabled:
These plugs are distributed with SilverBullet and are automatically enabled:
<!-- #query page where type = "plug" and uri = null order by name render [[template/plug]] -->
* [[🔌 Collab]]
* [[🔌 Core]]
@ -42,7 +42,7 @@ These plugs are written either by third parties or distributed separately from t
## How to develop your own plug
The easiest way to get started is to click the “Use this template” on the [silverbullet-plug-template](https://github.com/silverbulletmd/silverbullet-plug-template) repo.
Generally, every plug consists of a YAML manifest file named `yourplugname.plug.yml`. This file defines all functions that form your plug. To be loadable by Silver Bullet (or any PlugOS-based system for that matter), it needs to be compiled into a JSON bundle (ending with `.plug.json`).
Generally, every plug consists of a YAML manifest file named `yourplugname.plug.yml`. This file defines all functions that form your plug. To be loadable by SilverBullet (or any PlugOS-based system for that matter), it needs to be compiled into a JSON bundle (ending with `.plug.json`).
Generally, the way to do this is to run `silverbullet plug:compile` as follows:

View File

@ -3,9 +3,9 @@ type: plug
repo: https://github.com/silverbulletmd/silverbullet
---
The Tasks plug implements a lot of the task support in Silver Bullet.
The Tasks plug implements a lot of the task support in SilverBullet.
Tasks in Silver Bullet are written using semi-standard task syntax:
Tasks in SilverBullet are written using semi-standard task syntax:
* [ ] This is a task

View File

@ -2,7 +2,7 @@
type: plug
uri: github:silverbulletmd/silverbullet-twitter/twitter.plug.json
repo: https://github.com/silverbulletmd/silverbullet-twitter
author: Silver Bullet Authors
author: SilverBullet Authors
---
<!-- #include [[https://raw.githubusercontent.com/silverbulletmd/silverbullet-twitter/main/README.md]] -->
@ -14,7 +14,7 @@ Currently the only thing this plug offers is unfurling links to tweets. To use,
Turns into:
[Zef Hemel](https://twitter.com/zef/status/1547687321679511552):
> For those who missed my earlier posts on Silver Bullet: its my new powerful note taking/PKM app. Demo video from a users perspective: https://t.co/MKauSTcUG3 How it works technically (plugins all the way down): https://t.co/sqCkAa0pem Repo: https://t.co/rrxQdyxze1
> For those who missed my earlier posts on SilverBullet: its my new powerful note taking/PKM app. Demo video from a users perspective: https://t.co/MKauSTcUG3 How it works technically (plugins all the way down): https://t.co/sqCkAa0pem Repo: https://t.co/rrxQdyxze1
## Installation

View File

@ -1,8 +1,8 @@
## Stack
Silver Bullet is written in [TypeScript](https://www.typescriptlang.org/) and built on top of the excellent [CodeMirror 6](https://codemirror.net/) editor component. Additional UI is built using [Preact](https://preactjs.com/). [ES Build](https://esbuild.github.io) is used to build both the front-end and back-end bundles. The server backend runs as a HTTP server on [Deno](https://deno.land/) using [Oak](https://oakserver.github.io/oak/).
SilverBullet is written in [TypeScript](https://www.typescriptlang.org/) and built on top of the excellent [CodeMirror 6](https://codemirror.net/) editor component. Additional UI is built using [Preact](https://preactjs.com/). [ES Build](https://esbuild.github.io) is used to build both the front-end and back-end bundles. The server backend runs as a HTTP server on [Deno](https://deno.land/) using [Oak](https://oakserver.github.io/oak/).
## Development
Requirements: [Deno](https://deno.land/) 1.28 or newer. If you are running Silver Bullet, you will already have Deno installed.
Requirements: [Deno](https://deno.land/) 1.28 or newer. If you are running SilverBullet, you will already have Deno installed.
Clone the repository from Github: