Boat Rudder
Home | Blog | Docs | About
Eng Light

The fourteen block types

Every content block Boat Rudder can render, shown live and explained. For each one: what it is for, what goes in its text field, and what goes in its extra field. This page is itself a normal entry, so what you see below is exactly what the editor produces.




1. title

A heading. The text is the heading itself; the extra field is the level, 1 to 6. Level 1 is the page title at the top of this page; here are the rest.

A level 3 heading

A level 4 heading

2. paragraph

Body text. The extra field selects a style variant: leave it empty for normal text, or use lead for the opening paragraph and note for secondary text. All three appear below, in that order.

This is an ordinary paragraph with no style variant. It is the block you will reach for most often: plain running text, rendered as a paragraph on every epoch, from HTML5 down to a WAP deck.

This is the lead variant: larger and lighter, meant for the one paragraph that opens an article and tells the reader whether to keep going.

And this is the note variant: smaller and dimmer, for asides, clarifications and captions that should not compete with the body text.

3. separator

A horizontal rule between sections. It carries no text and no extra field. On text-only browsers and WAP it degrades to a bare rule or a line break. One follows this paragraph.




4. list

A bulleted or numbered list. Put one item per line in the text field. The extra field is ol for a numbered list; anything else, including empty, gives bullets.

  • An unordered list, one item per line
  • Each line becomes one bullet
  • Empty lines are skipped
  1. An ordered list: set the extra field to ol
  2. The numbers are the browser’s, not yours
  3. So reordering the lines is enough

5. link

A standalone link on its own line. The text is the label the reader sees; the extra field is the destination URL.

Back to the documentation index
Boat Rudder on GitHub

6. table

A table. One row per line, cells separated by a vertical bar. Set the extra field to header to turn the first row into a header row. On early browsers it is redrawn as ASCII art, and on WAP each row becomes a label: value list, because a real table cannot be read on a phone screen of that era.

Epoch Target browser Markup
-1 WAP 1.x phones WML
0 Lynx, w3m Text-only HTML
1 Mosaic, Netscape 1-3 HTML 3.2, no CSS
2 Netscape 4, IE 5-10 HTML 4 + basic CSS
3 Modern browsers HTML5 + CSS3

7. code-text

A preformatted code block. The text is the code, line breaks preserved; the extra field is an optional caption shown above it.

Language: Plain text

1 | // Detect the epoch from the request
2 | int epoch = detect_epoch(user_agent, accept_header);
3 | 
4 | // Every template is chosen by that number
5 | char *tpl = load_template("elements/paragraph/paragraph_epoch%d.html", epoch);

8. image

A single picture. The text is the path to the file; the extra field packs three values separated by vertical bars: caption, width as a percentage (100, 50 or 30) and alignment (left, center or right). The path below is deliberately empty - fill it in from the media library. On text-only browsers and WAP only the caption is shown, because no picture can be drawn there.

Caption of the example image
Caption of the example image

9. image-paragraph

A picture floated to one side so the paragraphs that follow it wrap around. The text is the image path; the extra field is left or right. The path below is deliberately empty. Note that this block carries no text of its own: it floats the image, and the ordinary paragraph blocks after it do the talking.

This paragraph sits next to the floated image above. Once you set a path on that block, this text will wrap around the picture instead of starting below it. Add as many paragraphs as you need; the float ends when the text runs out.

10. gallery

A grid of photographs. It carries no text of its own: the extra field is the id of a gallery from the media library, and the pictures come from there. It is deliberately left unset below - pick a gallery in the editor. On epoch 3 it opens a lightbox, on epochs 1 and 2 a paginated viewer, and on text-only browsers and WAP it collapses to a single link to the gallery page.

11. youtube-embed

An embedded video. The extra field is the YouTube URL; the text is an optional label used on older browsers. It is deliberately left empty below - paste a URL to see it. Modern browsers get the player; on retro epochs it becomes a scannable QR code, so a reader on a 1997 machine can open the video on a phone.

12. social-networks

A link to a social profile, with its icon. The text is the label; the extra field packs the icon name and the URL, separated by a vertical bar. Available icons: facebook, github, instagram, linkedin, tiktok, twitch, twitter and youtube. The icon is an SVG on modern browsers and a GIF on retro ones.

Boat Rudder on GitHub Boat Rudder on GitHub

13. byline

A signature line closing an article. The text is the name; the extra field is the date. Use it when the entry hides its header author but the text still needs signing.

Boat Rudder Admin 2026-08-27

14. generic

An escape hatch for raw HTML, for the rare case no other block covers. It is passed through untouched on epochs 0 to 3 and omitted entirely on WAP, where raw markup cannot go into a deck. Nothing validates what you type here, so use it sparingly and never for anything the other thirteen blocks can already do.

Raw HTML. This box is a generic block: the markup went straight through, inline style and all.





Boat Rudder