phigros-data-editor

Change your Data. Leave every other byte alone.

A small command-line tool for Phigros players. It reads your cloud save, shows your Data and changes only the numbers you ask for. It makes a backup, shows a preview, and checks the cloud after every upload.

Data 705 KiB · 0 MiB · 0 GiB · 0 TiB · 01 PiB

Decrypted gameProgress. The money values come from a real run; the bytes around them are illustrative.

Before you start

Tested end-to-end on the Global edition in September 2026. CN players can use it with --server cn.

You need

  • Bun 1.1+ or Node.js 18.3+
  • Your cloud save, synced from the game at least once
  • The game's .userdata file, a small JSON file it keeps in its app data after you sign in with TapTap
git clone https://github.com/SvnFrs/phigros-data-editor.git
cd phigros-data-editor && bun install
Keep it private

.userdata contains your sessionToken. Anyone who has it can act as your account. Never share it or commit it.

phigros-data-editor reads only that token. The repo ignores .userdata and backups/ by default. You can also pass the token in PHIGROS_SESSION_TOKEN so it doesn't have to sit in a file.

A run, start to finish

Each step only runs when you type the next command. Nothing is uploaded until you add --apply.

  1. Read

    Read-only

    Downloads your save, writes a backup to backups/ and prints your Data. Check it against the number the game shows.

    bun bin/phigros-data-editor.js .userdata
    Server   global (https://kviehlel.cloud.ap-sg.tapapis.com/1.1)
    Save     updated 2026-09-16T14:36:33.806Z
    Backup   backups/backup-1789571645191.zip
    Entries  gameKey v3, gameProgress v4, gameRecord v1, settings v1, user v1
    Money    705 KiB, 0 MiB, 0 GiB, 0 TiB, 0 PiB
  2. Preview

    Dry run

    Set any unit from 0 to 1023. Units you leave out keep their value. Without --apply you only see the result.

    bun bin/phigros-data-editor.js .userdata --pib 1
    Money    705 KiB, 0 MiB, 0 GiB, 0 TiB, 0 PiB
    
    Dry run: money would become 705 KiB, 0 MiB, 0 GiB, 0 TiB, 1 PiB.
    Re-run with --apply to upload.
  3. Apply

    Writes to the cloud

    Patches only the money bytes, proves nothing else changed, uploads, then downloads the save again to check it.

    bun bin/phigros-data-editor.js .userdata --pib 1 --apply
    Patch    self-check passed, only the money bytes changed
    Upload   done, reading the save back from the cloud
    Money    705 KiB, 0 MiB, 0 GiB, 0 TiB, 1 PiB
    
    Verified.

Then, in the game: download your save from the cloud. If the game uploads your local save first, it overwrites the change.

What it won't do

Your save is your progress. These are the checks that stop a run before it can damage it.

  • Touch someone else's save

    It confirms your token with the server, asks only for saves owned by that account and checks the owner again. A query that isn't filtered by user also returns strangers' saves.

  • Upload without --apply

    A normal run only reads. Money flags on their own give you a preview.

  • Change bytes you didn't ask for

    It re-reads the patched archive and compares it with the original. Every other entry, and every byte outside the money range, must be identical.

  • Skip the backup

    Every run saves the current cloud copy to backups/ before doing anything else, and a restore backs up again before overwriting.

  • Restore the wrong backup

    Backups from another account, or with a checksum that doesn't match, are refused.

  • Report success without checking

    Downloads are checked against the cloud's MD5. After an upload, the save is read back and compared with what you asked for.

Undo a change

Every run leaves a .zip and .json pair in backups/. Point --restore at one to see what it contains, then add --apply to put it back.

Before uploading the backup, it saves your current cloud save too, so a restore can itself be undone.

bun bin/phigros-data-editor.js .userdata --restore backups/backup-1789571645191
bun bin/phigros-data-editor.js .userdata --restore backups/backup-1789571645191 --apply

Options

OptionWhat it does
--kib --mib --gib --tib --pib <n>Set that unit to n, from 0 to 1023. Units you leave out keep their current value.
--applyWrite to the cloud. Without it, nothing is uploaded.
--restore <backup>Upload a backup instead of editing. The path works with or without .zip.
--server <global|cn>Which game edition's server to use. Default: global.
--backup-dir <dir>Where backups are written. Default: backups.
--forceAllow writing a gameProgress format newer than v4, the latest one checked.
-h, --helpShow all options.

When a run stops

Each error explains what went wrong. Here's what to do next.

session token rejected by …
The token doesn't belong to that server, or it expired. Check --server (Global is the default), or sign in again in the game and copy a fresh .userdata.
no cloud save found for this account
Sync your save to the cloud in the game, then run the command again.
network error contacting …
The request never reached the server. Run the same command again.
gameProgress vN is newer than the verified v4
The game changed its save format. Reading still works; don't write until the new layout has been checked.
file upload failed, cloud save unchanged
Nothing changed in the cloud. Try again later.
cloud save does not match the requested money
Put the previous save back with the --restore … --apply command in the message.