Skip to content

feat: read dated assessments from course outlines (v1.10.0) - #23

Merged
Jelly-RayTian merged 1 commit into
mainfrom
feat/course-outline-source
Nov 3, 2026
Merged

Jelly-RayTian merged 1 commit into
mainfrom
feat/course-outline-source

Conversation

@Jelly-RayTian

Copy link
Copy Markdown
Owner

Adds an optional Course outlines source so every course with an outline (not just ENGL 119) gets its dated assessments automatically, instead of a manual JSON import.

How it works

  • Reads outline.uwaterloo.ca/viewer/api/search/?q= (the signed-in user's own course list) and each outline's Assessments & Activities table, using the existing session. Read-only.
  • Only explicit dates are used. TBD, weekday patterns ("Wednesdays") and ranges are skipped; dates with no published time stay all-day.
  • Available … Due … rows become timed quiz windows; "October 6 & 8" style rows become one entry per date.
  • Items already listed by LEARN/Crowdmark for the same course and day are hidden, so nothing shows twice.
  • A page that fails to parse keeps the previous data for that course; sign-out shows the normal "open the site" hint.

Permissions / review impact

  • New optional host permission https://outline.uwaterloo.ca/* and the same host in connect-src. Off by default; the user enables it in Settings → Sources → Add optional sources. Store update will need re-review. Version bumped to 1.10.0.

Verification

  • tsc, 289 tests, and build pass; new tests/outline.test.ts covers the parser, the page reader, per-course failure retention and de-duplication.
  • Parsed saved copies of three real outlines (ENGL 119, ECON 101, MATH 135) locally; entries and times matched the pages.
  • Not yet verified: an end-to-end read inside a real Edge session with the permission granted.

🤖 Generated with Claude Code

New optional source that reads outline.uwaterloo.ca while the user is
signed in: the personal course list from /viewer/api/search/ and each
outline's "Assessments & Activities" table.

- Only explicit calendar dates are used; TBD, weekday patterns and ranges
  are skipped. Date-only items stay all-day.
- "Available ... Due ..." rows become timed quiz windows; multi-date rows
  become one entry per date.
- Outline items are hidden when LEARN/Crowdmark already lists the same item
  that day for the same course.
- Per-course failures keep the previous data; sign-out surfaces as the usual
  "open the site" prompt.
- Optional host permission + CSP connect-src for outline.uwaterloo.ca;
  privacy policy, store permission notes and README updated.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@Jelly-RayTian
Jelly-RayTian merged commit 32fac98 into main Nov 3, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant