Development

Requirements

Build and test

make
make test
go vet ./...
gofmt -w <files>

make writes a static bin/mob3. make clean removes it. make vendor regenerates vendor/ after a dependency change and must be committed.

Tests must not require network access. Use the existing fake loader and httptest-free helpers where possible. Add or update tests in the same change as behaviour.

Documentation

Build the site locally:

.github/pages/build.sh /tmp/mob3-site

The script writes index.html, docs/*.html, search-index.js, a CNAME for mob3.net and .nojekyll. Relative .md links are rewritten to .html for the site. Docs pages share a generated sidebar, on-page “On this page” contents list and header search, with a light/dark theme toggle and a mobile menu.

Repository layout

Path Purpose
cmd/mob3/ Executable entry point
internal/browser/ HTML, CSS, layout, rendering, fetching, JS, UI, automation and MCP
docs/ User documentation
.github/pages/ GitHub Pages template and build script
vendor/ Committed Go dependencies
bin/ Local build output (ignored)

Key engine files are listed in AGENTS.md. The MCP and automation split is:

Workflows

Contributing

Read CONTRIBUTING.md before opening a pull request. Contributions require the broad license-grant CLA so the project can remain available under AGPL-3.0-only or a commercial license. Keep the working agreement and engine decisions in AGENTS.md current whenever behaviour changes.