OAuth flows through accounts.betterseqta.org with token exchange server-side. Sync runs in the content script to avoid MV3 service worker timeouts. Adds Svelte calendar sync UI on the timetable page, extension asset URL helper, and excludes calendar tokens from cloud sync.
Co-authored-by: Cursor <cursoragent@cursor.com>
- Add inputs alongside the slider so values can be
typed directly, not just dragged
- Clamp typed/dragged values to [min, max]
- Animate the slider with a sine ease when a value is typed,
keeping the drag unanimated
- Meet min/max values instead of letting fields swap mid-keystroke
- Combine min/max handlers into one `onInput` function
Batch settings storage writes, tier plugin startup, lazy-load heavy UI
chunks, and optimize global search indexing. Stop tweening bar height in
grade analytics to prevent invalid negative SVG rect values.
Co-authored-by: Cursor <cursoragent@cursor.com>
Resolve CodeQL incomplete string escaping alerts by centralizing escJsSingleQuoted for all values embedded in injected script content.
Co-authored-by: Cursor <cursoragent@cursor.com>
Move filters into a left sidebar, tighten spacing, match homepage checkboxes, fix forecast line domain/looping, and remove the redundant page subtitle. Also fix crxjs dev service worker live reload after Vite upgrade.
- Add WEIGHTING_SCHEMA_VERSION constant; bump to force a global lazy reindex
- Migrate legacy Record<id, string> storage to { weight, fingerprint, pluginVersion }
- Fingerprint per-assessment on status, graded, availability, score, due, title (sourced from the React fiber)
- Refetch weighting only when fingerprint or schema version mismatches
- Preserve previous weight as refreshing placeholder during background refetch
- Render subject average immediately from cache; run parseAssessments off the critical path
- Coalesce concurrent renderSubjectAverage calls instead of dropping them
- Dispatch betterseqta:weightingsChanged on refetch start and completion
- Show row-level refresh indicator and "Refreshing weightings" notice while refreshing
- Leave weightingOverrides untouched by all reindex paths
What it does:
- Makes the course navigator focused on the currently selected lesson instead of the top upon opening
- Adds arrows to the course page, to allow for easier navigation.