mewcat_tracker is a companion planning tool for Mewgenics.
It is designed to run alongside the game and help players make faster breeding decisions by organizing cats into rooms, surfacing strong pairings, and reducing manual comparison work.
This project is not a cheat tool, save editor, or gameplay automation layer. It does not modify cats or write changes back into the game.
- decode a supported Mewgenics
.savfile into CSV from the web UI - import cat CSV data into a browser-based planner
- decode save-derived cat status and authoritative sex into planner-friendly CSV columns
- sort and filter cats by status, sex, name, total stats, and individual stats
- group cats into rooms with drag-and-drop or quick-move controls
- highlight strong pairings based on complementary perfect 7s and overall stat ceilings
- auto-assign eligible unassigned cats using the current heuristic planner
- save and reload room plans as JSON files
- React 19
- TypeScript 5
- Vite 7
- Material UI 7
- PapaParse
- Python 3.11+ for save decoding
- Node.js 20+ recommended
- npm 10+ recommended
You need all of the following to use the full workflow:
- A local Node.js + npm environment to run the web app.
- A local Python installation available from the command line as
pythonorpy -3. - A Mewgenics
.savfile that is actually an SQLite save database supported bydecompress.py. - A modern browser.
Important limitation:
- The
.savdecode button works through the local Vite server middleware. The browser cannot run Python directly. - Because of that, the decode flow is intended for local development or local personal use, not static hosting.
From the repo root:
cd mewcat_tracker
npm install
cd ui
npm installNotes:
- The root
package.jsonis minimal. Most app work happens insideui/. decompress.pycurrently uses Python standard library modules only, so there is no separate Python dependency install step.
Start the frontend from ui/:
npm run devThen open:
http://localhost:5173/
If you change the Vite middleware or .sav decode flow, restart the dev server.
- Start the app with
npm run devfromui/. - Click
Decode .sav. - Select the Mewgenics save file.
- The app will run
decompress.pylocally and write a CSV intodecoded_csv/. - Clean up the generated CSV if needed.
- Click
Import cats CSVand load that file into the planner.
- Start the app with
npm run devfromui/. - Click
Import cats CSV. - Load a compatible CSV.
The planner expects these important columns:
keynamestatusgendergender_sourcetokentoken_kindtoken_idstats_endianSTRDEXCONINTSPDCHALCKerror
Rows with a populated error field are treated as invalid in the planner UI.
status is decoded from the save file's house_state and adventure_state
tables and will be one of In House, Adventure, or Gone when present.
gender is the field the planner should use for sex-based filtering. token,
token_kind, and token_id are preserved as raw save-token metadata and should
not be treated as authoritative sex data.
The current decoder does not yet extract sexual preference / compatibility flags
from the save format.
- drag cats into rooms
- rename rooms
- remove rooms
- run with fewer than 3 rooms
- exclude individual cats from auto-assign
- automatically treat
Gonecats as unavailable for auto-assign - save room plans to JSON
- reload room plans later
From ui/:
npm run dev
npm run build
npm run lint
npm run previewFrom the repo root:
python decompress.py --helpManual decode example:
python decompress.py steamcampaign01.sav --csv decoded_csv/output.csvThe app currently stores some planner state in browser local storage:
- room assignments
- room names
- auto-assign eligibility toggles
The app does not currently persist:
- imported CSV data across reloads
- search state
- sort state
- filter state
mewcat_tracker/
|- README.md
|- LLM_CONTEXT.md
|- decompress.py
|- ui/
| |- package.json
| |- vite.config.ts
| `- src/
| |- App.tsx
| |- main.tsx
| |- theme.ts
| `- features/planner/
|- decoded_csv/ # generated when using .sav decode from the app
`- cats.csv / curr_cats.csv / *.sav
- Breeding analysis is heuristic-based, not a guaranteed exact simulation of the game.
- Auto-assign is heuristic-based and not guaranteed globally optimal.
- The app does not write room decisions back into Mewgenics.
- The
.savdecode workflow depends on the local Vite server. - There is no committed automated Playwright test suite yet.
Check all of the following:
npm run devis running fromui/- Python is installed and accessible as
pythonorpy -3 - the selected file is a valid supported Mewgenics
.sav
That is expected for some saves or edge cases. Clean the CSV manually, then import it
with Import cats CSV.
That is expected. Mewgenics saves include historical cats as well as current ones. Use
the status filter and switch to Alive, In House, or Adventure to focus on active
cats.
Room names and assignments are stored in browser local storage. Use Clear rooms or
load a different room plan JSON file.
- Planner UI code lives in
ui/src/features/planner/. LLM_CONTEXT.mdis the persistent memory file intended for future LLM sessions.- If you make meaningful product, workflow, or architecture changes, update both this
README and
LLM_CONTEXT.md.