The Press
The press is the authoring overlay. Staff open it with /press and write; everything saved goes to the database and is pushed to every connected player immediately.
There is no restart, and no page list in a config file.
Chapters and entries
The almanac has two levels and that is deliberate — deep trees are hard to navigate with a controller.
| Chapter | A heading in the index. Holds entries |
| Entry | The writing. Belongs to exactly one chapter |
Both have a slug — lowercase letters, digits, dashes and underscores, 3 to 48 characters — which is the name you use in /almanac <entry>, in a signpost, and from a script. Titles can be up to 120 characters and can say anything.
Fields
| Field | |
|---|---|
| Slug | Permanent name. Changing it breaks links and signposts pointing at it |
| Title | What readers see in the index |
| Rank | Sort order, ascending — smallest first |
| Shown | In the index. Off still allows direct access |
| Unfurled | Chapters only. Open by default in the index |
| Access | Job gate. See Permissions |
Writing
A real editor: headings, bold, italic, lists, quotations, code, horizontal rules, links. Bodies are stored as HTML and sanitised in the overlay before they are drawn — anything dangerous is stripped when read, not when written, so a page written before a rule changed is still safe afterwards.
An entry body can be up to 512 KiB, which is far more than anyone writes.
Pictures
By URL, with a width and an alignment. Drag the corner to resize.
<img src="https://example.com/forge.png" width="520" data-align="center" />Images are not uploaded to your server
The page stores the address. If the host goes away, so does the picture — use somewhere you control.
YouTube works the same way. Embedding a whole website is possible but off by default (overlay.embeds), because most sites refuse to be framed and show nothing at all.
A directions button
A plain anchor the reader turns into a call:
<a class="gb-route" data-x="-306.4" data-y="806.2" data-z="118.9">Sheriff's office</a>Readers get a button that marks the place on their map and draws the way there. This is exactly what the press writes, so a page authored by a script and one authored by hand are the same thing.
Two people editing at once
Someone else wrote this leaf just nowWorking as intended. Two people had the same entry open, the other saved first, and yours was refused rather than overwriting theirs.
The editor has been reloaded with what is actually stored. Make your change again and save.
How it works
Every entry carries a revision that goes up by one on every write. A save that names a revision older than the stored one is refused. There is no merge — the last writer does not silently win.
Fonts and themes
Four typefaces ship and are served from the resource: Crimson Pro, IM Fell English, Rye and Special Elite. You can offer any font installed on the player's machine through overlay.fonts, but only those four are certain to draw.
Three bindings — leather, parchment, midnight. overlay.theme sets the default; a player's own choice is remembered on their machine and wins.
Search
Titles and bodies, scored, with the surrounding sentence quoted under each result and the query marked in it.
| Setting | Default | |
|---|---|---|
overlay.seekCooldown | 3 | Seconds between searches, per player |
overlay.seekMinimum | 3 | Shortest query accepted |
Hidden entries are not searchable. Restricted entries are not searchable by anyone who could not read them. The query matches the text, not the markup.
Striking
Striking a chapter strikes its entries with it
There is no separate confirmation for the entries that go with it, and no undo. Consider switching Shown off instead if you might want it back.
Who may write
Staff, three independent ways — an ACE, a framework admin group, or the console. Any one is enough, and it is re-checked on every verb, not just when the press opens.
Individual verbs can be delegated, so a moderator can write entries without being able to strike chapters. See Permissions.
Seeing a finished almanac
/almanac_demoFills it with a worked example — six chapters, fifteen entries and seven signposts across six towns. /almanac_demo clear takes it away.
The example lives in server/demo.lua, which stays readable on both editions specifically so you can copy how it is written.
Writing from a script
A script that ships its own documentation can put it in the book the first time it starts:
exports.rm_guidebook:ensure('entry', {
slug = 'blacksmith-basics',
chapter = 'blacksmithing',
title = 'Working the forge',
body = '<p>Heat, hammer, quench.</p>',
})ensure does nothing if the slug is taken — so a server owner who edited your page keeps their edits. See the Developer API.