HowToUseThisWiki
☞ redirected from TextFormattingRules
A field guide to this wiki's notations — what the old wiki called TextFormattingRules. Written by Fable, 2026-07-12, expanded 2026-07-14. Everything below is live: correct it, prune it, add to it.
Contents
Writing
Pages are markdown — paragraphs, **bold**, *italic*, # headings, lists, quotes, code fences. Double-click any quiet spot on a page to edit it in place; ⌘S saves, esc leaves, the title is editable too. Every save is kept forever — history at the foot of any page shows past versions and can restore them.
Starting a new page: type its name into search (top right) and press enter. Already exists? It's the very first result. Doesn't exist yet? A dashed + name box offers to start writing it right there — the same one-click habit the old wiki's little GoTo field gave. A dashed WikiLink or CamelCase word does the same thing — see Links below.
At the foot of every page: edit · history · backlinks · raw. Backlinks answers "what points here?" — it is also what makes rename safe: rename a page and every link to it is rewritten.
To delete a page, the old gesture: edit it, replace its entire text with the single word DeletedPage, save. The page vanishes — but git forgets nothing, so its history remains and any version can be restored. Deletion here is a door closed, not a room burned. (Deleting an image is different and final — see Images below.)
Headings & the table of contents
Ordinary markdown headings — # one hash down to ###### six hashes — make section titles, biggest to smallest:
# Big heading ## Medium heading ### Smaller still
The moment a page has three or more headings, a Contents box appears automatically, right before the first heading — a jump-link list nested to match the headings' depth, no notation needed. Fewer than three and nothing appears; a short page doesn't need a map.
Every heading also gets its own address (a slug of its own words) so anything can link straight to it with an ordinary #anchor — a heading titled Old notations that still work becomes #old-notations-that-still-work, and that's exactly where the Contents box's link for it points.
[[toc]]— pins the Contents box at that exact spot instead of the automatic place just before the first heading. Handy for putting it in an intro paragraph, a sidebar, or wherever reads best.
Links
[[PageName]]— a link to another page. Red and dashed means the page doesn't exist yet; click to write it.[[PageName|any words]]— the same door, different sign.[FiftyBooks the fifty books]— a lighter door: any page name (not onlyCamelCase), followed by a space and the words to show instead — the old wiki'sBracketWikigesture, brought back. One bracket instead of two, otherwise just like the line above.CamelCase— two-or-more capitalized words run together still link to themselves with no brackets at all, the oldest reflex here. A leading!(!CamelCase) escapes it back into a plain word.- Any other page's title, in plain prose, links itself too — no brackets, no CamelCase needed. The first time a page mentions "Aegis" (say), it becomes a link; every later mention of Aegis on that same page stays plain text, so a paragraph that repeats a name doesn't turn into a wall of blue. It shows with a dotted underline instead of a solid one, so it reads as found rather than placed. This is a module (
linkeveryword) — mildly opinionated, easy to regret — turn it off entirely by adding"disabledModules": ["linkeveryword"]toconfig.jsonand restarting; nothing else about any page changes when it's gone. See EngineModules for the rest of what's under the hood. text— ordinary markdown links for the outside world.[new:https://elsewhere.com label]— an outside link that opens in a new window.- A page whose first line is
#REDIRECT [[PageName]]forwards visitors there — a change of address card. See cp, which forwards to ConfigPage.
Footnotes
((an aside))— a footnote: double parentheses around the text. It becomes a small numbered marker where you wrote it1, and the text itself is collected into a list at the foot of the page — hover the marker to read it without leaving your place, or click the number to jump down. Click the ↩ beside any entry to jump back.[[footnotes]]— where the collected list appears, if you want to choose the spot yourself. Leave it out and the list is added automatically after the content, so a footnote is never orphaned.!((not a footnote))— a leading!escapes it, if you ever need two real parentheses in a row to just be parentheses.- The old wiki's spelling was
{{double curly braces}}— harder to reach on a lot of keyboards. Every old footnote in this wiki has already been converted to((...)); the curly spelling isn't read anymore.
Images
Upload at /upload, drop a picture straight into the editor, or paste a screenshot — any of the three lands the file and leaves [[thumb:Name]] behind. Give it a one-sentence description (its alt text — what the gallery, search, the viewer, and screen readers say when they mean it); a jpg or png over 2400px on the long edge is quietly resized before it ever touches disk, gifs and svgs are left alone.
Recognized image types: .jpg/.jpeg, .png, .gif, .svg, .webp, .avif. Any of these on a line by itself, as a bare https://… link, turns straight into the picture — no notation needed, the oldest Oddmuse reflex of all.
Forgotten what a picture is called? Open it — click it anywhere it appears — and the viewer's caption always says its wiki name, right below the description: name: Aloysius, and that name is now a link straight to the picture's own page in the wiki.
Naming it something other than the file: on /upload, a linked as field sits above the description — leave it blank and the file's own name (minus extension) is used, same as always; fill it in and the wiki answers to that instead. Upload IMG_4021.jpg as Aloysius and it saves as Aloysius.jpg, findable forever after as [[image:Aloysius]].
AI description (optional): if this wiki has been given its own Anthropic key (npm run claude-key in the wiki folder, once — writes a small gitignored file; the key never reaches the browser), an AI description button appears on /upload next to the ordinary upload button. Click it and Claude looks at the picture and writes the alt text. Always editable afterward, never required — no key set, no button shown, nothing else about uploading changes.
[[thumb:Name|300px]]— a sized-down image. Sizes like300px,50%, or a bare number all work.[[image:Name]]— the image at full size.[[image/someclass:Name]]— full size, wearing a CSS class.[[image external:url|alt|link]]— an image that lives elsewhere.
A name with nothing behind it yet — [[image:Aloysius]] or [[thumb:Aloysius]] for a picture not uploaded yet — shows red and dashed like a missing page. Click it and it opens /upload with that name already filled in, waiting for a file.
Clicking any image opens the viewer: large, with its description as caption, and arrows (or arrow keys, or a swipe) to walk through every image on the page. Esc closes. When logged in, the viewer also offers edit caption — a small page of its own for rewriting the description or its tags, and, at the bottom behind a confirm, delete this picture.
Deleting an image is not like deleting a page. A deleted page leaves a ghost and history can always bring it back; a deleted image is simply gone from the wiki's own view of itself the moment you confirm — there is no undo screen. (The bytes still sit in old git commits if it ever truly mattered, but nothing in the wiki itself offers them back.) A page that used to show the picture just shows a gap where it was.
Sound, film, sculpture
[[model:Name.glb]]— a 3D piece, rotatable, AR-ready on a phone. Recognized model types:.glb,.gltf,.usdz. Unlike[[thumb:]]/[[image:]], this one wants the file's extension included —[[model:Name.glb]], not[[model:Name]]— since it doesn't guess between them.[[model:Name.glb|Name.usdz]]puts the AR/iOS file (.usdz) in the second slot so Quick Look picks it up on a phone. The upload confirmation page always shows the exact snippet to copy, extension and all.[[youtube:VIDEOID]]and[[vimeo:VIDEOID]]— moving pictures (addw hafter the id for a size). The oldest spelling,[[tube:ID]], still works. A video file uploaded to the wiki itself (.mp4) has no inline player of its own yet — offer it with[[download:Name]], or drop it straight into[[iframe:/files/Name.mp4]]for an inline one.[[download:Name]]— a file offered for keeping, whatever it is — a.mp4, a.zip, a.pdfsomeone should save rather than read in place.[[sound:file.mp3]]— an audio player. Any audio file the browser can play works the same way —.mp3is just the everyday case,.wav/.ogg/.m4aand the rest all drop in the same notation.[[iframe:src|w|h]]— a window onto another site.[[include:File.pdf]]— a.pdf, embedded to read in place, with a link underneath.[[include:PageName]]transcludes another page's whole body instead — same notation, different door, one level deep (an included page's own includes stay closed).
Tags
[[tag:Name]] anywhere on a page tags it. The notation renders as a link to everything else carrying that tag. All tags gather at /tags. Uploaded images carry tags too, in the file manifest — set them from the same edit caption screen described above.
[[list:Name]] — every page that declares [[Name]] as its hall (a link in its first line), listed alphabetically. This is the old cluster listing; the old spellings <list "Name"> and <search "word"> still work.
Categories & the nav bar
The old wiki's category habit still works, only lighter: a page's very first line, if it's a lone [[PageName]] with nothing else on the line, becomes that page's hall — a quiet label above the title instead of the first line of the prose. FiftyBooks and ElegantMedia are halls this way, among many others; no special setup, no field to fill in — just make the first line a link and save. Atlas is the hand-written map of every hall in the wiki, the place to look when a category's main page has slipped your mind.
The top bar itself is a page, the old wiki's way: edit NavBar — search for it, or go straight there — one link per line, [[Page]], [[Page|label]], or [label](/url) for the engine's own doors (index, recent, gallery…). Add a line for any hall you want one click away from everywhere; delete the whole page and the built-in bar returns.
A pulldown: a bare line ending in a colon, like categories:, opens a group — indent the link lines under it and they become that pulldown's menu instead of separate items in the bar:
categories: [[FiftyBooks|books]] [[ElegantMedia|media]]
Click the label to open it, click a link to go, click anywhere else to close it again — the browser does the work, no script required.
Time
[[age]]— how long the page has existed, in living words. This page is 13 days.[[season]]— the season right now: it is summer.[[days-since:1999-01-29]]— a count of days since a date: 10039 since meeting in hell.[[onthisday]]— pages from today's date in past years;[[onthisday:06-20]]for any month-day.[[journal]]— the ten newest dated pages and dated pictures, rendered in full, newest first.[[journal:25]]for more;[[journal:2005]]for one year, oldest first;[[journal:tag:wip]]for a diary of everything tagged wip (see the WIP page). The old<journal search tag:x>spelling still works.[[calendar]]— this month, inline, every day clickable: written days open their page, blank days open the pen.[[calendar|3]]for this month and the two before;[[calendar:2026-05|4]]for a particular month and the three before it. The Diary wears one.- /calendar — a year of months where every day is a door: the written ones open their page, the blank ones invite you to write the day.
Dressing a page
[[style:Name]]— the page wears a stylesheet. Name is another page whose body is CSS (plain, or in a```cssfence), or an uploaded .css file. Write a look once, and every page that declares it changes together.[[background:ImageName|repeat #ded9c5]]— the page dresses its own body. Also[[background:none|#000]]for just a color, orbackground external:for an image elsewhere. Params in any order: repeat/no-repeat, a #color, fixed/scroll, anything else becomes position.[[foreground:Name|repeat transparent]]— a second skin over the background but under the words.- The whole site can wear a stylesheet page: set
"stylesheet": "css"in config.json and every page wears the css page, like the old $StyleSheetPage. Point it at any page name.
Rows — things side by side
The successor to the old long tables (all the Book pages already speak it):
:::row booknav :: l [[Book18|18.]] :: r [[Book16|16.]] :::
One block is one row. Each :: begins a cell — everything until the next :: belongs to it: markdown, images, notations, all of it. The word after :::row or :: is a CSS class (l, r, c align left, right, center). Short rows fit on one line, cells split on :: :
:::row [[thumb:one|200]] :: [[thumb:two|200]] :::
For actual data, ordinary markdown pipe tables work too:
| year | book | |------|------| | 1993 | 17 |
Old notations that still work
<source> … </source>— pasted text shown as-is in a quiet scrolling well.<comment> … </comment>— an aside that stays in the text but never shows.
Keeping it yours — password, tokens, going online
None of this is required to write in the wiki; it only matters once the wiki is reachable by anyone other than you.
The password: from the wiki folder, npm run password sets one — it writes .auth.json (gitignored, no secret ever enters history). From then on reading stays public but editing, saving, uploading, and restoring want a login at /login (a 90-day cookie). Without .auth.json the wiki is wide open — fine on your own Mac, not once it's on the internet. To hide even the reading, set "private": true in config.json. Changing the password logs out every browser.
Publishing from another app: npm run api-token mints a token in .api-token.json (gitignored) that lets an app — Tincture, for instance — call the wiki's upload and save doors directly, with a bearer token instead of a login cookie. It never unlocks editing by hand, renaming, or a private wiki's reading. Run the command again any time to rotate it; the old token stops working the moment the new one is written.
Going online: the engine can live on a small server so the wiki is editable from anywhere and so Tincture (or anything else with the token above) can reach it. Double-click Go Online.command in the wiki's folder; Bring Home.command pulls it back to this Mac. deploy/README.md tells the whole story if the short version isn't enough.
Backups: every save is already a git commit, so the entire wiki's past is inside it — nothing extra to remember day to day. If this Mac itself were ever lost, whatever the wiki was last brought home to (or its copy on the small server, if it's currently online) is the backup.
Baking a static copy: npm run export (from the wiki folder, in Terminal) writes the whole wiki out as plain HTML files into _site/ — reading, search, the gallery, tags, and /random all still work with no server at all, for handing the wiki to any ordinary web host. It's a snapshot, not a mirror — it doesn't update itself, and nothing typed into it saves back here.
The doors
about · atlas · index · recent · gallery · tags · random in the nav, plus:
- /index — every page, alphabetically, with a jump-to-letter alphabet.
- /Atlas — the map of the whole wiki, drawn by hall and room.
- /gallery — every image, shuffled; reload for a new arrangement.
- /search — pages and images both.
- /calendar — the days as doors.
- /conflicts — names that currently answer to more than one thing (a page and a file sharing a name, say) — worth a look after a big upload session.
- /feed — RSS of recently changed pages, for the readers that never stopped listening.
The engine's own settings — title, home page, port, the site stylesheet, private, maxImageDimension, disabledModules — live in config.json next to the content — the one thing here that is not a page. EngineModules is the map of every module file behind the notations above.
- like this ↩