feat(v1.4.0): CSV/Excel/JSON/NextUp exports + hybrid smart year standing

- Export modules (export-csv/json/xlsx) mirroring the PDF layout, plus a
  Next Up import CSV matching the raycast/nextup column contract.
- Hybrid Year Level: View Grades history (exact per-semester standing),
  falling back to units math (prospectus total - lacking), then profile.
  Popup adds a year-mode setting (auto/custom/off).
- On-page button row now offers PDF / CSV / Excel / JSON / Next Up.
- Bump version to 1.4.0.
- Tag-only build workflow with an optional AMO sign step for a signed .xpi;
  separate ci.yml keeps tests on pushes/PRs.
- Tests: year-standing parser tests + export tests (CSV quoting, JSON schema,
  XLSX structure); CI validates XLSX via openpyxl.
This commit is contained in:
2026-08-20 06:45:21 +08:00
parent 89fd587c21
commit 53d5ca6d04
19 changed files with 5231 additions and 76 deletions
+19 -3
View File
@@ -84,12 +84,24 @@ 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 the View Grades history (exact) or, failing that, from remaining
units (Student Prospectus total − Lacking Subjects). Custom value overrides;
the profile-scraped value is the fallback.
- **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,7 +126,11 @@ 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