mirror of
https://github.com/phantomptr/ps5upload.git
synced 2026-10-19 02:20:02 -05:00
Pin v0.44 (sha256 4d06eab7...). Its crt/ and prospero-nid are identical to v0.43, so the vendored sdk-crt (+ ps5upload.patch) and the portable prospero-nid stay as they are; the helper, installer and elfldr build to the same code (only the build-id differs). v0.44 adds LLVM 23 to the candidate list, so the Makefile comment and Homebrew fallbacks move too. scripts/update-ps5-sdk.sh (make update-sdk): finds the latest release (or --tag), checks the zip, rewrites the pin, re-vendors prospero-nid and crt only when upstream changed them (stops if our crt patch no longer applies), moves the "SDK vX.Y" doc mentions and installs with install-ps5-sdk.sh, keeping the old SDK as a backup. --check only reports. The installer names its backups after the release they hold. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ub1mez9eaVtTF8pMEFXvA9
84 lines
3.5 KiB
Markdown
84 lines
3.5 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.
|
|
|
|
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).
|
|
|
|
The PS5 Payload SDK release is pinned in `scripts/ps5-sdk.env`. `make update-sdk`
|
|
moves the pin to the latest upstream release and installs it (`SDK_TAG=vX.Y` for a
|
|
specific one, `SDK_CHECK=1` to only check); see TESTING.md, Layer 2.
|
|
|
|
## Quality gate: run before opening a PR
|
|
|
|
CI runs the same checks; running them locally first saves a round-trip.
|
|
`npm run validate` runs most of it in one command (version sync, script checks, i18n,
|
|
engine and desktop fmt/clippy/tests, client typecheck/lint/tests/build). The complete gate is
|
|
these, and `cargo fmt --check` must pass in BOTH `engine/` and `client/src-tauri`:
|
|
|
|
```bash
|
|
( cd engine && cargo fmt --all -- --check ) # fmt in BOTH workspaces
|
|
( cd client/src-tauri && cargo fmt --all -- --check )
|
|
( cd engine && cargo clippy --workspace -- -D warnings )
|
|
( cd engine && cargo test --workspace )
|
|
( cd engine && cargo test -p ava1-ctest -- --test-threads=1 )
|
|
make test-payload # needs PS5_PAYLOAD_SDK
|
|
make check-no-ftx2 # the retired protocol must stay gone
|
|
( cd client && npm run lint && npm run typecheck && npm test && npm run build:vite )
|
|
npm run i18n:check # from the repo root
|
|
```
|
|
|
|
`ava1-ctest` builds the payload's AVA1 C on the host and tests it against the Rust side, so no
|
|
PS5 is needed. `check-no-ftx2` fails if the old protocol name or ports 9113/9114 reappear
|
|
outside the changelog and a short list of exceptions in the Makefile.
|
|
|
|
Other useful targets:
|
|
|
|
```bash
|
|
make test # script + engine + payload + client checks
|
|
npm run validate:full # adds the payload ELF build and self-tests
|
|
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).
|