Skip to content

Latest commit

 

History

History
72 lines (53 loc) · 2.67 KB

File metadata and controls

72 lines (53 loc) · 2.67 KB

Contributing to ps5upload

Thanks for your interest in improving ps5upload! Contributions come in via the standard fork + pull request flow — the repository doesn't grant direct push access, so everyone (including regulars) proposes changes the same way.

How to contribute

  1. Fork the repo to your own account.
  2. Branch off main in your fork: git checkout -b my-change.
  3. Make your change, keeping it focused — one logical change per PR.
  4. Run the quality gate locally (see below) until it's green.
  5. Open a pull request against phantomptr/ps5upload:main and fill out the PR template (.github/PULL_REQUEST_TEMPLATE.md).

Every PR is gated by CI (the PR gate check) and reviewed by the code owner before it can merge. PRs are squash-merged, so your branch becomes a single clean commit on main.

Dev setup

make install     # bootstrap the dev env (auto-detects macOS / Linux / Windows)
make build       # payload ELF + Rust engine + client UI
make run-client  # launch the Tauri dev app

See the README and TESTING.md for the full toolchain (PS5 Payload SDK, Rust, Node 22, Tauri prerequisites).

Quality gate — run before opening a PR

CI runs the same checks; running them locally first saves a round-trip:

npm run validate        # lints + unit/integration tests + typecheck + i18n + build

npm run validate covers, across all three layers:

  • Lintscargo fmt/clippy (engine + Tauri shell), ESLint, tsc, script syntax/audit, and the i18n coverage gate.
  • Unit + integration testscargo test --workspace (protocol, core, engine, pkg, and the mock-FTX2 integration tests — no PS5 required), the Tauri shell tests, and the client Vitest suite.

Other useful targets:

make test               # script + engine + payload + client checks
npm run validate:full   # adds the payload ELF build (needs PS5_PAYLOAD_SDK)
npm run coverage        # frontend + Rust coverage reports

If your change touches user-facing strings, add the key to client/src/i18n/locales/en.ts; npm run i18n:check will tell you if a locale needs an allowlist entry.

Guidelines

  • Match the surrounding code's style, naming, and comment density.
  • Keep PRs small and reviewable; unrelated cleanups belong in their own PR.
  • Hardware-specific behavior (anything that talks to a real PS5) can't be verified in CI — call out in your PR how you tested it on hardware.
  • By contributing, you agree your work is licensed under the project's GPLv3.

Questions

Open a GitHub issue or ask in the Discord.