feat(v1.4.0): exports + smart year level + progress + encrypted passwords
ci / test (push) Successful in 43s
build-extension / build (push) Successful in 6m7s

v1.4.0: CSV/Excel/JSON/NextUp exports, units-first smart year standing, live export progress bar, AES-GCM at-rest password encryption.
This commit was merged in pull request #4.
This commit is contained in:
2026-08-20 04:39:08 +00:00
parent 89fd587c21
commit 0cb70ecee0
19 changed files with 5442 additions and 91 deletions
+27 -4
View File
@@ -84,12 +84,27 @@ built `ismis-helper-chrome.zip` directly:
- **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.
- **One-click Download PDF** button on the Study Load page, plus **CSV / Excel /
JSON / Next Up** export buttons.
- 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.
- Year Level mode: `Auto` (recommended), `Use custom value`, or `Profile value
only`.
- **Smart Year Level**: for the semester being printed, `Auto` derives the
standing from remaining units (Student Prospectus total − Lacking Subjects,
reflecting units actually passed) or, failing that, from the View Grades
history. Custom value overrides; the profile-scraped value is the fallback.
- **Live progress indicator**: during any export a status bar below the buttons
shows the current step (reading table, fetching course descriptions `i/N`,
profile, year level, building file) with a progress percentage.
- **Next Up import**: the Next Up export writes CSV in the exact column contract
the Raycast [Next Up](https://github.com/) extension accepts
(`title, courseCode, days, startTime, endTime, room, units, professorName`),
so schedules drop straight into the app.
- **Bundled Segoe UI fonts** for a 1:1 look with the official document.
- Builds and packages automatically via Gitea Actions (zips + versioned releases).
- Builds and packages automatically via Gitea Actions (zips + versioned releases
with a signed `.xpi`).
## Build
@@ -114,11 +129,19 @@ additionally creates a **Gitea Release** with both versioned zips attached.
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.
- Set PDF options: truncate descriptions, show/hide `Year Level`, Year Level
mode, and a custom Year Level value.
The Study Load page gets a button row — **Download PDF**, **CSV**, **Excel**,
**JSON**, and **Next Up** — next to the total-units line.
## Data & privacy
- Auto-login stores your portal credentials **in plaintext** on your own device.
- Profile **passwords are encrypted at rest** with Web Crypto AES-GCM (256-bit).
The key lives in `browser.storage.local` so it survives restarts. This removes
the plaintext-password smell from storage; it is NOT strong protection against
an attacker who can read both the storage and the extension source — this
extension only talks to the school portal, never any third-party server.
- This is a personal-use helper for the university portal; use it only with your
own account.