feat: Apply patches from multiple patch bundles, add GUI patch source selector #145
Conversation
prateek-who
commented
May 9, 2026
- Multiple patch sources are now visible together.
- Patch sources moves out of settings and into it's own separate place
- Other minor UI improvements in settings dialog
other minor UI fixes
|
Liso, see how this feels. Although I like the source pill at the top of the home screen because it is minimal and clean, it looks a bit empty I feel. But what do you think? Please drop any suggestions that you feel could make this look better? |
|
I think the pill at the top looks good. It seems the patch source is not selectable when expert mode is off. I think the "drop apk here" could be a smaller area so more of the app list is visible. This is a significant change (for the better) because multiple patch sources now works. Does it also work with CLI console? If not then we could add support there too. The CLI patch arguments must be positional relative to the |
|
|
I think a drop zone on the right would be ok, since picking the app is usually the first step then dropping the apk is second step. Non expert mode could allow patching from a single source (any source), while expert mode allows combining patches from multiple patch sources. This is same behavior as Manager. |
See how this runs and feels. CLI still needs work. Will start that once you feel the GUI feels right. |
…e-unification # Conflicts: # src/main/kotlin/app/morphe/gui/ui/components/SettingsDialog.kt
|
The GUI looks great. Can the drop zone be moved to the right of the app selection? I think it may feel more natural since a wizard style flow usually navigated left to right. Otherwise I think is ready. |
|
Now see how this feels. Please tell me if something feels off. |
|
I made a small mistake here. In the headspace of wanting to push this out on the gui, I forgot that the gui and the cli just need to act like wrappers pretty much and the main logic should be centralized. Will fix this now. |
|
The UI looks fantastic. I have no suggestions to improve it. |
CLI logging now matches the GUI logging style. CLI can now do multiple patch file patching. (Logic is unified in PatchEngine) CLI can now also download patches from GitLab. (Logic is unified in PatchEngine)
|
See how both the cli and gui feel now. I've made some minor changes to the gui's PatchSelectionScreen where the patches are grouped by their authors. See if it looks good. I've done minor testing on the cli and it seemed to work fine but a through testing would be good before the merge. |
|
CLI works great.
Gives the third party app with Morphe universal patch. The mention of how to use multiple patches can be restored now that it works: Lines 27 to 31 in f41be03 |
|
If an APKM is dragged into the GUI in simple mode then a file dialog window opens. Does not happen in expert mode. I think there's a data migration glitch, because when I first opened the GUI and tried to patch it kept giving an error. The settings signing keystore had a value I could not clear or reset. The logs give little clue what went wrong: I cleared the CLI app data, and now it's working again. Try using the old version of the GUI (dev branch), then change to this branch and maybe the error will reproduce. |
This comment was marked as resolved.
This comment was marked as resolved.
will check this out |
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
|
ahh perfect then. There seems to be one more issue from my previous update. The latest patch file version for all the patch sources seem to be bug out and show "Select" button even thought they are not downloaded and should show "Download". Will check and fix this too. |
We no longer use AppData and other OS equivalent for mostly anything.
|
I've unified the data location too. See how this feels. We should no longer be using AppData for anything. Purge also only clears that session's data. So, CLI won't end up deleting GUI's data and stuff. If you feel we should make changes to any of that, then tell me and I'll make the changes. This should be good otherwise. |
Custom snackbar improvements and unification. Removed apk-parser. Arsclib used for parsing dropped file now. Added in-app log viewer in the patching screen incase patching fails. Post-patching errors are now actually shown instead of being ignore. Keystores have been unified. We would previously fail if a keystore was not found. Now we generate a common keystore for all apps instead of creating new ones again. If a user provides a keystore, only then we fail loudly.
|
Looks great. Just say when to merge. |
|
Thanks for all your work! Everything works well. |
|
@LisoUseInAIKyrios Have one final look, everything is good to go! |
# [1.9.0-dev.2](v1.9.0-dev.1...v1.9.0-dev.2) (2026-05-20) ### Features * Apply patches from multiple patch bundles, add GUI patch source selector ([#145](#145)) ([44ed6c6](44ed6c6))
# [1.8.0-dev.1](v1.7.0...v1.8.0-dev.1) (2026-05-22) ### Bug Fixes * ARSCLib libraries are excluded during minimization ([2714ab5](2714ab5)) * ARSCLib libraries are not included in minimized fat jar ([5dce038](5dce038)) * continue-on-error fix + force windows to `FULL` ([MorpheApp#120](https://github.com/ddCeka/morphe-cli/issues/120)) ([036faba](036faba)) * Include Notice and License files in shadow jar release ([MorpheApp#113](https://github.com/ddCeka/morphe-cli/issues/113)) ([a9a2402](a9a2402)) * Re-enable strip libs feature ([MorpheApp#117](https://github.com/ddCeka/morphe-cli/issues/117)) ([6d2bb94](6d2bb94)) * Update to latest patcher ([a0bea3d](a0bea3d)) * Update to latest patcher ([efd0cf1](efd0cf1)) * Update to patcher 1.5.1 ([d7c5036](d7c5036)) ### Features * Add in-app dependency license viewer ([MorpheApp#114](https://github.com/ddCeka/morphe-cli/issues/114)) ([77a1dde](77a1dde)) * Add search function to license viewer ([MorpheApp#124](https://github.com/ddCeka/morphe-cli/issues/124)) ([d3d9feb](d3d9feb)) * Add setting menu to save patched app crash logs to file ([MorpheApp#143](https://github.com/ddCeka/morphe-cli/issues/143)) ([90836b5](90836b5)) * Apply patches from multiple patch bundles, add GUI patch source selector ([MorpheApp#145](https://github.com/ddCeka/morphe-cli/issues/145)) ([44ed6c6](44ed6c6)) * Custom output path + better GUI scrollbars ([MorpheApp#127](https://github.com/ddCeka/morphe-cli/issues/127)) ([70e2721](70e2721)) * Faster dex rebuilding + reduced memory requirements ([MorpheApp#108](https://github.com/ddCeka/morphe-cli/issues/108)) ([ed8918e](ed8918e)) * Support GitHub repo urls with `--patches` argument ([MorpheApp#71](https://github.com/ddCeka/morphe-cli/issues/71)) ([2cc09a9](2cc09a9)) * UI improvements and fixes ([MorpheApp#128](https://github.com/ddCeka/morphe-cli/issues/128)) ([980ebac](980ebac))
# [1.8.0-dev.1](v1.7.0...v1.8.0-dev.1) (2026-05-22) ### Bug Fixes * ARSCLib libraries are excluded during minimization ([2714ab5](2714ab5)) * ARSCLib libraries are not included in minimized fat jar ([5dce038](5dce038)) * continue-on-error fix + force windows to `FULL` ([MorpheApp#120](https://github.com/ddCeka/morphe-cli/issues/120)) ([036faba](036faba)) * Include Notice and License files in shadow jar release ([MorpheApp#113](https://github.com/ddCeka/morphe-cli/issues/113)) ([a9a2402](a9a2402)) * Re-enable strip libs feature ([MorpheApp#117](https://github.com/ddCeka/morphe-cli/issues/117)) ([6d2bb94](6d2bb94)) * Update to latest patcher ([a0bea3d](a0bea3d)) * Update to latest patcher ([efd0cf1](efd0cf1)) * Update to patcher 1.5.1 ([d7c5036](d7c5036)) ### Features * Add in-app dependency license viewer ([MorpheApp#114](https://github.com/ddCeka/morphe-cli/issues/114)) ([77a1dde](77a1dde)) * Add search function to license viewer ([MorpheApp#124](https://github.com/ddCeka/morphe-cli/issues/124)) ([d3d9feb](d3d9feb)) * Add setting menu to save patched app crash logs to file ([MorpheApp#143](https://github.com/ddCeka/morphe-cli/issues/143)) ([90836b5](90836b5)) * Apply patches from multiple patch bundles, add GUI patch source selector ([MorpheApp#145](https://github.com/ddCeka/morphe-cli/issues/145)) ([44ed6c6](44ed6c6)) * Custom output path + better GUI scrollbars ([MorpheApp#127](https://github.com/ddCeka/morphe-cli/issues/127)) ([70e2721](70e2721)) * Faster dex rebuilding + reduced memory requirements ([MorpheApp#108](https://github.com/ddCeka/morphe-cli/issues/108)) ([ed8918e](ed8918e)) * Support GitHub repo urls with `--patches` argument ([MorpheApp#71](https://github.com/ddCeka/morphe-cli/issues/71)) ([2cc09a9](2cc09a9)) * UI improvements and fixes ([MorpheApp#128](https://github.com/ddCeka/morphe-cli/issues/128)) ([980ebac](980ebac))
# [1.8.0-dev.1](v1.7.0...v1.8.0-dev.1) (2026-05-22) ### Bug Fixes * ARSCLib libraries are excluded during minimization ([2714ab5](2714ab5)) * ARSCLib libraries are not included in minimized fat jar ([5dce038](5dce038)) * continue-on-error fix + force windows to `FULL` ([MorpheApp#120](https://github.com/ddCeka/morphe-cli/issues/120)) ([036faba](036faba)) * Include Notice and License files in shadow jar release ([MorpheApp#113](https://github.com/ddCeka/morphe-cli/issues/113)) ([a9a2402](a9a2402)) * Re-enable strip libs feature ([MorpheApp#117](https://github.com/ddCeka/morphe-cli/issues/117)) ([6d2bb94](6d2bb94)) * Update to latest patcher ([a0bea3d](a0bea3d)) * Update to latest patcher ([efd0cf1](efd0cf1)) * Update to patcher 1.5.1 ([d7c5036](d7c5036)) ### Features * Add in-app dependency license viewer ([MorpheApp#114](https://github.com/ddCeka/morphe-cli/issues/114)) ([77a1dde](77a1dde)) * Add search function to license viewer ([MorpheApp#124](https://github.com/ddCeka/morphe-cli/issues/124)) ([d3d9feb](d3d9feb)) * Add setting menu to save patched app crash logs to file ([MorpheApp#143](https://github.com/ddCeka/morphe-cli/issues/143)) ([90836b5](90836b5)) * Apply patches from multiple patch bundles, add GUI patch source selector ([MorpheApp#145](https://github.com/ddCeka/morphe-cli/issues/145)) ([44ed6c6](44ed6c6)) * Custom output path + better GUI scrollbars ([MorpheApp#127](https://github.com/ddCeka/morphe-cli/issues/127)) ([70e2721](70e2721)) * Faster dex rebuilding + reduced memory requirements ([MorpheApp#108](https://github.com/ddCeka/morphe-cli/issues/108)) ([ed8918e](ed8918e)) * Support GitHub repo urls with `--patches` argument ([MorpheApp#71](https://github.com/ddCeka/morphe-cli/issues/71)) ([2cc09a9](2cc09a9)) * UI improvements and fixes ([MorpheApp#128](https://github.com/ddCeka/morphe-cli/issues/128)) ([980ebac](980ebac))
# [1.8.0-dev.1](v1.7.0...v1.8.0-dev.1) (2026-05-22) ### Bug Fixes * ARSCLib libraries are excluded during minimization ([2714ab5](2714ab5)) * ARSCLib libraries are not included in minimized fat jar ([5dce038](5dce038)) * continue-on-error fix + force windows to `FULL` ([MorpheApp#120](https://github.com/ddCeka/morphe-cli/issues/120)) ([036faba](036faba)) * Include Notice and License files in shadow jar release ([MorpheApp#113](https://github.com/ddCeka/morphe-cli/issues/113)) ([a9a2402](a9a2402)) * Re-enable strip libs feature ([MorpheApp#117](https://github.com/ddCeka/morphe-cli/issues/117)) ([6d2bb94](6d2bb94)) * Update to latest patcher ([a0bea3d](a0bea3d)) * Update to latest patcher ([efd0cf1](efd0cf1)) * Update to patcher 1.5.1 ([d7c5036](d7c5036)) ### Features * Add in-app dependency license viewer ([MorpheApp#114](https://github.com/ddCeka/morphe-cli/issues/114)) ([77a1dde](77a1dde)) * Add search function to license viewer ([MorpheApp#124](https://github.com/ddCeka/morphe-cli/issues/124)) ([d3d9feb](d3d9feb)) * Add setting menu to save patched app crash logs to file ([MorpheApp#143](https://github.com/ddCeka/morphe-cli/issues/143)) ([90836b5](90836b5)) * Apply patches from multiple patch bundles, add GUI patch source selector ([MorpheApp#145](https://github.com/ddCeka/morphe-cli/issues/145)) ([44ed6c6](44ed6c6)) * Custom output path + better GUI scrollbars ([MorpheApp#127](https://github.com/ddCeka/morphe-cli/issues/127)) ([70e2721](70e2721)) * Faster dex rebuilding + reduced memory requirements ([MorpheApp#108](https://github.com/ddCeka/morphe-cli/issues/108)) ([ed8918e](ed8918e)) * Support GitHub repo urls with `--patches` argument ([MorpheApp#71](https://github.com/ddCeka/morphe-cli/issues/71)) ([2cc09a9](2cc09a9)) * UI improvements and fixes ([MorpheApp#128](https://github.com/ddCeka/morphe-cli/issues/128)) ([980ebac](980ebac))
# [1.8.0-dev.1](v1.7.0...v1.8.0-dev.1) (2026-05-22) ### Bug Fixes * ARSCLib libraries are excluded during minimization ([2714ab5](2714ab5)) * ARSCLib libraries are not included in minimized fat jar ([5dce038](5dce038)) * continue-on-error fix + force windows to `FULL` ([MorpheApp#120](https://github.com/ddCeka/morphe-cli/issues/120)) ([036faba](036faba)) * Include Notice and License files in shadow jar release ([MorpheApp#113](https://github.com/ddCeka/morphe-cli/issues/113)) ([a9a2402](a9a2402)) * Re-enable strip libs feature ([MorpheApp#117](https://github.com/ddCeka/morphe-cli/issues/117)) ([6d2bb94](6d2bb94)) * Update to latest patcher ([a0bea3d](a0bea3d)) * Update to latest patcher ([efd0cf1](efd0cf1)) * Update to patcher 1.5.1 ([d7c5036](d7c5036)) ### Features * Add in-app dependency license viewer ([MorpheApp#114](https://github.com/ddCeka/morphe-cli/issues/114)) ([77a1dde](77a1dde)) * Add search function to license viewer ([MorpheApp#124](https://github.com/ddCeka/morphe-cli/issues/124)) ([d3d9feb](d3d9feb)) * Add setting menu to save patched app crash logs to file ([MorpheApp#143](https://github.com/ddCeka/morphe-cli/issues/143)) ([90836b5](90836b5)) * Apply patches from multiple patch bundles, add GUI patch source selector ([MorpheApp#145](https://github.com/ddCeka/morphe-cli/issues/145)) ([44ed6c6](44ed6c6)) * Custom output path + better GUI scrollbars ([MorpheApp#127](https://github.com/ddCeka/morphe-cli/issues/127)) ([70e2721](70e2721)) * Faster dex rebuilding + reduced memory requirements ([MorpheApp#108](https://github.com/ddCeka/morphe-cli/issues/108)) ([ed8918e](ed8918e)) * Support GitHub repo urls with `--patches` argument ([MorpheApp#71](https://github.com/ddCeka/morphe-cli/issues/71)) ([2cc09a9](2cc09a9)) * UI improvements and fixes ([MorpheApp#128](https://github.com/ddCeka/morphe-cli/issues/128)) ([980ebac](980ebac))