English | 简体中文
A zero-backend, beautifully crafted GitHub Star bulk manager.
✨ Try Live Demo ✨
"When we were young and naive, it was inevitable to fall for the wrong person.
When we were noobs back in the day, browsing GitHub inevitably led us to star some random weird repos.
It doesn’t matter if you loved the wrong one or starred the wrong stuff.
Abandon old loves will cure your OCD right away."
- Zero-Backend Architecture: Your token stays with you. All GraphQL requests are fired directly from your browser to the Official GitHub API.
- Fort Knox Security: Need to keep yourself logged in? We use Web Crypto API (AES-GCM) to encrypt your Personal Access Token locally with a custom passkey. No plaintext leaks.
- Mass Unstar Engine: A sophisticated async-queue system with concurrency limits and jitter to navigate GitHub's strict rate limits safely. Perform mass unstars seamlessly.
- Rich Filtering: Hunt down those ancient, unmaintained repos. Sort active repositories by
Pushed AtorUpdated At. Filter out repos inactive for > X days and execute mass-unstar. - Multi-Language & Theming: Built-in, zero-dependency localization (English / 中文) and slick Dark/Light mode tracking, paired with a gorgeous UI built on shadcn/ui.
- Core: React 18 / TypeScript / Vite
- State Management: Zustand
- Styling: Tailwind CSS v3 / shadcn UI / Lucide Icons
- Data Fetching: GraphQL Request (
graphql-request) - I18n: i18next & react-i18next
https://hizzyishome.github.io/AbandonOldLove/
You will need Node.js (v18+) and npm installed.
Clone the repository and install dependencies:
git clone https://github.com/your-username/AbandonOldLove.git
cd AbandonOldLove
npm installRun the local Vite server:
npm run devNavigate to http://localhost:5173.
Important: This app heavily relies on the browser's
SubtleCryptoAPI for local token encryption. This API is ONLY available onlocalhostor via HTTPS.
In order to manage your stars, AbandonOldLove requires a Personal Access Token:
- Go to your GitHub Token Settings.
- Generate a Classic Token (Do not use Fine-Grained tokens as they cannot manage global repo stars).
- Ensure the scopes
repoorpublic_repoandread:userare checked.
- First time: Paste your PAT and uniquely create a local passkey. The App encrypts the PAT via AES-GCM and stores the ciphertext in your browser's localStorage.
- Returning: Just type your passkey to locally decrypt the vault and log in without fetching the token again.
- Filter & Sort: Use the top bar to toggle whether "activity" is determined by Developer Pushing (
Pushed At) or General Updates (Updated At). - Single Unstar: Click standard
Unstaractions and review the prompt. - Batch Execution: Enter a threshold (e.g.,
1000days). It will automatically isolate all repos that have had no push/update in over 1000 days. Click the Batch Unstar warning button to rapidly cleanse your list!
- Fine-Grained Tokens ARE NOT SUPPORTED. GitHub's current specification for fine-grained permissions prevents cross-organization star management. You will face a "Resource not accessible by personal access token" error if you use them. Stick to Classic PATs!
MIT License. Created to cure our GitHub Star OCD.