Skip to main content

Contributing

Moondust is open source. Bug reports, doc fixes, and code contributions are welcome; use GitHub Issues and Discussions on the main repository to coordinate.

Repository layout

PathRole
packages/studio/Current desktop UI (SolidJS + Vite); embedded by the Go shell and served locally by Sash.
frontend/Older Solid app + Wails-generated wailsjs/ (not used by main.go today).
internal/Go services: app API, storage, git, terminal, legacy v1 stacks, etc.
main.goSash entry (sash.Run); embeds packages/studio/dist.
sash.jsonSash project config (frontend install/build/dev, codegen for RPC bindings).
Taskfile.ymlRepo tasks: dev, frontend build, cross-compile dist-* (same flows as CI).

Prerequisites

  • Go (see go.mod for the toolchain line used by the module).
  • Sash CLI (go install github.com/zackarysantana/sash/cmd/sash@latest).
  • Task (optional; root task shortcuts mirror CI).
  • Bun: the workspace uses Bun under packages/ (see sash.json frontend.install / frontend.build / frontend.dev).

Run from source (development)

From the repository root (with sash on PATH; Task prepends $(go env GOPATH)/bin in the Taskfile):

task dev

(or PATH="$(go env GOPATH)/bin:$PATH" sash dev)

This builds/starts Studio via Vite, runs the Go API on the loopback listener from sash.json, and opens the app URL in your default browser.

To build only the bundled UI (what embed consumes):

task frontend

That runs bun install and bun run --filter @moondust/studio build under packages/ (matching sash build frontend steps).

Production-like binary

Cross-platform dist-* tasks live in the root Taskfile.yml (aligned with .github/workflows/release.yml):

task dist-linux-amd64
RELEASE_LABEL=v1.2.3 task dist-darwin-arm64 # embeds semver into internal/v2/buildinfo

Documentation site

The Docusaurus site lives in packages/docs.

cd packages/docs
bun install
bun run start

Then open the local URL printed in the terminal. bun run build runs a production build; broken internal links fail the build by design.

Architecture (short)

For a high-level picture of how the desktop shell talks to Go and how chat streaming is wired, see Architecture.