Draft
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 <47253870+banocean@users.noreply.github.com>
f9c78f5 to
7fcebfe
Compare
7fcebfe to
cb1c88a
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
a huge extension rework