Files
ps5upload/CONTRIBUTING.md
T
phantomptrandClaude Opus 5.5 c14782944d PS5Upload v5.35.0
Upload, install, convert and manage PS5 game packages over the network.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 04:31:13 -07:00

73 lines
2.7 KiB
Markdown

# 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
```bash
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](README.md) and [TESTING.md](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:
```bash
npm run validate # lints + unit/integration tests + typecheck + i18n + build
```
`npm run validate` covers, across all three layers:
- **Lints** — `cargo fmt`/`clippy` (engine + Tauri shell), ESLint, `tsc`,
script syntax/audit, and the i18n coverage gate.
- **Unit + integration tests** — `cargo 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:
```bash
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](LICENSE).
## Questions
Open a [GitHub issue](https://github.com/phantomptr/ps5upload/issues) or ask
in the [Discord](https://discord.gg/fzK3xddtrM).