ernestdefoe / scribe
Scribe — a true WYSIWYG editor for Flarum. TipTap, with no Markdown anywhere in the stack.
Package info
Language:TypeScript
Type:flarum-extension
pkg:composer/ernestdefoe/scribe
Requires
- php: ^8.2
- flarum/core: ^2.0
Requires (Dev)
- flarum/phpstan: ^2.0
Suggests
None
Provides
None
Conflicts
Replaces
None
README
A true WYSIWYG editor for Flarum 2 — TipTap, with no Markdown anywhere in the stack.
Both flarum/markdown and fof/rich-text can be uninstalled. Existing posts keep
rendering exactly as they did, with no migration and no rewritten rows.
Why this exists
Every WYSIWYG editor for Flarum so far has been a rich editor sitting on top of
Markdown: the document is serialised to Markdown on submit and re-parsed on load.
That is why flarum/markdown is a hard dependency of fof/rich-text, and why
Markdown syntax keeps leaking into a supposedly what-you-see-is-what-you-get
experience — type **bold** and it turns bold, paste code with underscores and it
turns italic.
Scribe removes the Markdown layer entirely. TipTap already speaks HTML natively, so dropping Markdown makes the pipeline simpler, not harder.
How your existing posts survive
Flarum stores posts as s9e TextFormatter XML, not as source text. The tag
vocabulary in that XML — STRONG, EM, H2, LIST, LI, C … — belongs to
s9e, not to Markdown. Markdown was only ever one parser feeding those tags.
Scribe emits the same vocabulary from HTML, and supplies templates for the tags
flarum/markdown used to own. A post written years ago in Markdown and a post
written today in Scribe are the same shape in the database and share one render
path.
Uninstalling flarum/markdown without this would silently flatten every post you
have: the text survives, every heading, bold, list and code span does not. That
is not a warning drawn from theory — it is what happens, and it is the specific
failure Scribe exists to prevent.
Where flarum/bbcode is enabled it keeps ownership of the tags it already
provides (CODE, QUOTE, URL, IMG, LIST, LI, DEL, EMAIL), so syntax
highlighting and quote citation are untouched.
Beyond Markdown
Because posts no longer have to be expressible in Markdown, Scribe adds what Markdown could not represent:
- Tables. s9e's Litedown has no table syntax at all, so on a Markdown forum a table renders as a paragraph full of pipes.
- Text colour, underline and highlight.
Build your own toolbar
Every feature is a chip you drag into the toolbar, in the order you want it. Nothing is forced on your members, and nothing you remove is still lurking behind a keyboard shortcut.
Keyboard users get the same control: Enter adds a feature, arrow keys move it, Delete removes it.
Performance
TipTap and ProseMirror are about 430KB. Bundling that into forum.js means every
visitor downloads, parses and executes it on every page view — including guests
who cannot post at all. That is what made earlier TipTap editors feel heavy.
Scribe loads the editor in a separate chunk, on first use:
| Asset | Size | When it loads |
|---|---|---|
forum.js |
10 KiB | every page |
| the editor chunk | 431 KiB | first time a composer opens |
The toolbar also re-renders only when the set of active buttons actually changes, rather than on every keystroke.
Works with what you already run
- Mentions — unchanged.
@nameautocomplete and rendering are untouched. - Quoting a post —
flarum/mentionsinserts Markdown through the editor interface; Scribe translates it into a real blockquote. - FoF Upload — inserts
; Scribe turns it into a real image node. - flarum/bbcode — keep it or don't; Scribe defers to it where they overlap.
Installation
composer require ernestdefoe/scribe php flarum cache:clear
Then disable flarum/markdown (and remove fof/rich-text, which Scribe conflicts
with). Your existing posts will render exactly as before.
Requirements
- Flarum 2.0
- PHP 8.2+
Licence
MIT.

