{"id":37729924,"url":"https://github.com/rxm96/droppilot","last_synced_at":"2026-06-13T03:11:41.125Z","repository":{"id":332649238,"uuid":"1134183836","full_name":"rxm96/droppilot","owner":"rxm96","description":"Hands-off Twitch Drops automation for the desktop — tracks inventory, auto-watches and switches streams, and auto-claims drops. Electron + React + TypeScript.","archived":false,"fork":false,"pushed_at":"2026-06-11T14:00:02.000Z","size":4667,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-11T15:28:00.282Z","etag":null,"topics":["automation","desktop-app","drops","electron","react","twitch","twitch-drops","typescript"],"latest_commit_sha":null,"homepage":"https://github.com/rxm96/droppilot/releases","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rxm96.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-14T11:16:49.000Z","updated_at":"2026-06-11T14:08:03.000Z","dependencies_parsed_at":"2026-03-06T20:01:38.783Z","dependency_job_id":null,"html_url":"https://github.com/rxm96/droppilot","commit_stats":null,"previous_names":["rxm96/droppilot"],"tags_count":117,"template":false,"template_full_name":null,"purl":"pkg:github/rxm96/droppilot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rxm96%2Fdroppilot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rxm96%2Fdroppilot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rxm96%2Fdroppilot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rxm96%2Fdroppilot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rxm96","download_url":"https://codeload.github.com/rxm96/droppilot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rxm96%2Fdroppilot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34270485,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","desktop-app","drops","electron","react","twitch","twitch-drops","typescript"],"created_at":"2026-01-16T13:48:29.316Z","updated_at":"2026-06-13T03:11:41.113Z","avatar_url":"https://github.com/rxm96.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DropPilot\n\n\u003e **Download:** Grab the latest Windows installer from\n\u003e [GitHub Releases](https://github.com/rxm96/droppilot/releases).\n\nDropPilot is a desktop app that automates Twitch Drops — quietly, in the\nbackground, while staying transparent about what it's doing. It tracks your drop\ninventory, picks and watches an eligible stream, switches when that stream goes\ndown, and (optionally) claims drops for you.\n\n## Features\n\n- **Live inventory** — drop progress, claim status, and per-drop ETA in real time.\n- **Target + priority** — build a priority list of games; the app focuses on the\n  most important actionable game and rotates through the list.\n- **Auto-watch** — auto-selects a stream, auto-switches when the current one\n  disappears, and recovers from stalls (no watch-time progress) on its own.\n- **Auto-claim** (optional) — claims completed drops and keeps an activity audit.\n- **Warmup mode** (optional) — briefly watches a stream to discover drops when no\n  priority game is currently active.\n- **Alerts** — new drops, auto-claim, drop ending soon, watch errors.\n- **Browser-based login** — no credentials are stored by the app.\n- **Demo mode** — explore the full UI without a live Twitch account.\n- **Debug tools** — live logs, a state snapshot, and perf/CPU sampling (off by default).\n\n## Screenshots\n\n\u003e Dark theme with demo data.\n\n| Overview | Stats |\n| --- | --- |\n| [![Overview](docs/screenshots/overview.png)](docs/screenshots/overview.png) | [![Stats](docs/screenshots/stats.png)](docs/screenshots/stats.png) |\n| **Inventory** | **Control** |\n| [![Inventory](docs/screenshots/inventory.png)](docs/screenshots/inventory.png) | [![Control](docs/screenshots/control.png)](docs/screenshots/control.png) |\n\n## Tech stack\n\nElectron 40 · React 19 · Vite 7 · TypeScript · Tailwind CSS v4 · Vitest\n\n## Quick start\n\n```bash\nnpm install\nnpm run dev      # launches the app (Vite + Electron, hot reload)\n```\n\nThe most common scripts:\n\n| Script | Purpose |\n| --- | --- |\n| `npm run dev` | Run the app in development (hot reload) |\n| `npm run build` | Build the renderer (`dist/`) + main \u0026 preload (`dist-electron/`) |\n| `npm test` | Run the test suite (Vitest); `npm run test:watch` to watch |\n| `npm run lint` | ESLint |\n| `npm run format` | Prettier (`format:check` to verify) |\n\nFor local-dev details, testing conventions, commit style, and the release process,\nsee [`CONTRIBUTING.md`](CONTRIBUTING.md).\n\n## How it works\n\nDropPilot is a standard three-layer Electron app:\n\n- **`src/main`** — Electron main process: app lifecycle, the IPC handlers, JSON\n  persistence in the user-data directory, and the entire Twitch integration\n  (`src/main/twitch`: GQL client, high-level service, live PubSub events, channel\n  tracking, watch-minute pings). **All network calls happen here**, never in the\n  renderer.\n- **`src/preload`** — the context-bridge that exposes `window.electronAPI`.\n- **`src/renderer`** — the React UI. `shared/hooks/app/useAppModel.ts` is the\n  central hook that composes auth, inventory, channels, watch ping, priority, and\n  stats into the app state the views render.\n\nThe trickiest subsystem is the **watch engine** (auto-select / auto-switch / stall\nrecovery / target suppression). It's documented in\n[`docs/watch-engine.md`](docs/watch-engine.md), with an end-to-end sequence diagram\nin [`docs/watch-flow.puml`](docs/watch-flow.puml).\n\n## Releases \u0026 updates\n\nReleases are published to GitHub Releases (Windows `.exe` + macOS artifacts) and\nbuilt by CI when a `v*` tag is pushed. The app auto-updates on Windows and offers\ntwo channels — **stable** and **preview** — selectable in Settings → Updates, which\nalso shows the in-app release history. See `CONTRIBUTING.md` for how to cut a release.\n\n## Configuration \u0026 data\n\nSettings and stats are stored as JSON in the Electron user-data directory\n(`settings.json`, `stats.json`) and managed through the in-app Settings view.\n\n## Debug tools\n\nThe Debug tab is **off by default** to keep background work minimal. Enable it in\nSettings → **Debug tools**. Debug logs are only collected while it's on; perf and\nCPU snapshots appear in the Debug snapshot.\n\n## Troubleshooting\n\n- **\"Not logged in\"** → use **Login with browser** in the top bar.\n- **App feels slow** → disable the Debug tab and restart.\n- **Need verbose logs** → enable Debug tools in Settings.\n\n## Acknowledgements\n\nDropPilot's drop-mining approach is heavily informed by\n[**Twitch Drops Miner**](https://github.com/DevilXD/TwitchDropsMiner) by\n[DevilXD](https://github.com/DevilXD). Much of the core behavior — stream-less\nwatch pings, drop/campaign validation, automatic channel switching, and\nPubSub-based status tracking — is derived from that project. Huge thanks to\nDevilXD and the Twitch Drops Miner contributors.\n\nTwitch Drops Miner is MIT-licensed (Copyright © 2024 DevilXD); its license is\nreproduced in [`THIRD_PARTY_NOTICES.md`](THIRD_PARTY_NOTICES.md).\n\n## License\n\nMIT\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frxm96%2Fdroppilot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frxm96%2Fdroppilot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frxm96%2Fdroppilot/lists"}