fluffos/docs
dependabot[bot] 2024182d68
build(deps): bump the npm_and_yarn group across 1 directory with 3 updates (#1340)
Bumps the npm_and_yarn group with 3 updates in the /docs directory: [brace-expansion](https://github.com/juliangruber/brace-expansion), [postcss](https://github.com/postcss/postcss) and [undici](https://github.com/nodejs/undici).


Updates `brace-expansion` from 1.1.15 to 1.1.18
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](https://github.com/juliangruber/brace-expansion/compare/v1.1.15...v1.1.18)

Updates `postcss` from 8.5.15 to 8.5.25
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.15...8.5.25)

Updates `undici` from 7.28.0 to 7.29.0
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v7.28.0...v7.29.0)

---
updated-dependencies:
- dependency-name: brace-expansion
  dependency-version: 1.1.18
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: postcss
  dependency-version: 8.5.25
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: undici
  dependency-version: 7.29.0
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-04 15:45:23 -07:00
..
apply docs: rewrite FFI reference around buffer features, add worked libc examples (#1275) 2026-07-15 22:09:25 -07:00
archive Move to /docs folder 2018-12-30 17:03:14 -08:00
cli docs: fully-expandable generated sidebar + Chinese docs via Docusaurus i18n (#1246) 2026-07-11 17:20:25 -04:00
concepts/general reference loops: docs, runtime cycle efuns, orphan collector, copy() unwind fix (#1276) 2026-07-16 00:06:37 -07:00
driver docs: rewrite FFI reference around buffer features, add worked libc examples (#1275) 2026-07-15 22:09:25 -07:00
efun docs: document the real rules for throw(), add a structured catch() example (#1335) 2026-07-28 16:08:29 -07:00
i18n/zh-CN docs: document the real rules for throw(), add a structured catch() example (#1335) 2026-07-28 16:08:29 -07:00
lpc fix(lpc-syntax): refuse files with broken quoting instead of shredding them 2026-07-23 20:28:21 -07:00
src/css setup vitepress 2023-12-02 20:00:33 -08:00
static Add local search and documentation guide for docs site (#1221) 2026-07-09 22:09:55 -04:00
stdlib docs: rewrite FFI reference around buffer features, add worked libc examples (#1275) 2026-07-15 22:09:25 -07:00
.gitignore Add local search and documentation guide for docs site (#1221) 2026-07-09 22:09:55 -04:00
add_missing_efuns.py Add local search and documentation guide for docs site (#1221) 2026-07-09 22:09:55 -04:00
bug.md Add local search and documentation guide for docs site (#1221) 2026-07-09 22:09:55 -04:00
build-wasm.md feat(wasm): enable the pcre package on the WebAssembly target 2026-07-23 23:58:50 -07:00
build.mdx docs: fully-expandable generated sidebar + Chinese docs via Docusaurus i18n (#1246) 2026-07-11 17:20:25 -04:00
build_v2017.md Add local search and documentation guide for docs site (#1221) 2026-07-09 22:09:55 -04:00
CLAUDE.md docs: fully-expandable generated sidebar + Chinese docs via Docusaurus i18n (#1246) 2026-07-11 17:20:25 -04:00
docusaurus.config.ts docs: fully-expandable generated sidebar + Chinese docs via Docusaurus i18n (#1246) 2026-07-11 17:20:25 -04:00
gen_config_docs.py docs: fully-expandable generated sidebar + Chinese docs via Docusaurus i18n (#1246) 2026-07-11 17:20:25 -04:00
gen_sidebar.py docs: fully-expandable generated sidebar + Chinese docs via Docusaurus i18n (#1246) 2026-07-11 17:20:25 -04:00
index.mdx docs: fully-expandable generated sidebar + Chinese docs via Docusaurus i18n (#1246) 2026-07-11 17:20:25 -04:00
package-lock.json build(deps): bump the npm_and_yarn group across 1 directory with 3 updates (#1340) 2026-08-04 15:45:23 -07:00
package.json Add local search and documentation guide for docs site (#1221) 2026-07-09 22:09:55 -04:00
README.md docs: fully-expandable generated sidebar + Chinese docs via Docusaurus i18n (#1246) 2026-07-11 17:20:25 -04:00
sidebar_meta.json reference loops: docs, runtime cycle efuns, orphan collector, copy() unwind fix (#1276) 2026-07-16 00:06:37 -07:00
sidebars.generated.json reference loops: docs, runtime cycle efuns, orphan collector, copy() unwind fix (#1276) 2026-07-16 00:06:37 -07:00
sidebars.ts docs: LPC style guide + formatter reference; for (;;) spacing fix (#1281) 2026-07-17 18:49:03 -07:00

FluffOS Documentation

This directory contains the source for the FluffOS documentation site, published at https://www.fluffos.info.

The site is built with Docusaurus 3 (@docusaurus/preset-classic). Markdown files live directly in this directory (the docs plugin is configured with path: '.' and routeBasePath: '/'), so docs/efun/strings/explode.md becomes /efun/strings/explode on the site.

This README is for contributors and is excluded from the published site (see exclude in docusaurus.config.ts).

Local Development

Requires Node.js 18+ (Node 22 recommended).

cd docs
npm install
npm run dev       # dev server on http://localhost:3000

Other scripts:

npm run build     # production build → docs/build/
npm run preview   # serve the production build locally
npm run clear     # clear the Docusaurus cache

Full-text search is provided by @easyops-cn/docusaurus-search-local, an offline/local search theme — the index is generated at build time and shipped with the site, so no external search service (e.g. Algolia) is needed.

Notes:

  • The search index is only generated by npm run build. In the dev server (npm run dev) the search bar shows a hint instead of results; use npm run build && npm run preview to test search locally.
  • Both English and Chinese pages are indexed (language: ['en', 'zh']).
  • Search options live in the themes section of docusaurus.config.ts.

Chinese docs (i18n)

The Chinese corpus lives under i18n/zh-CN/docusaurus-plugin-content-docs/current/, mirroring the English tree layout (a translation of docs/efun/arrays/allocate.md goes at i18n/zh-CN/docusaurus-plugin-content-docs/current/efun/arrays/allocate.md). The site serves it at /zh-CN/ with a locale dropdown in the navbar; untranslated pages automatically fall back to the English content.

  • Sidebar/navbar/footer label translations: i18n/zh-CN/docusaurus-plugin-content-docs/current.json and i18n/zh-CN/docusaurus-theme-classic/*.json. Rescaffold new keys with npx docusaurus write-translations --locale zh-CN after sidebar changes, then translate them.
  • The dev server runs one locale at a time: npm run dev -- --locale zh-CN.
  • npm run build builds both locales.

Layout

Path Contents
docusaurus.config.ts Site config: navbar, footer, docs plugin, search theme
sidebars.ts Sidebar skeleton; splices in the generated reference trees
sidebars.generated.json Generated sidebar trees for the reference docs (do not hand-edit)
sidebar_meta.json Curated sidebar labels, descriptions and ordering for the generated trees
src/css/custom.css Infima CSS variable overrides
static/ Files copied verbatim to the site root (CNAME, Google site verification)
apply/ Driver-to-LPC callback (apply) reference
efun/ Built-in function (efun) reference, by category
stdlib/ LPC standard-library reference
driver/ Driver internals & configuration
lpc/ LPC language reference
concepts/ High-level LPC / MUD concepts
cli/ Command-line tool docs
i18n/zh-CN/ Chinese translations (Docusaurus i18n; mirrors the English tree layout)
archive/ Historical MudOS-era documents (not published)

Maintenance scripts

Script Purpose
gen_sidebar.py Regenerates sidebars.generated.json from the reference doc trees + sidebar_meta.json (--check verifies freshness, used by CI)
gen_config_docs.py Regenerates driver/config.md from src/base/internal/rc.cc
add_missing_efuns.py Creates stub pages under efun/general/ for undocumented efuns (needs a keywords.json from the generate_keywords tool)

Conventions & Gotchas

  • driver/config.md is auto-generated from src/base/internal/rc.cc — never edit it by hand. Regenerate with python3 docs/gen_config_docs.py; CI fails if it is stale.
  • .md files are treated as standard CommonMark (markdown.format: 'detect'), but bare {...} in prose is still parsed as a JSX expression and breaks the build — escape it as \{...\} outside fenced code blocks.
  • Sidebar entries in sidebars.ts use doc IDs (relative path without extension), not URLs.
  • The reference trees (efun/apply/stdlib/cli/concepts/driver) have no index.md files: their sidebar trees live in sidebars.generated.json and their landing pages are Docusaurus generated-index card pages. After adding, removing, or moving a page in those trees, run ./gen_sidebar.py and commit the result — CI fails if it is stale. Category labels/descriptions/ordering are curated in sidebar_meta.json. lpc/index.md is hand-written and its sidebar is hand-authored in sidebars.ts.
  • The sidebar is shared by both locales; Chinese category labels come from i18n/zh-CN/docusaurus-plugin-content-docs/current.json, not from sidebar_meta.json.
  • onBrokenLinks is set to 'throw': a broken internal link fails the build (and the Pages deploy) instead of shipping a 404.

See CLAUDE.md for detailed documentation templates (applies, efuns, CLI tools) and the full contribution workflow.