Thank you for your interest in the TunaOS ISO Builder! This document gives guidelines and instructions to send contributions to this repository.
Your machine runs one task at a time using your signed-in AI coding CLI. The relay alternates between eligible School (OS) and Reef (apps) hives after each task. If one hive has no work, the other can continue.
The guide covers prerequisites, verified just setup, credentials, provider
costs, and how to stop with Ctrl+C. Your subscription quota or API charges apply.
Never post account credentials or API keys in issues or pull requests.
Before you open a pull request, test your changes locally in each affected component.
Run the offline Python and JavaScript checks from the repository root with
just check, or run only JavaScript with just test-node. That recipe gives
the test filenames to Node: node --test tests/ worker/ fails with
MODULE_NOT_FOUND on Node 24.19 before it runs the tests.
If you change a JavaScript helper (configuration checks, catalog selection or
Flatpak defaults), start with the offline unit suites. Use the Node.js version
that actions/setup-node selects in CI. Run one
suite while you work, from the repository root:
node --test tests/builder-config-flatpak-ids.test.cjsThese suites use the Node test runner with local CommonJS helpers and fixtures.
They need no npm install, WASM build, browser, native GUI toolkit, registry
access or credentials.
If you change the browser UI or the WASM engine, also run the Playwright end-to-end checks. If you change the native Go application, run the native checks. The offline suites do not replace those checks.
- Put
tbox.wasmandwasm_exec.jsin place, as README.md describes. - Serve locally:
cd app/public && python3 -m http.server 8080
- Run Playwright test suite to verify UI and WASM functionality:
cd e2e npm ci npx playwright install --with-deps chromium npx playwright test --grep-invert @full
Test user actions in the browser. Do not test the exact text in HTML.
- Run tests (see
native/README.mdfor platform build prerequisites):cd native go vet ./... go test ./...
native/also carries a.golangci.yml(schemaversion: "2", so it needs golangci-lint v2, e.g.go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@latest). CI does not run this yet, so lint it yourself before you open a PR. Theformatterssection of the config also runsgofmt/goimports:cd native golangci-lint run
- Branch Naming & DCO: Create a feature or bugfix branch. Sign all commits with Developer Certificate of Origin (
git commit -s). - Pull Requests: Open a pull request against the
mainbranch. Provide a clear description of the changes and link any related issues. - CI Pipeline: All PRs must pass the automated checks —
native-linux/native-windows/native-macos(go vet+go test) and thee2einspect-tier suite. The repository has a golangci-lint config, but CI does not run it yet. Run it locally, as the native step above shows.