A medieval-Europe innkeeping tycoon — write the ledger by candlelight. Rust/WASM core + Three.js.
  • TypeScript 52.8%
  • Rust 37.3%
  • JavaScript 6.5%
  • CSS 3.1%
  • HTML 0.3%
Find a file
htayj 0139a8daad chore(tools): add visual QA diagnostic harness
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-28 23:36:58 -04:00
.github/workflows ci: deploy to GitHub Pages (base /computus/); relative asset paths 2026-07-25 20:16:43 -04:00
assets feat(p5): readable manuscript codex (Liber Humorum), staff portraits on Familia, humour-onset cutscene, procedural WebAudio (candle/quill/sting/coin) 2026-07-25 21:09:49 -04:00
core license: GPL-3.0 (code); add .nojekyll for Pages asset serving; LICENSE/README 2026-07-25 20:21:55 -04:00
tools chore(tools): add visual QA diagnostic harness 2026-08-28 23:36:58 -04:00
web feat(ledger): cell-based spreadsheet editing + medieval strikethrough erasure (no delete; '-' strikes out, ink-gated) 2026-07-26 02:23:04 -04:00
.gitignore feat: diegetic in-world UI — ledger vellum, status slate, clickable props; PBR oak/wax textures; chroma-keyed hand; bundled blackletter font; lighting pass 2026-07-25 03:58:50 -04:00
AGENTS.md docs: plan, decisions, agent conventions, and Latin UI strings 2026-07-25 03:00:25 -04:00
Cargo.lock feat: P1a runnable scaffold — Rust/WASM core, Three.js desk scene, Latin UI, CI 2026-07-25 03:00:53 -04:00
Cargo.toml feat: P1a runnable scaffold — Rust/WASM core, Three.js desk scene, Latin UI, CI 2026-07-25 03:00:53 -04:00
decisions.md docs: plan, decisions, agent conventions, and Latin UI strings 2026-07-25 03:00:25 -04:00
LICENSE license: GPL-3.0 (code); add .nojekyll for Pages asset serving; LICENSE/README 2026-07-25 20:21:55 -04:00
PLAN.md docs(plan): session status — playable end-to-end; P2/P5/partial-P6 remaining 2026-07-25 05:27:04 -04:00
README.md docs(readme): note that this project is an experiment testing GLM-5.2 (planner) + Grok (implementer) orchestration 2026-07-26 09:21:01 -04:00

Computus

A medieval-Europe innkeeping tycoon. You sit at a candlelit desk and keep the inn's computus (ledger) by quill, in Latin. Manage supplies, design dishes, tend your staff's humours, pay the guilds — and guard the innkeeper's mind, which a predatory "Sortes" lootbox will gladly unravel. Rust/WASM simulation core + Three.js, browser, 3D, all-diegetic UI. Black-comedy satire of gacha mechanics; the affliction is depicted straight, the gamification chrome is the joke.

About this project — an experiment

Computus is an experiment to test the limits of our current setup: GLM-5.2 as the planning/orchestrating model (this repo was built under the gronk orchestrator role) and Grok as the implementer (via the gronk-coder / gronk-researcher / gronk-media subagents, which run Grok models). Nearly all of the code, research, and generated art here was produced by that pipeline with a human directing at the feature level — including the Rust/WASM simulation core, the Three.js diegetic UI, the Latin strings, and the Grok-image/video assets. The commit history and PLAN.md reflect how that work was decomposed and delegated. Treat the result as a data point on what this orchestration arrangement can and can't do, not as a hand-finished product.

Prerequisites

  • Rust (stable) with the wasm32-unknown-unknown target (on Arch: rust-wasm)
  • wasm-pack 0.15+
  • Node.js 20+ and npm

Run (dev)

cd core && wasm-pack build --target bundler --out-dir ../web/pkg --out-name core
cd ../web && npm install && npm run dev

Open the URL Vite prints. (Production build: cd web && npm run build, then npm run preview.)

How to play

You are the innkeeper. Goal: survive 14 days without going bankrupt. Score is your denarii. The whole game is the desk world — there is no HTML UI except a hidden typing field. Move the mouse to move your hand.

The Ledger (left paper — primary interface). Click the bottom writing line to take up the quill, type a command, press Enter. First pick a category from the left-margin tabs:

Category (tab) What writing does Example
Provisiones order supplies: <item> <qty> Panis 6
Mercedes give a staff bonus (Donativum): +morale, once/day (anything)
Census pay guild dues: <guild> coquorum
Candelae order tallow candles: <n> 5
Remedia buy a remedy: <name> herbae
Recepta record income: <item> <amount> donum 20

Items: Panis (bread), Caro (meat), Cervisia (ale), Vinum (wine), Piscis (fish), Sal (salt), Granum (grain), Herbae (herbs), Cera (wax), Sebum (tallow). Guilds: coquorum, brasiatrum, mercatorum, cauponum, rasorum.

The Candle (top-right). Burns in real time; working in darkness raises the innkeeper's stress. Click a lit candle to order more (×5 tallow); click an extinct candle to relight (uses a spare). The snuffer (brass cone) extinguishes it.

The Codex (right panel — tabs):

  • Cellarium — your stock.
  • Familia — your staff (morale, humour, wage); button pays wages.
  • Gilda — the guilds; join or pay dues.
  • Libellus — your menu. Design a new dish: click ingredient tokens to add them, click the name field and type a name, then click Serva.
  • Anima — the innkeeper's mind: the Curae (stress) meter, active afflictions (the debuffs, shown straight), the Sortes lootbox (25 denarii — promised relief that mostly worsens things), and Remedia (Sanguisatio / Herbae / Oratio).

The Mind (the gacha). Stress rises from debt, darkness, and lost custom. At each threshold you "draw" an affliction — announced as a garish achievement/skin/collectible toast (the satire) but applied as a real debuff (melancholia dulls appeal, phlegma saps service, cholera saps morale, sanguine excess invites reckless spending). The Sortes lootbox is the predatory loop; remedies counteract it.

Props: the red seal stamp saves; the iron strongbox loads.

Status

  • Core loop playable and balanced (economy tuned so decent play thrives; afflictions remain a threat). Win/lose (survive 14 days / bankrupt).
  • All in-world text is medieval-vulgate Latin; uncertain strings are flagged _qa in assets/latin/strings.json for a Latin reviewer.
  • Typed input (keyboard) for now — Gothic-textura handwriting recognition is planned but not yet wired.
  • Save/load: localStorage key computus-save.
  • Deterministic seeded RNG (auditable gacha odds; replayable saves).
  • 41 Rust unit/integration tests + a multi-day balance simulation.

See PLAN.md for the phased roadmap and decisions.md for locked design decisions.

License

Code is licensed under the GNU General Public License v3.0 (LICENSE; SPDX GPL-3.0-only).

The generated art assets (textures, sprites, the opening cutscene) were produced with Grok image/video generation and are not covered by the GPL — their use is subject to the then-current xAI terms. Confirm those terms before any commercial use of the assets.