Appearance
Quickstart
Get a working plugin running in Dissent in about 5 minutes. No npm, no build step.
1. Scaffold a plugin
Run the scaffolder in any directory:
bash
npx create-dissent-pluginAnswer the prompts:
Plugin name: My First Plugin
Plugin ID (slug): my-first-plugin
Context:
1) channel — full-screen app inside a channel
2) sidebar — compact widget in the server sidebar
3) profile — card on a user's profile
4) embed — inline result from a slash command
Choice [1]: 2
Tier:
1 — passive (no user data access, no posting)
2 — interactive (user opt-in, can read channel/profile)
3 — collaborative (can post messages as bot)
Choice [1]: 1This creates:
my-first-plugin/
index.html ← your plugin UI
manifest.json ← plugin metadata2. Serve it locally
From inside the plugin directory, start any static file server. Python's built-in server works:
bash
cd my-first-plugin
python3 -m http.server 8787Your plugin is now at http://localhost:8787.
3. Enable Developer Mode on your server
In Dissent, open Server Settings → General and toggle on Developer Mode. This allows plugins hosted on localhost to be installed — it's off by default on production servers.
4. Install the plugin
Still in Server Settings, go to the Plugins tab and click Install from URL. Enter:
http://localhost:8787/manifest.jsonDissent fetches the manifest and pre-fills the plugin name, context, and tier. Click Install.
5. Assign and see it
- For a sidebar plugin: it appears automatically in the right panel of your server.
- For a channel plugin: go to any channel's settings, find Plugin, and assign your plugin.
- For a profile plugin: open your profile and click Add Plugin.
You should see the scaffolded plugin rendering, displaying its PluginContext as a JSON dump.
6. Make a change
Edit index.html — change the content inside the #app div. Reload the channel or sidebar. Changes appear immediately (the plugin is loaded fresh on each view).
Next steps
- Concepts — understand contexts, tiers, and the sandbox model
- Channel plugins — build a full-screen experience
- Sidebar plugins — build a compact widget
- Profile plugins — add a card to your profile
- Embed plugins — respond to slash commands