https://github.com/veeso/unipegaso-autoplay
Firefox extension that automatically skips to the next lesson on Unipegaso video lesson pages when the current one is completed.
https://github.com/veeso/unipegaso-autoplay
firefox firefox-extension unipegaso unipegaso-autoplay
Last synced: 2 months ago
JSON representation
Firefox extension that automatically skips to the next lesson on Unipegaso video lesson pages when the current one is completed.
- Host: GitHub
- URL: https://github.com/veeso/unipegaso-autoplay
- Owner: veeso
- License: mit
- Created: 2026-04-24T09:12:39.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2026-04-24T11:43:05.000Z (2 months ago)
- Last Synced: 2026-04-24T12:34:49.794Z (2 months ago)
- Topics: firefox, firefox-extension, unipegaso, unipegaso-autoplay
- Language: TypeScript
- Homepage:
- Size: 579 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# unipegaso-autoplay

[](https://conventionalcommits.org)
[](https://github.com/veeso/unipegaso-autoplay/actions/workflows/ci.yml)
Firefox extension that automatically advances to the next lesson on
[Unipegaso](https://lms.pegaso.multiversity.click) video-lesson pages when the
current one is marked complete.
- **Languages:** TypeScript (logic) ยท Italian (UI, since the LMS is Italian-only)
- **Runtime:** Firefox (Manifest V3)
- **Host:** `https://lms.pegaso.multiversity.click/videolezioni//`
## How it works
1. The content script observes the lesson sidebar.
2. When the current lesson reaches `100%`, it waits 3 seconds and clicks the
next lesson that is still red (not completed).
3. `Obiettivi` rows are opened and then skipped after a 3 second dwell (they
carry no percentage of their own).
4. `Test di fine lezione` and `Dispensa` rows are always ignored.
5. When the last lesson of a visible chapter is done, the next collapsed
chapter **inside the same module** is expanded โ grey chapters from other
modules are left alone, because opening them collapses the active module.
The popup in the toolbar lets you enable/disable the auto-advance at any time.
Desktop notifications announce listening, pause, and each lesson transition.
## Install
Grab the signed `.xpi` from the
[latest release](https://github.com/veeso/unipegaso-autoplay/releases/latest)
and drag it onto a Firefox window, then click **Add**.
## Development
```bash
npm install
npm run dev # watch build into ./dist
npm run start:firefox # launches Firefox with the extension loaded
```
### Quality gates
```bash
npm run lint # eslint (flat config, type-aware)
npm run format:check # prettier
npm run typecheck # tsc --noEmit
npm test # vitest (jsdom)
npm run build # esbuild bundles into ./dist
```
The same gates run in CI on every push / pull request
(`.github/workflows/ci.yml`).
### Packaging
```bash
npm run package
```
Produces a signed-ready `.zip` in `web-ext-artifacts/` using
[`web-ext`](https://github.com/mozilla/web-ext).
### Release
```bash
npm run release -- patch # or: minor | major
git push origin main --follow-tags
```
The script bumps `package.json` + `src/manifest.json`, commits, and creates an
annotated `vX.Y.Z` tag. Pushing the tag triggers
[`.github/workflows/release.yml`](./.github/workflows/release.yml), which signs
the extension via the AMO unlisted channel and publishes a GitHub release with
the signed `.xpi` attached.
Requires repository secrets `AMO_JWT_ISSUER` and `AMO_JWT_SECRET` โ generate
them at
[addons.mozilla.org/developers/addon/api/key](https://addons.mozilla.org/developers/addon/api/key/).
## Project layout
See [CLAUDE.md](./CLAUDE.md) for a more in-depth map of the codebase and
behaviour rules.
## Author
Christian Visintin ``
## License
MIT