README.md
September 22, 2026 · View on GitHub
Morphe Patch Tracker
Automated compatibility, patch discovery & update monitoring for Morphe patches
What is this?
Morphe Patch Tracker monitors the Morphe patch ecosystem — tracking 210+ patch sources across GitHub and GitLab, detecting compatibility changes, and presenting everything in a real-time dashboard. The pipeline runs every 3 hours via GitHub Actions, auto-discovers new patch authors, and generates a static site hosted on Vercel.
Inspired by awesome-for-morphe by @nvbangg.
Features
Pipeline
|
Dashboard
|
Tech Stack
|
React 18 UI Framework |
TypeScript 5 Type Safety |
Vite 5 Build Tool |
Python 3.11 Pipeline Engine |
GitHub Actions CI/CD |
Vercel Hosting |
Quick Start
# Clone
git clone https://github.com/drnx64/morphe-track-patches.git
cd morphe-track-patches
# Install dependencies
npm install
# Start dev server (serves data/ via Vite plugin)
npm run dev
# In another terminal — run the pipeline (needs GITHUB_TOKEN)
export GITHUB_TOKEN=ghp_...
python scripts/run_pipeline.py
The dev server uses a custom Vite plugin to serve
data/files. Never usefile://— always usenpm run dev.
How It Works
The pipeline runs every 3 hours and follows these steps:
graph TD
A[Fetch Registry Tree] -->|fetch_patch_tree.py| B[Tree Output]
B -->|download_bundles.py| C{Is Morphe Bundle?}
C -->|No / non-.mpp| D[Skip Bundle]
C -->|Yes / .mpp| E[Download Bundle & List Json]
E -->|fetch_external_repos.py| E1{Fetch repos.txt from<br/>morphe-archive}
E1 --> E2[Parse & compare<br/>against Jman bundles]
E2 --> E3{Repo already<br/>tracked?}
E3 -->|Yes| E4[Skip]
E3 -->|No| E5[Download patches-bundle.json<br/>& patches-list.json<br/>from raw.githubusercontent.com]
E5 --> E6[Fetch GitHub releases<br/>for stable/dev channels]
E6 --> E7[Save to data/raw/bundles/<br/>same format as Jman]
E7 -->|parse_bundles.py| F[Extract Repos & Unique Apps]
F -->|icon_fetcher.py| G[Enrich with Play Store Icons]
G -->|fingerprint_engine.py| H[Generate Hashes]
H -->|diff_engine.py| I{Has Changes?}
I -->|No & No Rollover| J[Exit Silently]
I -->|Yes| K[Update Daily Buffer]
K -->|merge_daily_buffer.py| L[Update live.json + changelog.json]
L -->|generate_site.py| N[Sync Static Files]
N -->|sw.js| O[Service Worker Caches Data]
Pipeline Steps
| # | Step | Script | What it does |
|---|---|---|---|
| 1 | Discovery | fetch_patch_tree.py | Crawls Jman-Github/ReVanced-Patch-Bundles via GitHub Git Trees API |
| 2 | Download | download_bundles.py | Filters .mpp bundles, downloads with skip cache + atomic swap |
| 2b | External | fetch_external_repos.py | Fetches community repos.txt, discovers untracked patch sources |
| 3 | Parse | parse_bundles.py | Extracts repos, apps, compatibility lists from bundles |
| 4 | Icons | icon_fetcher.py | Scrapes Google Play Store icons with persistent cache |
| 5 | Diff | diff_engine.py | SHA-256 fingerprints, detects additions/updates/removals |
| 6 | Merge | merge_daily_buffer.py | 24h change windowing, computes stats, writes core.json |
| 7 | Sync | generate_site.py | Preserves files across CI checkouts |
Data Flow
GitHub API → download → parse → fingerprint → diff → daily buffer → JSON files → frontend
Repository Layout
MorpheTracker/
├── src/ # React frontend (TypeScript)
│ ├── components/ # UI components
│ ├── context/ # AppContext with useReducer
│ ├── hooks/ # useDataFetching, useEntries
│ ├── services/ # fetchData, iconCache, indexedDB
│ ├── types/ # Bundle, Changes, API types
│ └── utils/ # SVG icons, helpers
├── scripts/ # Python pipeline engine
│ ├── run_pipeline.py # Main orchestrator
│ ├── fetch_patch_tree.py # Registry tree crawler
│ ├── download_bundles.py # Bundle downloader + skip cache
│ ├── parse_bundles.py # Bundle parser
│ ├── icon_fetcher.py # Play Store icon scraper
│ ├── diff_engine.py # Change detection + badges
│ ├── merge_daily_buffer.py # Change windowing + stats
│ └── config.py # Shared constants
├── data/ # Generated JSON (tracked)
│ ├── bundles/ # Per-bundle metadata
│ ├── core.json # Aggregated app data
│ ├── changes.json # Latest detected changes
│ ├── stats.json # Global statistics
│ └── state/ # Pipeline state (gitignored)
├── assets/ # CSS styles (~6000 lines)
├── public/ # Service worker, favicon, msg.txt
├── tests/ # 30 pytest tests
├── .github/workflows/ # CI checks + auto-update pipeline
├── index.html # Dashboard entry point
└── vercel.json # SPA fallback routing
Credits
All Patch Authors — 210+ repos and growing
Thanks to every developer who publishes Morphe patches. The full up-to-date list is maintained in data/repos_list.txt.
Missing or new? Check data/repos_list.txt for the most current list.
Core Contributors
![]() @nvbangg awesome-for-morphe |
![]() @rushiforai morphe-archive |
![]() @Jman-Github ReVanced-Patch-Bundles |
Star History
Star history chart powered by star-history
Built with ❤️ for the Morphe community


