- JavaScript 94.1%
- CSS 5.9%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .agents/skills/create-owncast-plugin-js | ||
| __tests__ | ||
| assets | ||
| src | ||
| .gitignore | ||
| AGENTS.md | ||
| icon.png | ||
| image.png | ||
| INSTRUCTIONS.md | ||
| package-lock.json | ||
| package.json | ||
| plugin.manifest.json | ||
| README.md | ||
Emoji Autocomplete
An Owncast plugin that adds a :-triggered emoji autocomplete popup to the viewer chat. All viewer preferences (enabled/disabled, row count, separating channel and default emojis, recently-used tracking and its size limit) live in that viewer's own localStorage.
The plugin has no server-side behavior.
Users can view their settings under user settings
Contributing
Because I run my own git it does add a bit of friction, you can reach out to me via:
- XMPP at mosskoi@im.mosskoi.com
- ActivityPub at https://social.mosskoi.com/mosskoi
Default README (not super important)
Develop
npm install # one-time, fetches the prebuilt test/serve host binaries
npm run build # bundle src/plugin.js into emoji-autocomplete.js
npm test # build + load-check, then browser tests (needs Chromium; set CHROMIUM_PATH if not on PATH)
npm run serve # build, then host the plugin on http://localhost:8080
npm run package # build, then bundle into emoji-autocomplete.ocpkg for distribution
Plugins ship as source and run on the JavaScript engine the Owncast host embeds,
so there's no wasm compile step and no toolchain to install. npm install only
fetches the host binaries test/serve use, and caches them after the first run.
Ship
npm run package produces emoji-autocomplete.ocpkg. Install it through the Owncast admin: open Plugins, click Upload plugin, and pick the file. (You can also copy it directly to the server's data/plugins/ directory if the admin UI isn't an option.) Toggle Enabled to load it.
Files
src/plugin.js, empty (no server-side handlers needed)assets/emoji-autocomplete.css/assets/emoji-autocomplete.js, the actual autocomplete popup, inlined into the viewer page via the manifest'sstyles/scriptsfieldsplugin.manifest.json, the manifest: display name, slug, version, permissions__tests__/plugin.test.js, exercises the install-time load-check (no dynamic behavior to assert scenarios against)icon.png(optional), drop a square PNG here and it bundles into the.ocpkgautomatically. The admin uses it in the plugin list and sidebar, no permission required. Plugins without one fall back to a generic puzzle-piece glyph.INSTRUCTIONS.md, rendered as an Instructions tab on the plugin's details page in the Owncast admin.
Learn more
The full author guide covers every event handler, host API, permission, and testing pattern:
TypeScript declarations in @owncast/plugin-sdk give editor autocomplete on every API.