Skip to content

Latest commit

 

History

History
91 lines (70 loc) · 3.67 KB

CONTRIBUTING.md

File metadata and controls

91 lines (70 loc) · 3.67 KB

Contributing to TunaOS ISO Builder

Thank you for your interest in the TunaOS ISO Builder! This document gives guidelines and instructions to send contributions to this repository.


Contribute compute — no code needed

Donate time with your AI CLI.

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.

Development Setup & Verification

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.

JavaScript unit tests (tests/*.test.cjs)

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.cjs

These 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.

1. Web Application (app/public)

  • Put tbox.wasm and wasm_exec.js in place, as README.md describes.
  • Serve locally:
    cd app/public && python3 -m http.server 8080

2. End-to-End Tests (e2e/)

  • 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.

3. Native Application (native/)

  • Run tests (see native/README.md for platform build prerequisites):
    cd native
    go vet ./...
    go test ./...
  • native/ also carries a .golangci.yml (schema version: "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. The formatters section of the config also runs gofmt/goimports:
    cd native
    golangci-lint run

Submitting Pull Requests

  1. Branch Naming & DCO: Create a feature or bugfix branch. Sign all commits with Developer Certificate of Origin (git commit -s).
  2. Pull Requests: Open a pull request against the main branch. Provide a clear description of the changes and link any related issues.
  3. CI Pipeline: All PRs must pass the automated checks — native-linux/native-windows/native-macos (go vet + go test) and the e2e inspect-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.