ISMIS Helper
A lightweight Firefox / Chrome extension for the USC ISMIS student portal that:
- Auto-fills and auto-submits your login.
- Auto-accepts the privacy-policy modal.
- Exports a Study Load PDF that matches the official layout — bundled Segoe UI fonts, the USC logo, the course table, and the units total.
One codebase builds for both browsers (see Build).
Features
- Saved login profiles (stored in
browser.storage.local) — only one enabled at a time, with a master on/off toggle. - One-click Download PDF button on the Study Load page.
- PDF settings in the popup:
- Truncate long course descriptions to match the official PDF (default on).
- Show/hide
Year Level, and set a custom Year Level value.
- Bundled Segoe UI fonts for a 1:1 look with the official document.
- Builds and packages automatically via Gitea Actions (zips + versioned releases).
Install
Temporary/development install. For distribution, publish the built zips to Firefox AMO and the Chrome Web Store — they are store-ready.
Firefox (load temporary add-on)
- Build the Firefox variant (or download
ismis-helper-firefox.zipfrom CI):The output is atnode scripts/build.js firefoxdist/ismis-helper-firefox.zip(unzip it, or usedist/firefox/directly). - Open
about:debuggingin Firefox. - Click This Firefox → Load Temporary Add-on….
- Select
dist/firefox/manifest.json. - Open
https://ismis.usc.edu.phand use the extension.
Chrome (load unpacked)
- Build the Chrome variant (or download
ismis-helper-chrome.zipfrom CI):node scripts/build.js chrome - Unzip
dist/ismis-helper-chrome.zip(or usedist/chrome/directly). - Open
chrome://extensionsin Chrome. - Enable Developer mode (toggle, top-right).
- Click Load unpacked and select the unzipped
dist/chromefolder. - Open
https://ismis.usc.edu.phand use the extension.
For a persistent install, package and publish via Firefox AMO / Chrome Web Store with the same built zips.
Build
Requires Node.js (the build.js script itself is dependency-free; npm install
is only needed to run the tests).
npm install # dev deps for tests
npm test # run the test suite
npm run build # build both -> dist/*.zip
node scripts/build.js all # build both explicitly
node scripts/build.js chrome # just chrome
node scripts/build.js all --version 1.3.0 # versioned zips
CI (Gitea Actions): on every push, both zips are built, tests run, and the
zips are uploaded as artifacts. When you push a v* tag (e.g. v1.3.0), it
additionally creates a Gitea Release with both versioned zips attached.
Settings
Open the extension popup to:
- Manage login profiles (add / edit / enable).
- Toggle the master on/off switch.
- Set PDF options: truncate descriptions, show/hide
Year Level, custom Year Level.
Data & privacy
- Auto-login stores your portal credentials in plaintext on your own device.
- This is a personal-use helper for the university portal; use it only with your own account.
Development
See AGENTS.md for the repository layout, build model, and coding
conventions for this project.