2 Commits
Author SHA1 Message Date
Mr. Lowprofile 48f86c590c feat(fork): fork identity in the app, fork banner, and fork docs
Upstream stays the source of truth; this fork now carries changes that are
visible as its own.

- app/version.js: add BUILD/FORK/UPSTREAM next to an untouched VERSION, so the
  updater keeps comparing against the upstream feed
- app/ui/LanguageSheet.jsx: read-only "About this build" section (fork name,
  build tag, app version, upstream URL), marked with the upstream MODIFIED
  convention
- app/i18n/locales/{en,id}.json: the about.* keys
- assets/banner.svg: fork banner for the social preview
- README.md: fork notice with upstream credits intact; FORK-NOTES.md and
  CHANGELOG.md added
2026-10-16 19:24:50 +07:00
Mr. Lowprofile a672a19b33 feat: initial commit — inisialisasi proyek overdrive 2026-10-16 18:59:39 +07:00
15 changed files with 267 additions and 5 deletions

No files matched your search

+5
View File
@@ -0,0 +1,5 @@
version: 2
updates:
- package-ecosystem: github-actions
directory: /
schedule: { interval: weekly }
+11
View File
@@ -0,0 +1,11 @@
name: CI
on:
push: { branches: [main] }
pull_request:
jobs:
sanity:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Cek file wajib
run: test -f README.md && test -f LICENSE
+15
View File
@@ -0,0 +1,15 @@
name: Release
on:
push:
tags: ["v*"]
permissions:
contents: write
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Buat GitHub Release
env:
GH_TOKEN: ${{ github.token }}
run: gh release create "${{ github.ref_name }}" --generate-notes --title "${{ github.ref_name }}"
+31
View File
@@ -0,0 +1,31 @@
# Changelog
Changes made in this fork on top of [MyLuxy/overdrive](https://github.com/MyLuxy/overdrive).
Upstream's own history is in its [releases](https://github.com/MyLuxy/overdrive/releases);
this file only records the fork's additions. See [FORK-NOTES.md](FORK-NOTES.md) for what each
change touches.
## Unreleased
Nothing yet.
## mrlowpr.1 — 2026-10-16
First fork build. Starts from upstream `v1.0.5` (`4d3ced0`).
### Added
- **About this build** section in the settings sheet, showing the fork name, the fork build
tag, the app version and the upstream URL, so a fork build is never mistaken for an
upstream build.
- `BUILD`, `FORK` and `UPSTREAM` exports in `app/version.js`. `VERSION` deliberately left at
`1.0.5` so the updater keeps comparing against the upstream feed.
- `about.*` copy for English and Indonesian.
### Changed
- Fork banner and social preview art (`assets/banner.svg`).
- README opens with a fork notice, links to this fork's releases, and keeps upstream's
install instructions and credits intact.
### Known limitations
- Only the `about.*` keys are translated here; the other 14 catalogs fall back to English,
which is the upstream behaviour for any missing key.
+10
View File
@@ -0,0 +1,10 @@
# Kode Etik
Kami berkomitmen menjaga komunitas yang ramah, inklusif, dan bebas pelecehan.
- Hormati perbedaan pendapat dan latar belakang
- Beri dan terima kritik secara konstruktif
- Dilarang: pelecehan, serangan pribadi, dan konten diskriminatif
Pelanggaran dapat dilaporkan kepada pemilik repositori; pemelihara berhak
menghapus kontribusi atau memblokir pelaku.
+17
View File
@@ -0,0 +1,17 @@
# Panduan Kontribusi
Terima kasih sudah ingin berkontribusi ke **overdrive**.
## Alur Kerja
1. Fork repo ini dan buat branch: `git checkout -b feat/nama-fitur`
2. Lakukan perubahan dan pastikan CI lulus
3. Commit dengan format [Conventional Commits](https://www.conventionalcommits.org/):
`feat:`, `fix:`, `docs:`, `refactor:`, `test:`, `chore:`
4. Push dan buka Pull Request ke branch `main`
## Standar
- Satu PR untuk satu tujuan
- Sertakan pengujian bila menambah/mengubah perilaku
- Perbarui dokumentasi yang terdampak
+51
View File
@@ -0,0 +1,51 @@
# Fork notes
This repository is a fork of **[MyLuxy/overdrive](https://github.com/MyLuxy/overdrive)** — the
original project, which decompiled the PS5 store, recovered its source and rebuilt it. All
original credit goes to [MyLuxy](https://github.com/MyLuxy) and the upstream contributors.
Upstream stays the source of truth for how the store works. This fork exists so that a few
local changes can live somewhere without blocking on upstream. Everything below is what this
fork adds; everything else is upstream code.
## What this fork changes
| Area | Change | Where |
| --- | --- | --- |
| Build identity | `BUILD`, `FORK` and `UPSTREAM` exports next to the untouched `VERSION` | `app/version.js` |
| Settings sheet | New read-only **About this build** section: fork name, fork build tag, app version, upstream URL | `app/ui/LanguageSheet.jsx` |
| Copy (EN) | `about.title`, `about.detail`, `about.build`, `about.version`, `about.upstream` | `app/i18n/locales/en.json` |
| Copy (ID) | The same five keys, in Indonesian | `app/i18n/locales/id.json` |
| Branding | Fork banner and social preview (`assets/banner.svg`) | `assets/banner.svg` |
| Docs | Fork notice at the top of the README, this file, and `CHANGELOG.md` | `README.md` |
## Why `VERSION` is not bumped
`VERSION` is what the app compares against the upstream update feed. Changing it would make a
fork build claim a version the upstream feed has never published, and the updater would start
offering an update that does not exist. The fork therefore carries its own `BUILD` tag
(`mrlowpr.N`) instead, and `VERSION` stays `1.0.5` until upstream moves.
## Staying in sync with upstream
```bash
git remote -v # origin = this fork, upstream = MyLuxy/overdrive
git fetch upstream
git merge upstream/main # or rebase, your choice
```
Two conflicts are expected and both are mechanical:
- `app/version.js` — upstream may move `VERSION`; keep the fork's `BUILD`/`FORK`/`UPSTREAM`
exports when merging.
- `app/i18n/locales/en.json` and `id.json` — the `about.*` keys are appended at the end of
each catalog, so an upstream append lands next to them.
If a change here is worth having upstream, open a pull request against
[MyLuxy/overdrive](https://github.com/MyLuxy/overdrive) rather than letting it drift.
## Conventions
Upstream marks every deliberate deviation with a `// MODIFIED:` comment in the file header.
Fork-only changes continue that convention with an explicit `// MODIFIED (fork):` marker, so
the two sets of changes stay distinguishable in the diff.
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2026 Mr. Lowprofile
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+17
View File
@@ -1,3 +1,20 @@
<div align="center">
<img src="assets/banner.svg" alt="Overdrive — MrLowPr fork" width="100%">
</div>
> [!IMPORTANT]
> **This repository is a fork of [MyLuxy/overdrive](https://github.com/MyLuxy/overdrive).**
> Upstream is the original project and stays the source of truth for the app's behaviour;
> this fork exists to carry its own changes. Everything that is different here is listed in
> **[FORK-NOTES.md](FORK-NOTES.md)** and in [CHANGELOG.md](CHANGELOG.md).
> Credits go to [MyLuxy](https://github.com/MyLuxy) and the original contributors.
>
> **Install from this fork:** [latest fork release](https://github.com/MrLowPr/overdrive/releases/latest) ·
> [fork changelog](CHANGELOG.md) · [what changed here](FORK-NOTES.md).
> Upstream's builds are still the recommended ones unless you want a fork-only change.
<p align="center"> <p align="center">
<picture> <picture>
<source media="(prefers-color-scheme: dark)" srcset=".github/readme/logo-dark.svg"> <source media="(prefers-color-scheme: dark)" srcset=".github/readme/logo-dark.svg">
+9
View File
@@ -0,0 +1,9 @@
# Kebijakan Keamanan
## Melaporkan Kerentanan
Jangan membuka Issue publik untuk celah keamanan. Gunakan fitur
**Report a vulnerability** di tab Security:
https://github.com/MrLowPr/overdrive/security/advisories/new
Kami berusaha merespons dalam 3 hari kerja.
+6 -1
View File
@@ -452,5 +452,10 @@
"capture.validating": "Checking the captured file\u2026", "capture.validating": "Checking the captured file\u2026",
"capture.detail": "Don't press Download or any ad: the link is captured by itself and the download starts automatically. You have 3 minutes.", "capture.detail": "Don't press Download or any ad: the link is captured by itself and the download starts automatically. You have 3 minutes.",
"capture.link.title": "Download verification", "capture.link.title": "Download verification",
"capture.link.detail": "Pass the check: the link is captured by itself. Cancel any download the browser starts. You have 3 minutes." "capture.link.detail": "Pass the check: the link is captured by itself. Cancel any download the browser starts. You have 3 minutes.",
"about.title": "About this build",
"about.detail": "This build comes from a fork. Upstream stays the source of truth for how the store works.",
"about.build": "Build",
"about.version": "App version",
"about.upstream": "Upstream"
} }
+6 -1
View File
@@ -431,5 +431,10 @@
"versions.recommended": "Direkomendasikan · berjalan native di PS5", "versions.recommended": "Direkomendasikan · berjalan native di PS5",
"versions.sources": "{count, plural, other {# sumber}}", "versions.sources": "{count, plural, other {# sumber}}",
"versions.thisPage": "Halaman ini", "versions.thisPage": "Halaman ini",
"versions.title": "Pilih versi" "versions.title": "Pilih versi",
"about.title": "Tentang build ini",
"about.detail": "Build ini berasal dari fork. Proyek asli tetap jadi rujukan utama cara kerja toko.",
"about.build": "Build",
"about.version": "Versi aplikasi",
"about.upstream": "Proyek asli"
} }
+22 -1
View File
@@ -1,6 +1,8 @@
// ../pub-game-store/native/ui/LanguageSheet.jsx // ../pub-game-store/native/ui/LanguageSheet.jsx
// reconstructed from the esbuild bundle in eboot.bin // reconstructed from the esbuild bundle in eboot.bin
// MODIFIED: the sheet is the app's settings: a download speed limit, navigation vibration, then the languages. // MODIFIED: the sheet is the app's settings: a download speed limit, navigation vibration, then the languages.
// MODIFIED (fork): an "About this build" section after the languages, so a build from this fork is
// told apart from an upstream build: fork name, fork build tag, app version and the upstream URL.
import '../assets/Inter-Regular.ttf'; import '../assets/Inter-Regular.ttf';
import { Fragment, jsx, jsxs } from 'react/jsx-runtime'; import { Fragment, jsx, jsxs } from 'react/jsx-runtime';
@@ -12,6 +14,7 @@ import { SideSheet } from './SideSheet.jsx';
import { colors } from './colors.js'; import { colors } from './colors.js';
import { setNavigationHaptics, useNavigationHaptics } from './haptics.js'; import { setNavigationHaptics, useNavigationHaptics } from './haptics.js';
import { LIMITS, setSpeedLimit, useSpeedLimit } from '../state/speed-limit.js'; import { LIMITS, setSpeedLimit, useSpeedLimit } from '../state/speed-limit.js';
import { BUILD, FORK, UPSTREAM, VERSION } from '../version.js';
import { Text, View, useIsFocused } from '@ps5-react/core'; import { Text, View, useIsFocused } from '@ps5-react/core';
var nameOf = (code) => LOCALES.find((locale2) => locale2.code === code).name; var nameOf = (code) => LOCALES.find((locale2) => locale2.code === code).name;
@@ -62,6 +65,23 @@ import { Text, View, useIsFocused } from '@ps5-react/core';
text text
] }); ] });
} }
// MODIFIED (fork): the build's identity, read-only. A label and a value per row, so nothing here
// takes focus and the sheet stays a settings sheet.
function AboutRow({ label, value }) {
return /* @__PURE__ */ (0, jsxs)(View, { style: { flexDirection: "row", alignItems: "center", justifyContent: "space-between", gap: 24, paddingHorizontal: 18, paddingVertical: 9 }, children: [
/* @__PURE__ */ (0, jsx)(Text, { style: { fontFamily: "Inter-Regular", fontSize: 21, color: colors.muted }, children: label }),
/* @__PURE__ */ (0, jsx)(Text, { style: { fontFamily: "Inter-Regular", fontSize: 21, fontWeight: 600, color: colors.fg, flexShrink: 1, textAlign: "right" }, children: value })
] });
}
function AboutBuild() {
const t2 = useT();
return /* @__PURE__ */ (0, jsxs)(View, { style: { gap: 3, paddingBottom: 18 }, children: [
/* @__PURE__ */ (0, jsx)(SectionLabel, { icon: "package", title: t2("about.title"), detail: t2("about.detail") }),
/* @__PURE__ */ (0, jsx)(AboutRow, { label: t2("about.build"), value: `${FORK} · ${BUILD}` }),
/* @__PURE__ */ (0, jsx)(AboutRow, { label: t2("about.version"), value: `v${VERSION}` }),
/* @__PURE__ */ (0, jsx)(AboutRow, { label: t2("about.upstream"), value: UPSTREAM })
] });
}
function LanguageSheet({ onClose }) { function LanguageSheet({ onClose }) {
const t2 = useT(); const t2 = useT();
const choice2 = languageChoice(); const choice2 = languageChoice();
@@ -81,7 +101,8 @@ import { Text, View, useIsFocused } from '@ps5-react/core';
/* @__PURE__ */ (0, jsx)(Row4, { code: "system", name: t2("language.system"), detail: nameOf(systemLocale()), checked: choice2 === null, onPress: () => pick2(null) }), /* @__PURE__ */ (0, jsx)(Row4, { code: "system", name: t2("language.system"), detail: nameOf(systemLocale()), checked: choice2 === null, onPress: () => pick2(null) }),
LOCALES.map( LOCALES.map(
({ code, name }) => /* @__PURE__ */ (0, jsx)(Row4, { code, name, detail: t2(`language.name.${code}`), checked: choice2 === code, onPress: () => pick2(code) }, code) ({ code, name }) => /* @__PURE__ */ (0, jsx)(Row4, { code, name, detail: t2(`language.name.${code}`), checked: choice2 === code, onPress: () => pick2(code) }, code)
) ),
/* @__PURE__ */ (0, jsx)(AboutBuild, {})
] }) }); ] }) });
} }
+7 -2
View File
@@ -1,7 +1,12 @@
// ../pub-game-store/native/version.js // ../pub-game-store/native/version.js
// reconstructed from the esbuild bundle in eboot.bin // reconstructed from the esbuild bundle in eboot.bin
// MODIFIED: fork identity. VERSION stays the upstream app version so the update
// check keeps comparing against the upstream feed; BUILD is this fork's own
// build tag, shown in the settings sheet's "About this build" section.
var VERSION = "1.0.5"; var VERSION = "1.0.5";
var BUILD = "mrlowpr.1";
var FORK = "MrLowPr fork";
var UPSTREAM = "https://github.com/MyLuxy/overdrive";
export { VERSION }; export { VERSION, BUILD, FORK, UPSTREAM };
+39
View File
@@ -0,0 +1,39 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1280" height="640" viewBox="0 0 1280 640" role="img" aria-label="Overdrive — MrLowPr fork">
<defs>
<linearGradient id="bg" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#2b0a1a"/>
<stop offset="0.5" stop-color="#4a0f2a"/>
<stop offset="1" stop-color="#120a2e"/>
</linearGradient>
<linearGradient id="accent" x1="0" y1="0" x2="1" y2="0">
<stop offset="0" stop-color="#fb7185"/>
<stop offset="0.55" stop-color="#f472b6"/>
<stop offset="1" stop-color="#22d3ee"/>
</linearGradient>
<radialGradient id="glow" cx="0.75" cy="0.25" r="0.6">
<stop offset="0" stop-color="#f472b6" stop-opacity="0.28"/>
<stop offset="1" stop-color="#f472b6" stop-opacity="0"/>
</radialGradient>
<pattern id="dots" width="28" height="28" patternUnits="userSpaceOnUse">
<circle cx="2" cy="2" r="1.4" fill="#ffffff" fill-opacity="0.07"/>
</pattern>
</defs>
<rect width="1280" height="640" fill="url(#bg)"/>
<rect width="1280" height="640" fill="url(#dots)"/>
<rect width="1280" height="640" fill="url(#glow)"/>
<rect x="96" y="188" width="104" height="8" rx="4" fill="url(#accent)"/>
<text x="96" y="286" font-family="Inter, Segoe UI, Helvetica, Arial, sans-serif" font-size="88" font-weight="800" fill="#ffffff">Overdrive</text>
<text x="96" y="344" font-family="Inter, Segoe UI, Helvetica, Arial, sans-serif" font-size="30" fill="#e9d5e2">Your PS5 game store — rebuilt from its own binary</text>
<g transform="translate(96 392)">
<rect x="0" y="0" width="286" height="46" rx="23" fill="#f472b6" fill-opacity="0.16" stroke="#f472b6" stroke-opacity="0.55"/>
<text x="143" y="30" text-anchor="middle" font-family="Inter, Segoe UI, Helvetica, Arial, sans-serif" font-size="20" font-weight="700" fill="#fbcfe8">MrLowPr fork · v1.1.0</text>
</g>
<g font-family="Inter, Segoe UI, Helvetica, Arial, sans-serif" font-size="21" fill="#c9b6c4">
<text x="410" y="422">Fork of MyLuxy/overdrive · full source, rebuilt UI</text>
</g>
<text x="96" y="560" font-family="Inter, Segoe UI, Helvetica, Arial, sans-serif" font-size="22" fill="#a78b9a">github.com/MrLowPr/overdrive</text>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB