-
-
Notifications
You must be signed in to change notification settings - Fork 1
New patching system #8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR introduces a new architecture for the browser extension (“Hephaestus”), migrating the build/tooling to Vite + @crxjs/vite-plugin and beginning a rework of how patches are defined, loaded, enabled, and configured.
Changes:
- Added Vite/CRX-based build setup (Vite config, ESLint flat config, TS config, manifest generator, packaging).
- Introduced new patch typing + runtime loader and a
SettingsManagerbacked bychrome.storage.sync. - Added/ported many UI and patch assets (popup, styles, patches, icons), plus documentation updates.
Reviewed changes
Copilot reviewed 57 out of 151 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| vite.config.ts | New Vite config with CRX plugin and zip packaging. |
| tsconfig.json | New TypeScript compiler configuration. |
| eslint.config.js | Adds ESLint flat configuration (TS + Prettier). |
| package.json | Adds Vite/TS/ESLint toolchain and scripts/hooks. |
| manifest.config.ts | Generates MV3 manifest via defineManifest. |
| src/types/Setting.ts | Introduces typed setting model for patches. |
| src/types/Meta.ts | Introduces patch metadata model (matches/runAt/world/etc.). |
| src/types/Patch.ts | Introduces patch interface (meta + init). |
| src/util/SettingsManager.ts | Adds storage-backed settings + enable/disable/toggle for patches. |
| src/content/loadPatches.ts | Adds runtime patch loader filtered by world/runAt/matches. |
| src/content/isolatedDocumentStart.ts | Loads isolated/document_start patches via glob + navigation hook. |
| src/content/isolatedDocumentEnd.ts | Loads isolated/document_end patches via glob + navigation hook. |
| src/popup/index.html | Renames popup UI branding/text; keeps popup layout. |
| src/popup/main.js | Popup logic retained; primarily formatting changes. |
| src/popup/style.css | Popup styling normalized (LF/formatting). |
| src/patches/redirectToEVLogin.js | Formatting/consistency changes. |
| src/patches/redirectToDVLogin.js | Adds DV login redirect + DOM text injection. |
| src/patches/pwa.js | Adds manifest-link injection for PWA installation support. |
| src/patches/fixResizing.js | Adds resize listener to reload when crossing mobile/desktop breakpoint. |
| src/patches/fixGoingBack.js | Adds Firefox-only history/back behavior fix for modal drawers. |
| src/patches/highlightToday.css | New CSS for highlighting “today” in calendars. |
| src/patches/hideWeekends.css | New CSS hiding weekend columns in monthly calendars. |
| src/patches/hideWCAG.css | New CSS hiding WCAG controls. |
| src/patches/hideHelpOnDashboard.css | New CSS hiding a specific help tile. |
| src/patches/hideFooter.css | New CSS hiding footer on mobile. |
| src/patches/hideEmptyExamResults.css | New CSS hiding empty exam results blocks and adjusting rounding. |
| src/patches/cleanUpEduVulcanHome.css | Refactors/cleans CSS formatting and selectors. |
| src/patches/alignDetailedGradesButton.css | Minor CSS formatting change. |
| src/patches/hideTutorsFromBoard.css | Minor CSS formatting change. |
| src/patches/messagesButton.js | Refactors formatting of “move messages button” patch. |
| src/patches/displayFullName.js | Refactors formatting for messages/non-messages detection and module registration. |
| src/patches/countAverage.js | Adjusts XHR interception logic and formatting. |
| src/patches/redirectToBoard/script.js | Renames helper and refactors formatting/semicolons. |
| src/patches/redirectToBoard/styles.css | Minor CSS formatting change. |
| src/patches/newTimetable/script.js | Formatting normalization. |
| src/patches/newTimetable/styles.css | Formatting normalization. |
| src/patches/newMobileNavbar/index.js | Adds new mobile bottom navbar implementation (ported). |
| src/patches/newMobileNavbar/highlights.js | Adds highlight logic for bottom navbar. |
| src/patches/newMobileNavbar/styles.css | Refactors formatting and some selector cleanup. |
| src/patches/newDashboard/index.js | Formatting normalization. |
| src/patches/newDashboard/styles.css | Formatting normalization. |
| src/patches/newAttendance/tabs.js | Formatting normalization. |
| src/patches/newAttendance/justifyButton.js | Formatting normalization. |
| src/patches/newAttendance/style.css | Formatting normalization. |
| src/patches/loginPasswordTogether/script.js | Formatting + adds lint suppression for self-assign. |
| src/patches/loginPasswordTogether/styles.css | Formatting normalization. |
| src/patches/moveUserOptionsToHeader/script.js | Formatting normalization + minor readability tweaks. |
| src/patches/moveUserOptionsToHeader/styles.css | Formatting normalization. |
| src/patches/moveTitleToHeader/index.js | Formatting normalization. |
| src/patches/moveTitleToHeader/style.css | Formatting normalization. |
| src/patches/apis/waitForElement.js | Formatting normalization. |
| src/patches/apis/aside.js | Formatting normalization + minor line breaks. |
| src/patches/apis/getUserData.js | Formatting normalization. |
| src/patches/apis/mapTimetable.js | Formatting normalization (ternary indentation). |
| src/patches/apis/bottomDateSelector/index.js | Formatting normalization + small readability tweaks. |
| src/patches/apis/bottomDateSelector/styles.css | Formatting normalization. |
| src/patches/apis/settings.js | Formatting normalization + slightly safer parsing and error logging. |
| src/patches/hideSubjectsWithNoGrades/finalGrades.js | Formatting normalization. |
| src/patches/hideSubjectsWithNoGrades/normalGrades.css | Formatting normalization and line wrapping. |
| src/patches/patchesSettings/desktop.js | Adds desktop settings modal injection UI. |
| src/patches/patchesSettings/mobile.js | Formatting normalization (trailing commas). |
| src/patches/patchesSettings/style.css | Refactors long transition / box-shadow formatting. |
| src/patches/patchesSettings/generateSettingsList.js | Formatting normalization (trailing commas). |
| src/patches/patchesSettings/markers.js | Formatting normalization (trailing commas). |
| src/patches/patchesSettings/settingRenderers.js | Formatting normalization in template literals/ternaries. |
| public/github.svg | Adds GitHub icon in public/. |
| public/discord.svg | Adds Discord icon in public/. |
| src/assets/icons/close.svg | Adds close icon asset. |
| src/assets/icons/settings.svg | Adds settings icon asset. |
| src/assets/icons/search.svg | Adds search icon asset. |
| src/assets/icons/clear.svg | Adds clear icon asset. |
| src/assets/icons/menu_24dp_E8EAED_FILL0_wght400_GRAD0_opsz24.svg | Adds menu icon asset. |
| src/assets/icons/keyboard_backspace_24dp_E8EAED_FILL0_wght400_GRAD0_opsz24.svg | Adds back icon asset. |
| src/assets/icons/chevron_left_24dp_E8EAED_FILL0_wght400_GRAD0_opsz24.svg | Adds chevron-left icon asset. |
| src/assets/icons/chevron_right_24dp_E8EAED_FILL0_wght400_GRAD0_opsz24.svg | Adds chevron-right icon asset. |
| src/assets/icons/dashboard_24dp_E8EAED_FILL0_wght400_GRAD0_opsz24.svg | Adds dashboard icon asset. |
| src/assets/icons/counter_6_24dp_E8EAED_FILL0_wght400_GRAD0_opsz24.svg | Adds grades icon asset. |
| src/assets/icons/event_available_24dp_E8EAED_FILL0_wght400_GRAD0_opsz24.svg | Adds attendance icon asset. |
| src/assets/icons/calendar_clock_24dp_E8EAED_FILL0_wght400_GRAD0_opsz24.svg | Adds timetable icon asset. |
| src/assets/icons/mail_24dp_FFFFFF_FILL0_wght400_GRAD0_opsz24.svg | Adds mail icon asset. |
| src/assets/icons/star_24dp_FFFFFF_FILL0_wght400_GRAD0_opsz24.svg | Adds star icon asset. |
| src/assets/icons/event_note_24dp_FFFFFF_FILL0_wght400_GRAD0_opsz24.svg | Adds notes icon asset. |
| src/assets/icons/campaign_24dp_FFFFFF_FILL0_wght400_GRAD0_opsz24.svg | Adds campaign icon asset. |
| src/assets/icons/quiz_24dp_FFFFFF_FILL0_wght400_GRAD0_opsz24.svg | Adds quiz icon asset. |
| src/assets/icons/summarize_24dp_FFFFFF_FILL0_wght400_GRAD0_opsz24.svg | Adds summarize icon asset. |
| src/assets/icons/folder_info_24dp_FFFFFF_FILL0_wght400_GRAD0_opsz24.svg | Adds info-folder icon asset. |
| src/assets/icons/feedback_24dp_FFFFFF_FILL0_wght400_GRAD0_opsz24.svg | Adds feedback icon asset. |
| src/assets/icons/person_raised_hand_24dp_FFFFFF_FILL0_wght400_GRAD0_opsz24.svg | Adds raised-hand icon asset. |
| src/assets/icons/strategy_24dp_FFFFFF_FILL0_wght400_GRAD0_opsz24.svg | Adds strategy icon asset. |
| src/assets/icons/stylus_24dp_FFFFFF_FILL0_wght400_GRAD0_opsz24.svg | Adds stylus icon asset. |
| src/assets/icons/reply_24dp_000000_FILL0_wght400_GRAD0_opsz24.svg | Adds reply icon asset. |
| src/assets/icons/unfold_more_24dp_E8EAED_FILL0_wght400_GRAD0_opsz24.svg | Adds unfold-more icon asset. |
| src/assets/icons/unfold_less_24dp_E8EAED_FILL0_wght400_GRAD0_opsz24.svg | Adds unfold-less icon asset. |
| README.md | Rebrands and updates docs, screenshots paths, and dev workflow notes. |
| LICENSE | Updates copyright lines. |
| .gitignore | Adds standard Node/Vite ignores. |
| .editorconfig | Switches to LF + trims whitespace + final newline. |
| settingsSaver.js | Deletes old settings sessionStorage↔sync bridge. |
| apply.js | Deletes old patch injection mechanism. |
| execute.js | Deletes old patch execution registry mechanism. |
| patches.json | Deletes old patch registry manifest. |
| manifest.json | Deletes static MV3 manifest in favor of generated manifest. |
| pwa/manifest-eduvulcan.json | Deletes old PWA manifest file (now remote/redirect-based). |
| patches/redirectToDVLogin.js | Removes old patch copy from legacy patches/ dir. |
| patches/newMobileNavbar/index.js | Removes old patch copy from legacy patches/ dir. |
| patches/highlightToday.css | Removes old patch copy from legacy patches/ dir. |
| patches/hideWCAG.css | Removes old patch copy from legacy patches/ dir. |
| patches/hideHelpOnDashboard.css | Removes old patch copy from legacy patches/ dir. |
| patches/hideEmptyExamResults.css | Removes old patch copy from legacy patches/ dir. |
| patches/fixGoingBack.js | Removes old patch copy from legacy patches/ dir. |
Comments suppressed due to low confidence (5)
src/popup/index.html:59
- These image paths point to
../assets/github.svg, but this repo provides the icons underpublic/github.svg/public/discord.svg. Update thesrcto the correct built path so the icons render in the popup after bundling.
src/popup/index.html:58 - Alt text uses "Github"; the correct brand spelling is "GitHub".
src/patches/countAverage.js:112 - Overriding XHR
responseTextto return an object breaks the XHR contract (responseText must be a string) and can crash consumers that expect text/JSON strings. ReturnJSON.stringify(data)for responseText, and only overrideresponseif you explicitly want an object.
src/patches/countAverage.js:118 - Overriding
responseunconditionally can be incompatible with XHRresponseTypeand can also break consumers expecting ArrayBuffer/Blob/etc. Consider only overriding when responseType is ""/"text"/"json", or avoid redefining native properties and instead transform the data at the call site.
src/patches/redirectToBoard/script.js:24 - Setting
hrefto"javascript:void(0)"is discouraged (CSP/security and accessibility). Prefer leavinghrefunset, using#withpreventDefault, or using a<button>/click handler while keeping the element semantics consistent.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
a huge extension rework