The Post Editor
This is your reference for the editor itself: the modes, the toolbar, the play-by-post-specific blocks, drafts, and attachments. If you're after the bigger picture of posting in general (Quick Reply versus Full Editor, IC and OOC, the character selectors), Forums, Topics, and Posting is your orientation. This guide is all about what you can actually put inside a post.
Editor modes
Myth-Weavers ships with three editor modes, and you can switch between them on any given post:
- Rich Text (default, recommended) — A WYSIWYG editor with toolbar buttons for formatting, images, tables, and the PBP-specific blocks (OOC, spoilers, whispers, fieldsets). Best for most writing.
- Markdown — Standard Markdown syntax with a live preview pane. Comfortable if you've been writing for GitHub, Reddit, or Discord for years.
- HTML — Raw HTML in a textarea, for when you want full control over the markup. Sanitized on submit.
Legacy BBCode posts carried over from the old site still render perfectly, and you're free to keep writing in BBCode if that's where you feel at home. It just isn't one of the three default mode toggles. See The Post Editor for the full BBCode reference.
In Account Settings > Editor each mode has three settings:
- Default: the mode every new post, reply, and edit opens in. Exactly one mode holds this spot at a time.
- Available: kept in the editor's mode switcher so you can flip to it on a per-post basis, even though it isn't your default.
- Hidden: taken out of the mode switcher altogether. Set the modes you never touch (Markdown and BBCode, say) to Hidden and your toolbar gets that much tidier.
You can't hide your default mode, and hiding a mode never touches your existing posts. Editing a post always offers up whatever mode it was written in, so you can still open and tweak an old BBCode or Markdown post even when that mode is hidden from the switcher.
Quick Reply
Also tucked into Account Settings > Editor is "Open the Quick Reply box automatically when a topic loads." It's on by default, so the Quick Reply box at the bottom of a topic sits open and ready for you. Turn it off if you'd rather it start collapsed, in which case it expands when you click its header or when you quote a post. That keeps long topics from pushing the reply box way down the page. Either way, expanding a collapsed box drops your cursor straight into the editor, ready to write.
Mode-switch warning
Switching a post between modes can shift some of its formatting. The clearest example is going from HTML to Rich Text, which drops any markup the visual editor can't represent. So by default, switching pops up a confirmation that spells out what might be affected. If you switch modes constantly and don't need the nudge, tick "Don't show this again" in that confirmation, or flip "Don't warn me before switching editor modes" over in Account Settings > Editor. Switches will then happen instantly, and you can bring the warning back anytime from that same setting.
Rich Text (TipTap)
The Rich Text editor's toolbar gives you one-click access to:
Standard text formatting
- Bold, italic, underline, strikethrough
- Headings (H1 through H6)
- Bullet and numbered lists
- Links (insert, edit, remove)
- Block quotes
- Code blocks (syntax-highlighted)
- Horizontal rules
- Text alignment (left, center, right)
PBP-specific blocks
- OOC blocks — inline out-of-character content within an IC post (see Forums and Posting)
- Spoilers — click-to-reveal regions
- Whispers and Private blocks — Limited-read content (see Forums and Posting)
- Fieldsets — labeled bordered sections for stat blocks, letters, journal entries, and anything you want visually set apart
- Language tags — text spoken in a specific in-game language; comprehension is sheet-driven (covered below)
- Page links —
[[Page Title]]syntax linking directly to wiki pages - Sheet field placeholders — live values from a character sheet (covered below)
- Style guide — quick reference for the site formatting conventions
Markdown
Standard Markdown with a live preview pane. It's the same syntax you've already been writing for GitHub or Reddit, with the PBP blocks reachable through fence syntax. Toggle between Write, Split (source and rendered preview stacked), and Preview (rendered only) with the buttons above the editor.
HTML
Raw HTML in a textarea, sanitized on submit. Use for fine control over markup that the other modes don't expose cleanly. Anything risky (scripts, event handlers, certain attributes) is stripped server-side.
For the exact, complete list of what's kept versus stripped, every tag, attribute, inline-style property (with its accepted values), CSS class, and URL scheme, see the Allowed Content Reference, also linked from the editor's HTML Reference panel.
Editing posts brought over from the old site
Posts imported from the old forum are stored as HTML, so when you edit one it may open in HTML source mode even if you originally wrote it in a visual editor. You don't have to work in HTML:
- Most imported posts open straight in Rich Text. When the editor can represent the post's formatting cleanly, it opens it in the visual editor automatically — nothing to do.
- For the rest, you'll see a prompt — "Open this post in the visual editor?" — listing any formatting that might need a small touch-up. Choose Open in visual editor to switch, or Keep as HTML to stay in source mode. Either way, the choice sticks: once you've decided (or saved the post), you won't be asked again.
BBCode (legacy)
Posts written on the old site in BBCode render correctly. You can still write BBCode if you prefer. The editor still recognizes the legacy [b]bold[/b] and similar tags! New posts default to the modern-mode syntax, but long-time BBCode authors are still able to use what they're used to.
Under the hood: full mwbbcode tag reference
The editor recognizes the following BBCode tags (collectively, the "mwbbcode" dialect).
Text formatting
| Tag | Effect |
|---|---|
[b]…[/b] |
bold |
[i]…[/i] |
italic |
[u]…[/u] |
underline |
[strike]…[/strike] |
strikethrough |
[sub]…[/sub] |
subscript |
[sup]…[/sup] |
superscript |
[color=hex|name]…[/color] |
color (e.g. [color=#a00] or [color=red]) |
[size=1-7]…[/size] |
font size |
[font=family]…[/font] |
font family |
[highlight]…[/highlight] |
highlighted text |
Links and media
| Tag | Effect |
|---|---|
[url=https://…]label[/url] |
link with label |
[img]url[/img] |
inline image |
[mention]username[/mention] |
@mention |
[page]Page Title[/page] |
link to a wiki Page |
Lists
| Tag | Effect |
|---|---|
[list]…[/list] |
bulleted list (use [*] for items) |
[list=1]…[/list] |
numbered list |
[list=a]…[/list] |
lettered list |
[*] |
list item |
Block content
| Tag | Effect |
|---|---|
[quote=author]…[/quote] |
block quote with attribution |
[code]…[/code] |
code block |
[spoiler=label]…[/spoiler] |
click-to-reveal spoiler |
[fieldset=title]…[/fieldset] |
labeled bordered section |
[ooc=label]…[/ooc] |
out-of-character inline content |
[private=recipients]…[/private] |
private block (allow-list audience) |
[h1]…[/h1] through [h6]…[/h6] |
headings |
[hr] |
horizontal rule |
Layout
| Tag | Effect |
|---|---|
[left]…[/left] |
left-align |
[center]…[/center] |
center-align |
[right]…[/right] |
right-align |
[indent]…[/indent] |
indent block |
[floatleft]…[/floatleft] |
float content left |
[floatright]…[/floatright] |
float content right |
Special
| Tag | Effect |
|---|---|
[noparse]…[/noparse] |
render tags inside literally (escape hatch) |
[table][r=col,row]…[/r][/table] |
tabular layout |
[inlinedice]…[/inlinedice] |
inline dice reference |
[sheetfield]…[/sheetfield] |
character sheet field placeholder |
If a tag isn't in this list, it's not recognized — write it inside [noparse]…[/noparse] if you want the literal text to render.
Mentions
Type @ followed by a username and a dropdown of matching members appears. Pick one, and that person gets pinged the moment your post lands, whether they're online or offline.
A handful of group mentions work too:
@gm— every GM and assistant GM in the game@players— every player in the game (excludes readers and applicants)@here— everyone who's looked at this topic recently@everyone— every member of the topic. Use this one sparingly, it can be overwhelming.
Each recipient's notification settings decide how they get pinged (in-app, push, email). Group mentions don't get past mutes: someone who's muted the topic still won't get the email, no matter how you tried to summon them.
Mentions outside of a game (in community forums, blogs, and DMs) work the same way for individual users. Group mentions, though, are game-scoped, so they simply won't resolve out there.
Quoting
Hit Quote on any post and its content flows right into your reply, already formatted with the author, a link back to the original, and the full text. From there it's just normal editor content, yours to shape however the moment calls for: trim it down to the single line you're really responding to, keep the whole thing, whatever serves your reply best.
Quick Reply quotes stay tight and simple: a single quote, no nesting, dropped neatly at the bottom of your draft. Perfect for fast back-and-forth. Full Editor quotes give you nested quoting for when you're weaving together a longer thread of replies, along with the full toolbar for anything else the post needs.
Light rules of the road:
- Try not to quote a whole post just to add a "+1." Your fellow players will skim right past it, and you'll end up burying whatever you actually wanted to say.
- Quoting an OOC block carries the OOC flag, so the meta-tone survives.
- Quoting a whisper or private block always respects the original audience. If you couldn't see it, you can't quote it, and if you could, the quoted excerpt stays visible only to that same audience.
Where the Quote button lives
Two places:
- On any post's hover-action bar, alongside Reply and Edit. This is the fastest path to quote.
- In the Full Editor's toolbar, where you can paste a post URL or pick from the topic's existing posts. Useful when you want to quote a post that's far up in the topic without scrolling back to find it.
Language tags
The Language dropdown in the editor lets you wrap text as spoken in a specific in-game language. The setting is sheet-driven: a reader can understand the wrapped text only if their currently-posting-as character has that language in their sheet's languages field.
When you post text in a language, the editor offers the languages your own character knows (drawn from your character sheet's languages field). Non-speakers don't see plaintext. They see obscured text indicating "something's being said, but not in a tongue you know."
A few practical notes:
- Languages live on the character sheet, not on the user. Different characters in the same game can know different languages; the editor picks up whichever character you're posting as.
- GMs see everything. GM-level access bypasses the comprehension check, regardless of which character (if any) the GM is posting as.
- Reading is computed at render time, not at post time. If a player's character later learns a new language, retroactive posts in that language become readable. ( It must be the same character; same player. Not the case if the player swaps to a different character mid-campaign, or someone picks up a character.)
- The list of known-by-someone languages is union-derived for the language-picker dropdown. You'll see every language any of the game's characters speaks, even if your character can't speak it. Picking a language your character doesn't speak is allowed (e.g., for narration of overheard NPC speech) but unusual.
[GM]
Languages are derived from attached character sheets automatically, but the sheet template needs a languages field that the parser recognizes. Most major-system templates have this configured. If a player's expected language list is empty in the picker, check their sheet's data extraction.
Adding languages no character knows yet. Open the game's Characters tab and find the Languages panel (GM-only). It summarizes every language known across the attached character sheets — with a per-character breakdown — and lets you curate an Additional GM languages list. Languages you add there appear in your language picker even when no player character speaks them yet, which is handy for secret tongues, NPC languages, or cultures you haven't introduced. Quick-add buttons let you promote a sheet-derived language into the curated list in one click.
These curated languages only widen the GM's writing options — they don't change who can read a tagged passage. Comprehension is still decided per-reader by their own sheet, so a passage you write in a GM-added language stays obscured to players until their character actually learns it.
Sheet-field placeholders
If you've linked a character sheet to the game, the editor's Sheet field button opens a picker that lets you drop live values from the sheet straight into your post. This includes current HP, AC, spell slots, or the dagger you remembered to pick up two sessions ago. Browse or search; each row shows the current value so you know what you're inserting.
When you submit, every chip bakes in its value at that moment. Later edits to the sheet won't reach back and rewrite your old narration, so your retelling of that bloody fight in the goblin warren stays true to the HP total you actually had at the time. If you want to pull fresh numbers mid-edit, the Refresh button walks the whole post and updates every chip in a single pass.
You can also set a value from right inside the picker. Type your new HP after taking a hit, press Enter, and the chip uses the updated number. The sheet write itself happens just once, on submit, so if you bail on the post the sheet stays exactly as it was.
[GM]
As a GM or assistant GM, you can edit any linked sheet's fields from the picker, not only your own characters'. It's the same interface throughout, and it always respects whatever sheet-edit permissions you actually hold. This is wonderful for the "the magic item attaches to the rogue mid-narration" moment: open the picker, set the new slot, insert the chip, and post.
The Post Editor guide covers the picker's mechanics in detail. This includes keyboard shortcuts, field search, and value-set syntax.
Field picker controls
Open the picker from the editor's Sheet field button. Once it's open:
- Type to filter fields by name; the list narrows as you type.
- Rows you name yourself — on templates with freeform, self-labeled rows, search by the name you typed rather than the underlying field key. This covers the Generic sheet's attributes (typing
Extraordinary Virtuefinds the attribute you labeled that way instead of making you remember it's stored asattr_1_value), a resource track you've renamed, an equipment item (search the item's name to find its quantity, weight, or notes), and the character note blocks (Description, Personality, Character Traits, … — findable by those names, or by whatever you renamed them to). - Arrow keys navigate the suggestion list; Enter inserts the selected field.
- Each row shows the current value of the field, which is what will be shown in the chip when you submit your post.
- The value editor at the bottom lets you type a new value before inserting. Submitting the post commits both the chip and the sheet write in one transaction; cancelling leaves the sheet untouched.
- The Refresh action checks every chip in the post and pulls current values in a single pass. This is useful when a sheet's been updated since you started writing.
Images and attachments
The editor supports inline images and file attachments:
- Image upload — click the image toolbar button, or drag-and-drop into the editor. Files upload to S3 and embed inline.
- Image URL — paste an external image URL to embed without uploading.
- File attachments — attach files (PDFs, character sheet exports, maps, anything) to the post. Attachments appear below the post body with download links.
Upload limits depend on supporter status — see Account Settings for tier details. Free accounts have generous limits for normal use; supporters get more headroom for image-heavy posts and large attachments.
Image bubble menu
Click any embedded image and a bubble menu appears with float (left, right, center), resize handles, alt-text editor, and link-wrap toggle. Alt text isn't optional cosmetics, it's how a player using a screen reader experiences your post.
Under the hood: where do uploads live?
Images and attachments upload to S3 storage at static.myth-weavers.com. The post stores a reference to the upload, not the file itself, so re-renders are cheap. Deleting a post doesn't immediately delete the underlying file. A cleanup process handles orphaned uploads on a schedule.
Tables
Insert a table from the toolbar (Rich Text mode). Click into any cell to surface the table bubble menu:
- Add or remove rows and columns
- Toggle zebra striping (alternating row backgrounds)
- Resize columns by dragging the column borders
- Merge or split cells
Tables are useful for initiative trackers, inventory lists, character sheet excerpts, comparison stats, or anything that wants structured rows.
Drafts
The editor auto-saves your drafts to your browser's local storage. Close the tab by accident, navigate away mid-post, lose power to the whole house: when you come back to the editor, your draft is sitting right there waiting. A "Draft saved" indicator confirms each save, which usually happens every few seconds as you type.
When you return, restoring the draft is offered to you automatically, and you can always discard it instead if you'd rather start with a clean page.
Under the hood: drafts are local-only
Drafts live in your browser's localStorage, not on the server, which has a few consequences worth knowing:
- They're private to the device and browser you're using.
- Clearing browser data wipes them.
- You can't pick up a draft on your phone that you started on your laptop.
Server-side draft sync, so your drafts can follow you from device to device, is on the post-cutover wishlist but not yet implemented.
Style guide
The Style Guide toolbar button opens a quick-reference modal covering the common formatting patterns: IC post conventions, stat block layouts, letter prop styles, and the rest. It's the thing to reach for when you can't quite recall the exact syntax.
Next steps
- Dice Rolling — the dice system in detail.
- Forums and Posting — the posting orientation: IC/OOC, character selectors, deadlines, the game-page tabs.
- Characters, Resources, and Maps — linking sheets so the sheet-field picker has something to read from.