diff --git a/.gitignore b/.gitignore index 370204e..205dccc 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ config/config.ps4.json plugin/build/ tests/test_utils config/icons/ +!config/icons/logo.png # installer artifacts *.pkg diff --git a/README.md b/README.md index 936eb3a..6a7e92a 100644 --- a/README.md +++ b/README.md @@ -1,62 +1,80 @@ -# orbisRPC — Discord Rich Presence for the PS4 +

+ orbisRPC +

-A background daemon that runs **entirely on your jailbroken PS4** and posts -what you're playing to your Discord profile — game name, cover art, elapsed -timer. No PC, no phone bridge at runtime. v1.0.0. +

+ version + PS4 GoldHEN + Discord + no tables +

-## Install (5 minutes, one try) +

Discord Rich Presence for the jailbroken PS4 — every game, zero setup.
+A background daemon that lives entirely on your console and posts what you're +playing to Discord: name, cover art, timer. No PC at runtime.

-1. Install `OrbisRPC-Setup-1.0.0.pkg` (Releases page) via Package Installer. -2. Open **orbisRPC Setup** on the home screen. -3. Say Yes: it copies the daemon everywhere loaders look, checks WiFi, - asks for your Discord token, saves it, and starts the daemon. -4. Launch a game. Watch Discord. +--- -After a reboot, re-jailbreak, then enable AutoRun for `orbisrpc` in -GoldHEN's payload menu — it starts itself on every jailbreak from then on. +## Install (5 minutes) + +1. Grab `OrbisRPC-Setup-1.0.0.pkg` from the + [Releases page](https://github.com/SirHumza/orbisRPC/releases/tag/v1.0.0) + and install it with Package Installer. +2. Open **orbisRPC Setup** → say Yes. It installs the daemon, checks WiFi, + saves your Discord token, and starts everything. +3. Launch a game. Watch Discord. + +After a reboot: re-jailbreak, then enable AutoRun for `orbisrpc` in GoldHEN's +payload menu once — it starts itself on every jailbreak after that. + +## What you get + +| | | +|---|---| +| 🎮 **Any game, no lists** | Names resolve from your console's own database — CUSA, PPSA, indies, all covered with zero per-game setup. | +| 🖼️ **Real cover art** | Game art served per title, PlayStation logo when idle. | +| ⏱️ **True timers** | Survive reconnects and restarts, resume across quick game switches. | +| 🧠 **Self-learning** | First-seen titles are remembered, so later boots resolve instantly. | +| 🔄 **Self-updating** | Signed daemon updates with boot rollback. No reinstall treadmill. | +| 📦 **One-tap installer** | Setup PKG: install → WiFi check → token → running. | ## How it works ``` PS4 (GoldHEN) Discord -+----------------------------------+ +------------------+ -| orbisRPC daemon (payload) | | your profile | -| sandbox scan -> CUSA id | TLS | Playing Spider- | -| app.db -> display name | <--> | Man — 1h 23m | -| art pack/CDN -> mp: cover | | [cover] [timer] | -+----------------------------------+ +------------------+ +┌─────────────────────────┐ ┌──────────────────┐ +│ orbisRPC daemon │ TLS │ your profile │ +│ sandbox scan → game ID │ ◄──► │ Playing Game │ +│ app.db → display name │ │ [cover] [timer] │ +└─────────────────────────┘ └──────────────────┘ ``` -- **Detection:** the running game's `/mnt/sandbox` mount + eboot fast-switch - + 2-poll debounce. No tables, no per-game setup — any title works. -- **Names:** system app.db (SQLite, read-only) → local files → Sony TMDB - live → raw ID fallback. First authoritative hit self-learns into config. -- **Home:** PlayStation logo tile with "On PS4" when idle. -- Full design: `docs/DAEMON.md`. Installer: `docs/INSTALLER.md`. - Symptoms table: `docs/TROUBLESHOOTING.md`. +Details: [`docs/DAEMON.md`](docs/DAEMON.md) · [`docs/INSTALLER.md`](docs/INSTALLER.md) · +[`docs/TROUBLESHOOTING.md`](docs/TROUBLESHOOTING.md) · +[`docs/PRODUCTION.md`](docs/PRODUCTION.md) -## Config (`/data/orbisRPC/config.json`) +## Config -Only `token` is required (your Discord user session token). Everything else -has working defaults: `presence_state`, `home_art`, `poll_interval_s`, -`application_id`, `debug`, plus the self-learned `titles` map (hands off — -the daemon maintains it). +Only `token` (your Discord user session token) is required — +`/data/orbisRPC/config.json`. Everything else ships working: presence text, +home art, poll interval, plus the self-learned `titles` map (hands off). ## Building -Daemon + tools: `./scripts/build_sdk.sh` (needs `ps4-payload-sdk`). -Installer PKG: `make -f installer/Makefile` -(`OO_PS4_TOOLCHAIN`, llvmshim — no brew). Host tests: -`make -C tests test && make -C tests asan`, contracts: -`python3 tests/e2e_consumer.py`. +```bash +./scripts/build_sdk.sh # daemon payload (needs ps4-payload-sdk) +make -f installer/Makefile # Setup PKG (OpenOrbis toolchain, llvmshim) +make -C tests test # host unit tests +make -C tests asan # ASan/UBSan +python3 tests/e2e_consumer.py # contracts + linkage gate +``` ## Safety -A user session token grants full account access: never share the config, -never commit a real token. Token use for presence is against Discord's ToS -(Standard practice for headless presence tools; risk is yours — see docs). +A user session token grants full account access — never share the config, +never commit a real token. Token-based presence is against Discord's ToS +(standard practice for headless presence tools; risk is yours). ## License -Project license to be finalized (MIT vs GPL). No GPL source is copied into -this tree; the OpenOrbis toolchain it builds against is GPL-3.0. +To be finalized (MIT vs GPL). No GPL source is copied into this tree. diff --git a/tests/test_utils_asan b/tests/test_utils_asan deleted file mode 100755 index 64eb67d..0000000 Binary files a/tests/test_utils_asan and /dev/null differ