Sync LeetCode, Codeforces, and other supported platforms to GitHub and the A2SV tracking sheet.
Here is the quick start guide to get you up and running. (Note: For a detailed, picture-by-picture guide, check our GitHub repository linked at the bottom).
Before installing, make sure you have a Public Repository created on your GitHub account (e.g., a2sv-solutions, my-solutions,....). Note: If you don't have one, the extension will try to create it for you, but having one ready is safer!
- Download the extension folder.
- Open Chrome and navigate to chrome://extensions.
- Toggle Developer mode (top right) to ON.
- Click Load unpacked and select the dist folder from the extension files. 📌 Pro Tip: Pin the extension to your toolbar immediately!
- Build Firefox package:
npm run package:firefox
- Open Firefox and go to
about:debugging#/runtime/this-firefox. - Click Load Temporary Add-on.
- Select
dist/manifest.json.
Note: Temporary add-ons are removed when Firefox closes. Reload from about:debugging when needed.
- Click the extension icon and open the Settings/Popup.
- Enter your details exactly as they appear on the progress sheet:
- Full Name (Case sensitive!)
- GitHub Handle & Email
- Repo Name & Group Name (e.g., G7A)
- Click Connect GitHub, authorize the app, close the success tab, and hit SAVE.
LeetCode: You’ll see a Sync button near the submit area. Enter your Trial/Time and click!
Codeforces: Go to your My Submissions page. Enter your Trial/Time. Click the ⚡️ Sync button on any "Accepted" row.
Other Platforms: Use the draggable A2SV popup to fill in your info and submit. Fallback: If "Sync" ever fails, click the Fallback button to manually paste your code and submit.
Sit back. The extension automatically pushes your code directly to your GitHub repo AND logs your submission link and time into the Google Sheet!
- Exact match required: Your name must match the Google Sheet exactly, otherwise you will get a "Student not found" error.
- "Question not found" error: Make sure the problem is actually on the sheet. If it is, wait a moment and retry.
- "Unauthorized / GitHub token missing": Go to settings and reconnect your GitHub.
- If the Submit button isn’t appearing, refresh the problem page.
- One‑click sync to GitHub and Google Sheets
- Trial/time tracking per submission
- LeetCode and Codeforces enhanced UI
- Fallback panel for other platforms
- Install dependencies:
npm install - Build the extension:
- Chrome/Chromium:
npm run package - Firefox:
npm run package:firefox
- Chrome/Chromium:
- Open Chrome → Extensions → Enable Developer Mode.
- Load Unpacked → select the
distfolder (Chrome MV3 build).
- Run
npm run package:firefox. - Open
about:debugging#/runtime/this-firefox. - Click Load Temporary Add-on and choose
dist-firefox/manifest.json.
- Open the extension popup.
- Enter email, name, GitHub handle, group name, and optional repo name.
- Click Connect GitHub.
- Click Save settings.
- LeetCode: open a problem, set Trial/Time, click Sync.
- Codeforces: open “My Submissions”, click Sync on accepted rows.
- Other platforms: use the fallback button.
- Build only:
npm run package - Build + obfuscate:
npm run package -- --obfuscate(ornpm run package:obfuscate) - Output:
dist.zipin the repo root
- Build legacy package:
npm run package:legacy - Build legacy package + obfuscate:
npm run package:legacy:obfuscate - Output:
dist-legacy.zipin the repo root
For unpacked install on old Chromium builds, load from dist-legacy.
Use this only for older Chromium-based browsers that fail with "unsupported manifest version". Your main package remains MV3 and is unchanged.
- Build Firefox package:
npm run package:firefox - Build Firefox package + obfuscate:
npm run package:firefox:obfuscate - Output:
dist-firefox.zipin the repo root
- Ensure the backend is running and you’ve connected GitHub successfully.
- If you update the extension, reload the unpacked extension and refresh the tab.
- Firefox note: some Firefox channels disable MV3
background.service_worker; usenpm run package:firefoxfor compatibility.



