3
1
Fork
You've already forked meadow
0
A rich and beautiful web & mobile client for interacting with mooR worlds
  • TypeScript 87.2%
  • CSS 12.3%
  • Shell 0.2%
  • JavaScript 0.1%
  • Rust 0.1%
Ryan Daum 0ab8b8cc23
Some checks failed
Build Desktop App / build-linux (push) Has been cancelled
Meadow CI / ci (push) Has been cancelled
Build Desktop App / release (push) Has been cancelled
chore: replace 1.1 dev mentions to 2.0 dev
2026年06月22日 14:13:00 -04:00
.forgejo/workflows [chore] Allow for adhoc release build 2026年02月01日 18:38:08 -05:00
deploy/debian-packages [chore] Update all API paths to /v1 prefix 2026年02月05日 18:07:08 -05:00
doc [chore] Screenshots of verb editor & browser 2026年01月28日 19:53:34 -05:00
public [chore] First revision splitting from main moor repo 2026年01月28日 19:19:24 -05:00
src fix: Fix broken focus issues in verb editor 2026年06月18日 11:47:03 -04:00
src-tauri chore: replace 1.1 dev mentions to 2.0 dev 2026年06月22日 14:13:00 -04:00
.gitignore [chore] Missing .gitignore 2026年01月28日 19:29:48 -05:00
.npmrc [chore] First revision splitting from main moor repo 2026年01月28日 19:19:24 -05:00
Dockerfile [chore] First revision splitting from main moor repo 2026年01月28日 19:19:24 -05:00
dprint.json [chore] First revision splitting from main moor repo 2026年01月28日 19:19:24 -05:00
eslint.config.mjs [chore] First revision splitting from main moor repo 2026年01月28日 19:19:24 -05:00
LICENSE Initial commit 2026年01月29日 00:30:02 +01:00
nginx.conf [chore] Update all API paths to /v1 prefix 2026年02月05日 18:07:08 -05:00
package-lock.json chore: replace 1.1 dev mentions to 2.0 dev 2026年06月22日 14:13:00 -04:00
package.json chore: replace 1.1 dev mentions to 2.0 dev 2026年06月22日 14:13:00 -04:00
README.md chore: replace 1.1 dev mentions to 2.0 dev 2026年06月22日 14:13:00 -04:00
tsconfig.json [fix] Pin monaco-editor type resolution to local node_modules 2026年02月05日 16:57:25 -05:00
vite.config.ts fix(browser): Fix inherited property values 2026年06月09日 14:56:35 -04:00
vitest.config.ts [chore] Split web-host client pieces out into SDK 2026年02月07日 16:59:22 -05:00
vitest.setup.ts [chore] First revision splitting from main moor repo 2026年01月28日 19:19:24 -05:00

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 line
  • main: 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 to http://localhost:8080).
  • MOOR_WS_URL: URL of the WebSocket endpoint (defaults to ws://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: use 1.0.0-rc1-dev...
  • main: use 1.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:

  • moor on v1.0-release
  • Meadow on v1.0-release
  • @moor/schema and @moor/web-sdk from the 1.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.