Docs/Development

Development

Build the component you need, run affected checks, and contribute a focused change.


Get the source

git clone https://github.com/dbpprt/dieter.git
cd dieter

For Go and harness development, use Go 1.26.8+, Node.js 22.19+, npm, Git, Python 3, and just 1.58+. Native and website toolchains are separate:

ComponentToolchainBuild / guide
Daemon / gatewayGojust build
macOSmacOS 26+, Xcode 26.5+Mac guide
AndroidAndroid SDK and Android Studio’s bundled JBRAndroid guide
iOS betaXcode; signing for physical devicesiOS guide
WebsiteHugo extended 0.164+just site serve
just doctor
just harness install
just build

Go binaries land in bin/. Published releases already contain their native capture helpers; source screen-host development needs the relevant platform helper dependencies. A deliberately headless source install can omit the helper: just install "$HOME/.local" "" false.

Repository map

DirectoryResponsibility
cmd, internalDaemon, CLI, gateway, storage, transports, harnesses
api/proto, api/contract-versionAuthoritative application contract
apps/mac, apps/ios, apps/androidNative clients and their fixtures
nativePlatform screen capture and WebRTC integration
configEmbedded harness registry
landingpagePublic website and maintained user guides
docsTechnical references, screenshot sources, historical investigations
deploy/gatewaySigned gateway deployment tooling
just, scriptsReproducible build, test, and release entry points

Run checks for your change

just check-changed --dry-run
just check-changed

The default includes staged, unstaged, deleted, renamed, and untracked changes. Use --base origin/main to include branch changes since the merge base. The dry run lists the exact affected checks. Markdown-only changes skip application tests; website implementation changes build the site. just site check additionally validates rendered links, fragments, images, and repository documentation links.

Go changes select race tests and vet for affected packages and reverse dependencies. Native changes select the relevant app’s unit tests; app/shared schema/fixture changes also select related integration checks. Tests stop on the first failure.

Explicit full validation remains available:

just check
just mac test
just android test
just ios smoke

Use just mac, just android, just daemon, just gateway, just harness, just site, or just release to discover component commands.

Preserve running services

Never restart or install over an operator’s daemon to test a change. Use temporary Dieter roots, random loopback listeners, disposable credentials, and the existing native smoke drivers. Mac smoke refuses to run beside a Dieter app. Android tests must pin the selected emulator and preserve app data and saved connections.

If the integration environment is unavailable, report it explicitly. Do not silently use a production account or stop somebody else’s app to make a test pass. The native platform guides document process, build-cache, and emulator lifecycle.

Change the application contract together

A native operation requires a declared protobuf RPC, an explicit grpcAPI implementation, a thin Connect adapter, CLI parity, offline help, and route tests. Regenerate bindings with just proto. Update user documentation and the CLI skill in the same change. Contract tests catch declared RPCs without implementations.

Use gofmt for Go and the native formatter commands for their sources. Keep accessibility and adaptive layouts intact.

Contribute

Read CONTRIBUTING.md for bug reports and pull requests. Keep changes focused, explain the resulting behavior, and report relevant validation and limitations. git diff --check should pass before review.

Signed releases use the existing Just release recipes. Apple credentials and the manual TestFlight workflow are documented in Apple release signing .

Improve this page on GitHub ↗

Type to find a guide.