Posts & Markdown
Posts and replies in Nexus are written in Markdown with GitHub Flavored Markdown (GFM) extensions enabled. The composer provides a toolbar, slash commands, live preview, @mention autocomplete, and image upload.
Post types
Section titled “Post types”Every post has a type, selected when composing:
| Type | Behaviour |
|---|---|
| Discussion | Standard post. |
| Announcement | Identical to discussion — visually distinguished as an announcement. |
| Question | Marks the post as a question. The author or a moderator can mark a reply as the accepted answer, which pins it below the question body. Requires the Question posts setting to be enabled in Admin → Permissions. |
Limits
Section titled “Limits”| Field | Limit |
|---|---|
| Post title | 3–255 characters |
| Post body | 1–100,000 characters |
| Reply body | 1–50,000 characters |
Markdown reference
Section titled “Markdown reference”Nexus uses marked with breaks: true and gfm: true. Single newlines produce line breaks. All output is sanitized with DOMPurify before rendering.
Text formatting
Section titled “Text formatting”**bold***italic*~~strikethrough~~`inline code`Headings
Section titled “Headings”# Heading 1## Heading 2- Unordered item- Another item
1. Ordered item2. Another itemLinks and images
Section titled “Links and images”[link text](https://example.com)Code blocks
Section titled “Code blocks”Fenced code blocks with optional language for syntax highlighting:
```elixirdef hello, do: "world"```Blockquotes
Section titled “Blockquotes”> This is a blockquote.Tables (GFM)
Section titled “Tables (GFM)”| Column 1 | Column 2 ||---|---|| Cell | Cell |Horizontal rule
Section titled “Horizontal rule”---Spoilers
Section titled “Spoilers”Wrap text in || to create a spoiler that must be clicked to reveal:
||hidden text||Image grid
Section titled “Image grid”Wrap image markdown lines in [grid]...[/grid] tags to display them as a responsive mosaic gallery rather than stacked individually:
[grid][/grid]Images inside a grid are rendered at their natural aspect ratio with no cropping. Clicking any image opens it in the lightbox, scoped only to the images in that grid. The Image grid button in the composer toolbar inserts an empty [grid]...[/grid] block with the cursor positioned inside it.
Media embeds
Section titled “Media embeds”Bare URLs on their own line are automatically detected and embedded:
| URL type | Embed |
|---|---|
YouTube (youtube.com/watch, youtu.be, youtube.com/shorts) | Lazy-loaded video player |
Vimeo (vimeo.com/…) | Iframe player |
X / Twitter (twitter.com/…/status/…, x.com/…/status/…) | Tweet embed |
Spotify (open.spotify.com/track/…, /album/…, /playlist/…, /episode/…) | Spotify player |
Direct video file (.mp4, .webm, .ogg, .mov) | <video> player |
Direct audio file (.mp3, .ogg, .wav, .flac, .m4a) | <audio> player |
| Other URLs | Link preview card (title, description, image) |
@mentions
Section titled “@mentions”Type @ followed by a username to trigger an autocomplete dropdown. Select a user with the arrow keys and press Enter or Tab to insert the mention. Mentions render as links to the user’s profile.
Composer toolbar
Section titled “Composer toolbar”The toolbar wraps the text area and provides one-click formatting:
| Button | Action |
|---|---|
| B | Bold (**text**) |
| I | Italic (*text*) |
Strikethrough (~~text~~) | |
| H1 | Heading 1 (# ) |
| H2 | Heading 2 (## ) |
</> | Inline code (`text`) |
≡ | Code block (```) |
| 🔗 | Link ([text](url)) |
| ❝ | Blockquote (> ) |
| — | Horizontal divider (---) |
| 👁 | Spoiler (||text||) |
| 😊 | Emoji picker |
| 🖼 | Image upload |
| 👁 (eye icon) | Live preview |
Toolbar buttons can be reordered and hidden per context (posts vs. replies) from Admin → Layout.
Image upload
Section titled “Image upload”Images can be inserted three ways:
- Toolbar button — click the image icon to open a file picker
- Paste — paste an image directly from the clipboard
- Drag and drop — drag an image file into the composer
Accepted formats: JPEG, PNG, GIF, WebP, SVG. The image is uploaded immediately and inserted as a Markdown image link pointing to the WebP-converted version, with the original as the lightbox target.
Slash commands
Section titled “Slash commands”Type / at the start of a new line to open the slash command menu:
| Command | Inserts |
|---|---|
| Image | Opens the image file picker |
| Code block | A fenced code block template |
| Blockquote | A blockquote prefix (> ) |
| Divider | A horizontal rule (---) |
Navigate with arrow keys, select with Enter, dismiss with Escape.
Live preview
Section titled “Live preview”Click the eye icon at the far right of the toolbar to open a preview modal showing the rendered output of the current Markdown.
Pinning and locking
Section titled “Pinning and locking”Admins and moderators can pin or lock posts. Pinned posts float to the top of the feed. A post can be pinned globally (visible at the top of all feeds) or pinned to its space only.
Locked posts cannot receive new replies. The post body remains readable.
Pending approval
Section titled “Pending approval”When New users can post immediately is disabled in Admin → Permissions, posts and replies from new users are placed in a pending approval queue. They are not visible to other members until a moderator approves them from Admin → Moderation.