- TypeScript 87.2%
- CSS 12.3%
- Shell 0.2%
- JavaScript 0.1%
- Rust 0.1%
Meadow
A rich and beautiful web & mobile client for interacting with mooR worlds.
The Timbran Hotel Lobby
Overview
Meadow provides a modern interface for mooR servers,
communicating with the backend through WebSocket connections and RESTful API calls handled by the
moor-web-host binary. It is the default client for the
Cowbell core.
Meadow can run as a web application served alongside a mooR backend, or as a standalone desktop application built with Tauri that connects to any remote mooR server.
Version Lines
Meadow and moor currently have two active version lines:
v1.0-release: the stable 1.0 linemain: the post-1.0 development line
Use matching branches across the stack. A Meadow checkout on v1.0-release should be used with the
v1.0-release line of moor and the corresponding 1.0.0-rc1-dev... published packages. A Meadow
checkout on main should be used with moor main and the corresponding 1.1.0-dev... published
packages.
main in the moor repository tracks post-1.0 development. If you want the stable 1.0 setup, use
the v1.0-release line rather than main.
Features
Rich Presentation
- Multimedia Content: Renders a rich HTML subset and Djot (a modern, faster Markdown-like format) for complex styling, tables, and integrated media.
- Terminal Heritage: Full support for ANSI colors and styles inline in content.
- Image presentation: Inline image thumbnails in object descriptions.
- Interactive Narrative: Inline links for executing commands directly from the text and automatic
- URL previews. Slack/Discord-style embeds for links to external sites, with thumbnails.
- Infinite History: Seamless "infinite" backscroll through mooR's encrypted and secure event log, allowing you to retrieve your entire character history.
... and more coming.
User Experience
- Identity Management: Integrated profile picture uploader and built-in player description editor.
- Personalization: Multiple themes (dark, light, and more) to suit your aesthetic.
- Dynamic Command Entry: A "verb palette" that provides real-time suggestions and autocompletions as you type, alongside a full, searchable command history.
Developer Tools (MOO IDE)
Meadow is not just a user facing client; it's a development environment for MOO programmers, for authoring persistent worlds and building objects in the MOO using modern development tools:
- Object Browser: A Smalltalk-style browser for navigating the list of objects, their verbs, and
their properties.
- Can create new objects and edit existing ones, add new verbs and properties, and edit them using the GUI without using the MOO command line.
The Meadow Object Browser
- Monaco-powered Editor: The same core editor that powers VS Code, featuring:
- Syntax highlighting for MOO code.
- Dynamic autocompletion based on the live world state.
- Integrated compiler feedback and error reporting.
- Verb editor highlights compile errors.
The Meadow Verb Editor
Project Structure
Meadow is a React application built with Vite and TypeScript, with an optional
Tauri 2.0 shell for desktop packaging. It relies on the @moor/schema NPM
package for FlatBuffer bindings, which are shared with the mooR backend.
├── src/ # React frontend (TypeScript)
├── src-tauri/ # Tauri desktop shell (Rust)
│ ├── Cargo.toml
│ ├── tauri.conf.json
│ ├── src/
│ ├── capabilities/
│ └── icons/
├── public/ # Static assets (WASM, etc.)
├── deploy/ # Debian packaging scripts
└── vite.config.ts
Development
Meadow is designed to be developed alongside the moor backend. Use a matching moor checkout for
the Meadow branch you are on.
# Install dependencies
npm install
# Start development server (defaults to http://localhost:3000)
npm run dev
# Start the full stack with the single-process moor server
npm run full:dev
# Build for production
npm run build
# Type checking
npm run typecheck
# Linting
npm run lint
Environment Variables
MOOR_PATH: Path to the mooR backend repository (defaults to../moor).MOOR_API_URL: URL of the mooR web API (defaults tohttp://localhost:8080).MOOR_WS_URL: URL of the WebSocket endpoint (defaults tows://localhost:8080).
FlatBuffer Schemas
This project uses published @moor/schema and @moor/web-sdk packages. Keep Meadow on the same
package line as the branch you have checked out:
v1.0-release: use1.0.0-rc1-dev...main: use1.1.0-dev...
Do not use latest blindly across the branch split.
npm install @moor/schema@1.0.0-rc1-dev...
Running Stable 1.0
To run the stable 1.0 line, use:
mooronv1.0-release- Meadow on
v1.0-release @moor/schemaand@moor/web-sdkfrom the1.0.0-rc1-dev...package line
If you use main checkouts or 1.1.0-dev... packages, you are on the post-1.0 development line
instead.
Desktop App (Tauri)
Meadow can be built as a native desktop application using Tauri. This wraps the web frontend in a lightweight WebKit-based window and allows connecting to any remote mooR server.
Prerequisites
In addition to Node.js, building the desktop app requires:
- Rust (1.70+): Install via rustup
- Linux system libraries:
sudo apt-get install -y \ libglib2.0-dev \ libwebkit2gtk-4.1-dev \ libjavascriptcoregtk-4.1-dev \ libsoup-3.0-dev \ libgtk-3-dev
Building
# Development mode (opens app with hot-reload)
npm run tauri:dev
# Production build
npm run tauri:build
The release binary is output to src-tauri/target/release/meadow.
Usage
# Connect to a remote mooR server
./meadow --server https://moo.example.com
# Short flag form
./meadow -s https://moo.example.com
Without --server, the app attempts to connect to the same origin (useful during development with
the Vite proxy).
Web Deployment
Meadow can also be deployed as a web application via Docker:
docker build -t meadow .
docker run -p 80:80 meadow
For more details on the overall mooR system, see the mooR Book.