An open API service indexing awesome lists of open source software.

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.

Awesome Lists containing this project

README

          

# unipegaso-autoplay

![logo](./assets/images/logo-150.png)

[![conventional-commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-%23FE5196?logo=conventionalcommits&logoColor=white)](https://conventionalcommits.org)
[![test](https://github.com/veeso/unipegaso-autoplay/actions/workflows/ci.yml/badge.svg)](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