HowToUseThisWiki

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.