Skip to content

Conversation

@zurdi15
Copy link
Member

@zurdi15 zurdi15 commented Dec 20, 2025

Description
Patcher.js integration

Checklist
Please check all that apply.

  • I've tested the changes locally
  • I've updated relevant comments
  • I've assigned reviewers for this PR
  • I've added unit tests that cover the changes

Screenshots (if applicable)

image

Partially close #2098

- Implemented z-worker.js and zip.min.js for handling zip operations.
- Added PatcherBtn component to the main navigation for easy access to the patcher.
- Created Patcher.vue view for applying patches to ROM files.
- Updated router to include a new route for the patcher.
- Enhanced navigation store with a method to navigate to the patcher.
- Integrated file input handling for ROM and patch files in the Patcher component.
- Added error handling and loading states during patch application.
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @zurdi15, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces a new ROM patching feature to the frontend, enabling users to apply various types of patches to ROM files directly within the application. It incorporates a comprehensive JavaScript library for handling different patch formats and provides an intuitive user interface for file selection and patch application, enhancing the utility of the platform for retro gaming enthusiasts.

Highlights

  • ROM Patcher Integration: The core RomPatcher.js library and its various patch format modules (IPS, UPS, BPS, PPF, RUP, APS, BDF, PMSR, VCDIFF) have been integrated into the frontend.
  • New Patcher UI: A dedicated Patcher view (Patcher.vue) has been added, featuring drag-and-drop functionality for selecting ROM and patch files, and a button to apply patches.
  • Navigation Update: A new navigation button (PatcherBtn.vue) has been added to the main app bar, allowing users to easily access the new ROM Patcher functionality.
  • Binary File Handling: Utility classes like BinFile.js and HashCalculator.js have been included to facilitate efficient binary data manipulation and checksum calculations directly within the browser.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a significant new feature by integrating the patcher.js library, enabling users to apply ROM patches directly within the application. The implementation includes a new dedicated view, routing, and UI components for a seamless user experience. The changes to the navigation and routing are well-structured. I've identified a few issues, including some debugging artifacts in the vendored library code and a potential bug in one of the patch format parsers. Additionally, I've suggested a minor refactoring in the new Patcher.vue component to enhance code clarity and performance. Overall, this is a valuable addition to the project.

@zurdi15 zurdi15 marked this pull request as ready for review December 23, 2025 13:46
Copilot AI review requested due to automatic review settings December 23, 2025 13:46
Copy link
Contributor

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 integrates patcher.js functionality to enable ROM patching directly within the application. Users can upload a ROM file and a patch file, apply the patch using various supported formats, and either download the result or upload it directly to RomM.

Key Changes:

  • New Patcher view with drag-and-drop file upload interface
  • Web Worker implementation for non-blocking patch operations
  • Support for multiple patch formats (IPS, UPS, BPS, PPF, RUP, APS, BDF, PMSR, VCDIFF)
  • Navigation integration with new patcher button in main app bar

Reviewed changes

Copilot reviewed 25 out of 27 changed files in this pull request and generated 47 comments.

Show a summary per file
File Description
frontend/src/views/Patcher.vue New main patcher component with file upload UI and patch application logic
frontend/public/assets/patcherjs/patcher.worker.js Web Worker for handling patch operations off the main thread
frontend/src/components/common/Navigation/PatcherBtn.vue Navigation button component for accessing patcher
frontend/src/stores/navigation.ts Added goPatcher navigation method
frontend/src/plugins/router.ts Registered new patcher route
frontend/src/views/Player/EmulatorJS/Base.vue Reordered saves/states tab sections
frontend/assets/patcherjs/modules/*.js Core patcher libraries for various patch formats

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

- Added Hungarian translations for common and patcher-specific terms.
- Introduced Italian translations for common and patcher-specific terms.
- Implemented Japanese translations for common and patcher-specific terms.
- Added Korean translations for common and patcher-specific terms.
- Included Polish translations for common and patcher-specific terms.
- Added Brazilian Portuguese translations for common and patcher-specific terms.
- Implemented Romanian translations for common and patcher-specific terms.
- Added Russian translations for common and patcher-specific terms.
- Included Simplified Chinese translations for common and patcher-specific terms.
- Added Traditional Chinese translations for common and patcher-specific terms.
- Updated Patcher.vue to utilize localized strings for error messages, status updates, and UI labels.
@zurdi15 zurdi15 self-assigned this Dec 23, 2025
@zurdi15 zurdi15 requested a review from gantoine December 23, 2025 16:25
@zurdi15 zurdi15 added ui/ux UI/UX improvements or suggestions javascript Pull requests that update Javascript code labels Dec 23, 2025
@zurdi15 zurdi15 changed the title feat: Integrated patcher.js [ROMM-2098] Integrated patcher.js Dec 30, 2025
@zurdi15 zurdi15 merged commit 85d40dc into master Jan 2, 2026
8 checks passed
@zurdi15 zurdi15 deleted the feat/patcher.js branch January 2, 2026 15:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

javascript Pull requests that update Javascript code ui/ux UI/UX improvements or suggestions

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] Implement on-the-fly patching for IPS/BPS files

3 participants