Thanks for your interest! This is an early prototype, so there's a lot of surface area and plenty of room to help. This guide covers setup, the gotchas, and the conventions that keep the codebase coherent.
This project follows the Contributor Covenant. By participating, you agree to uphold it.
- macOS — the app is macOS-first. Windows/Linux are untested but PRs that improve cross-platform support are welcome.
- Node.js 18+ and npm.
- A C/C++ toolchain to build
node-pty's native addon. On macOS:xcode-select --install
- Claude Code on your
PATHif you want agents to actually runclaude(the default command). Any other command works.
git clone <your-fork-url> munder-difflin
cd munder-difflin
npm install # postinstall rebuilds node-pty against Electron's ABI
npm run dev # live-reloading Electron buildImportant
The most common setup failure is the native node-pty rebuild. The
postinstall script runs electron-rebuild so node-pty matches Electron's
ABI. If you see a "wrong ELF/Mach-O" or "NODE_MODULE_VERSION" error at launch,
re-run npm install (which re-triggers postinstall) after confirming your
C/C++ toolchain is installed.
- Keep the type-checker green:
npm run typecheck(runs both the node and web TS projects). This is the de-facto CI gate — there is no test suite yet. - Confirm a production build works:
npm run build. - Match the aesthetic. Any new UI must derive from the design tokens in
DESIGN.md/src/renderer/src/design/tokens.ts— no ad-hoc colors, spacing, or fonts.tokens.tsandtokens.cssare mirrored; if you change one, change both. - For anything visual, include a screenshot or short clip in the PR.
| Path | What lives there |
|---|---|
src/main/ |
Electron main process — PTYs (pty.ts), fs/git bridges, the hive (hive.ts, hooks.ts, memory.ts), config. |
src/preload/ |
Context-bridge IPC surface. |
src/renderer/ |
React UI, Pixi.js office scene (scene/office/), components, design system, stores. |
tools/mapgen/ |
Python helpers for building/rendering the Tiled office map. |
See the Architecture section of the README for the data-flow overview.
- Wiring real Claude Code hook events — avatar behavior is currently driven
by a mock event loop (
src/renderer/src/store/mockEvents.ts). Replacing it with real tool events is the headline next milestone. - The add-agent flow and config drawer.
- Cross-platform smoke-testing (Linux/Windows).
- Branch off
main; keep PRs focused on one change. - Write a clear PR description of what changed and why.
- Don't commit
node_modules/,out/, or built artifacts (already gitignored).
The bundled pixel art is under the LimeZu FREE VERSION license
(non-commercial only) — see ATTRIBUTION.md.
If you contribute new art, it must be either your own work or compatibly
licensed, and you must add it to ATTRIBUTION.md. Don't add commercial-only or
unlicensed assets.
Open a discussion or issue — happy to help you get oriented.