Skip to content
/ ifv Public
forked from banocean/ifv

Conversation

@yoper12
Copy link
Owner

@yoper12 yoper12 commented Feb 3, 2026

a huge extension rework

@yoper12 yoper12 requested a review from Copilot February 3, 2026 18:42
@yoper12 yoper12 self-assigned this Feb 3, 2026
@yoper12 yoper12 added the enhancement New feature or request label Feb 3, 2026
Copy link

Copilot AI left a 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 SettingsManager backed by chrome.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 under public/github.svg / public/discord.svg. Update the src to 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 responseText to return an object breaks the XHR contract (responseText must be a string) and can crash consumers that expect text/JSON strings. Return JSON.stringify(data) for responseText, and only override response if you explicitly want an object.
    src/patches/countAverage.js:118
  • Overriding response unconditionally can be incompatible with XHR responseType and 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 href to "javascript:void(0)" is discouraged (CSP/security and accessibility). Prefer leaving href unset, using # with preventDefault, 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants