New patching system#8
Conversation
There was a problem hiding this comment.
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.
dom observers inspired by waitForRender.js by @banocean Co-Authored-By: BanOcean <[email protected]>
f9c78f5 to
7fcebfe
Compare
7fcebfe to
cb1c88a
Compare
83b5584 to
8b9d18f
Compare
8b9d18f to
6786afd
Compare
…nUrlChange run strategy
…ailable, preventing errors in scripts running at document_start
There was a problem hiding this comment.
ESLint found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 133 out of 218 changed files in this pull request and generated 7 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
a huge extension rework