24 Commits
Author SHA1 Message Date
aydencharles 56b62ab482 fix(cheats): preserve UTF-8 when truncating names 2026-09-23 14:33:57 +08:00
aydencharles ac143c20c4 refactor(cheats): separate browse and runtime state 2026-09-09 12:42:13 +08:00
aydencharles 75ab94f408 refactor(cheats): unify game version resolution in the daemon 2026-09-03 15:07:19 +08:00
Hexwell 10779c1b05 fix(cheats): unescape titles and localize toasts 2026-08-31 06:25:04 +08:00
Hexwell 6803b4a7d5 refactor(cheats): copy HENCC files without renaming 2026-08-31 05:55:18 +08:00
Hexwell a92e8a6a39 refactor(cheats): drop deprecated hash aliases 2026-08-31 05:32:08 +08:00
Hexwell 7092dd6b85 feat(cheats): load all compatible sources together 2026-08-24 14:06:14 +08:00
Hexwell 73e2797e1b fix(cheats): make sync cancellation responsive 2026-08-19 16:43:28 +08:00
Hexwell 440c867974 fix(cheats): cancel sync when progress page closes 2026-08-19 15:52:13 +08:00
Hexwell 2f95e4df9a chore(cJSON): unify JSON parsing and serialization with cJSON 2026-08-19 14:56:25 +08:00
Hexwell aa604655a5 fix(cheats): improve download status feedback 2026-08-19 14:28:18 +08:00
Hexwell c36641d3b4 fix(cheats): show downloaded file size progress 2026-08-18 23:48:10 +08:00
Hexwell 994944a43f chore(cheats): cheats download page UI 2026-08-18 22:42:38 +08:00
Hexwell 7ea2ba30c5 feat(cheats): sync cheat catalogs over HTTPS zip download
Replace the git clone/fetch pipeline with a curl + miniz HTTPS
ZIP download. The engine streams one archive, extracts only the
catalog roots, and reuses flatten to install flat files, so the
libgit2 submodule and its build integration are gone.

Drop the pre-download reachability probe and the commit-SHA
parser; reachability is implied by the download itself and the
SHA only fed the old git flow. Mirror selection stays in
CheatMirrorFactory (auto: cnb.cool for zh-Hans, GitHub otherwise;
explicit github/cnb skips fallback).

curl verifies peer+host against the embedded CA bundle and now
distinguishes certificate time-skew from other verification
failures, surfacing a dedicated clock notification. Revert the
util CMake target back to "util" now that libgit2 no longer
claims that name.
2026-08-18 15:41:08 +08:00
Hexwell c5e30c4fd0 feat(cheats): add toolbox download UI and HTTP probe
Expose catalog download on the Game Tools page and put the
mirror picker in Preferences. Probe gstatic/miui generate_204
before clone so auto can pick GitHub or cnb.cool by reachability.

Also fix the CNB slug, rename the util CMake target so it no
longer clashes with libgit2, and keep last-error text off the
download button.
2026-08-18 12:38:27 +08:00
Hexwell 456c834f00 feat(cheats): add git catalog sync with host mirrors
Bring back DOWNLOAD_CHEATS as a background git clone/fetch of
cheat catalogs, then reuse flatten to install flat files.
Catalog identity and GitHub/cnb.cool mirrors stay in separate
modules so a new source does not rewrite the download pipeline.

auto mirror uses cnb.cool for zh-Hans and GitHub otherwise;
explicit github/cnb skips fallback. libgit2 is an optional
submodule (v1.8.4); without it the client stays a stub.
2026-08-18 12:00:16 +08:00
Hexwell 94c8d3ee92 fix(cheats): load TITLE_VERSION_PROCESS_HASH files
Collection dumps name files TITLE_VERSION[_PROCESS][_HASH].ext.
The old lookup either missed process-scoped names or rejected
multiple hashes, so most dumped trainers never loaded.

Parse process and hash as optional fields, prefer a process match,
and keep hashed variants when the running hash is unknown.
2026-08-18 11:46:29 +08:00
Hexwell 5b06505b59 fix(cheats): load TITLE_VERSION_HASH cheat files #12
Files such as PPSA17168_01.004.000_97905f51.json did not match
the exact TITLE_VERSION.ext lookup, so the current game showed
no cheats.

Closes: #12
2026-08-17 16:40:45 +08:00
Hexwell b2eef5a116 style: normalize source filenames to snake case 2026-07-16 17:34:31 +08:00
Hexwell aad2cdaabc refactor: rebrand OrionHEN to OnionHEN
Rename product, namespaces, libraries, paths, and assets from Orion/orion
to Onion/onion across the tree. TCP stack-shutdown magic is now ONIO
(0x4F4E494F) to match the corrected branding.
2026-07-15 18:23:16 +08:00
Hexwell 0c27d01108 fix(cheats): surface file authors on the cheats page
Parse credits/authors (JSON), Moder (SHN/MC4), and per-entry author
(ShnExt) into orion_cheat_file_t, then export them in writeListJson so
ShellUI can show "金手指作者" instead of an empty list.
2026-07-10 23:42:32 +08:00
Hexwell f81c7a88d4 test: expand host unit coverage for pure OrionHEN modules
Extract host-testable helpers (GitHub commit SHA, account-id base64,
registry entity ids, playtime store, cheat flatten names, toolbox path
helpers, IPC reply body) and grow the util host suite to ~120 cases.
Also phase-split bootstrapper main for clearer launch diagnostics.
2026-07-10 17:09:54 +08:00
Hexwell 793719abf4 refactor(cheats): C++ service/parsers and remove RELOAD index cache
Move util cheats orchestration to C++ (CheatService, Repository, Applier,
IMemoryBackend, ICheatParser factory for json/shn/mc4 with ShnExt C adapter).
Drop the obsolete RELOAD_CHEATS UI/IPC path; reloads use file-signature hot
reload only. Document util cheats architecture under docs/util_arch.
2026-07-10 14:06:42 +08:00
Hexwell de590a5e9c feat(util): replace CheatManager with flat-file cheat engine
Remove the old txt-index CheatManager and mc4decrypter path. Add a flat
TITLE_VERSION cheat engine supporting json/shn/mc4/ShnExt, mdbg/kdirect memory
writes, hot reload, and repo flatten install. Wire util IPC and build/link
keystone for ShnExt assembly.
2026-07-10 13:47:26 +08:00