mirror of
https://github.com/phantomptr/ps5upload.git
synced 2026-10-22 03:42:55 -05:00
Upload, install, convert and manage PS5 game packages over the network. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
73 lines
2.7 KiB
Markdown
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).
|