EngineModules
A reference for the engine's own module files — engine/modules/*.js — one per notation family, loaded alphabetically at startup. HowToUseThisWiki teaches the notations themselves; this page is the map of which file each one lives in, for whoever's next inside the code (often that's future-Claude). #ai
Any module can be switched off without deleting it: add its file name (no .js) to "disabledModules" in config.json, e.g. "disabledModules": ["linkeveryword"], and restart the engine. Nothing on disk changes — only what gets rendered.
| module | notation | what it does |
|---|---|---|
age.js |
[[age]], [[season]], [[days-since:YYYY-MM-DD]] |
time as a material — a page's own age in living words, the current season, a day-count since a date |
background.js |
[[background:Name|repeat #color]] |
a page dresses its own <body> — an uploaded image or none for just a color |
calendar.js |
[[calendar]], [[calendar|N]], [[calendar:YYYY-MM|N]] |
a month of doors, inline — written days open their page, blank days open the pen |
embed.js |
[[youtube:]], [[vimeo:]], [[tube:]], [[sound:]], [[iframe:]] |
moving pictures, audio, and windows onto other sites |
footnote.js |
((aside)), [[footnotes]] |
numbered, collected asides — the old {{double-curly}} footnotes, easier to type |
foreground.js |
[[foreground:Name|repeat transparent]] |
a second skin over the background but under the words — dresses <main>, not <body> |
image.js |
[[image:Name]], [[image/class:Name]], [[image external:]] |
a full-size image from the wiki's files, or from elsewhere |
include.js |
[[include:Name]], [[include:File.pdf]], [[include:https://…]] |
transclusion — another page (or a PDF, or an outside page) read aloud in place, one level deep |
journal.js |
[[journal]], [[journal:25]], [[journal:2005]], [[journal:tag:x]] |
dated pages (and dated pictures) rendered in full, newest first, or one year read whole |
linkeveryword.js |
(no notation — automatic) | Oddmuse's LinkEveryWord habit: if a page's title turns up in plain prose, the first mention links itself, no [[brackets]] or CamelCase needed. Conservative on purpose — see the file's own header comment for the exact rules (first-mention-only, 4-char minimum, never self-links, leaves already-CamelCase-shaped titles to the core engine). The one most worth turning off in disabledModules if it ever gets in the way |
list.js |
[[list:Name]], <list "Name">, <search "word"> |
every page whose first line declares [[Name]] as its hall, or a text search |
model.js |
[[model:src|ios-src|alt|style]] |
a rotatable, AR-ready 3D piece. Needs the file's extension (Name.glb, not Name) — it doesn't guess between .glb/.usdz |
oddmuse.js |
<source>, <comment>, [new:url], [[download:Name]], [[flash:]] |
odds and ends carried over from the old wiki that still deserve to work |
onthisday.js |
[[onthisday]], [[onthisday:MM-DD]] |
every page begun on this day of the year, across the archive |
row.js |
:::row … :::, :: class |
things side by side — the successor to the old long tables |
style.js |
[[style:Name]] |
a page wears a stylesheet — Name is a CSS page or an uploaded .css file; write the look once, many pages wear it |
tag.js |
[[tag:Name]] |
tags a page, linking to everything else carrying the same tag |
thumb.js |
[[thumb:Name|300px]] |
a sized-down image; clicking opens the original in the lightbox |
toc.js |
[[toc]] (mostly automatic) |
a table of contents for any page with 3+ headings — pinned wherever [[toc]] sits, or automatically just above the first heading |
Two more files aren't modules at all, just the engine reading its own house: render.js runs the pipeline above (block passes, then inline notations, then [[wikilinks]]/CamelCase, then markdown itself), and server.js is everything else — routing, auth, uploads, the git-backed history, /conflicts, /gallery, /search, and so on.