mirror of
https://github.com/MrLowPr/overdrive.git
synced 2026-10-17 16:02:05 +02:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
48f86c590c | ||
|
|
a672a19b33 |
No files matched your search
@@ -0,0 +1,5 @@
|
|||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: github-actions
|
||||||
|
directory: /
|
||||||
|
schedule: { interval: weekly }
|
||||||
@@ -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
|
||||||
@@ -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 }}"
|
||||||
@@ -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.
|
||||||
@@ -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.
|
||||||
@@ -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
|
||||||
@@ -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.
|
||||||
@@ -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.
|
||||||
@@ -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">
|
||||||
|
|||||||
@@ -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.
|
||||||
@@ -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"
|
||||||
}
|
}
|
||||||
@@ -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"
|
||||||
}
|
}
|
||||||
@@ -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
@@ -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 };
|
||||||
@@ -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 |
Reference in new issue
Block a user