Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test resources are ignored #1

Closed
Sculas opened this issue Mar 19, 2022 · 2 comments
Closed

Test resources are ignored #1

Sculas opened this issue Mar 19, 2022 · 2 comments
Assignees

Comments

@Sculas
Copy link
Contributor

Sculas commented Mar 19, 2022

Seems like I'm gitignoring the resources folders.
Needs to be fixed, tests won't pass otherwise.

@Sculas Sculas self-assigned this Mar 19, 2022
@Sculas Sculas closed this as completed in d5a3c76 Mar 20, 2022
github-actions bot pushed a commit that referenced this issue Mar 20, 2022
# 1.0.0-dev.1 (2022-03-20)

### Bug Fixes

* avoid ignoring test resources (fixes [#1](#1)) ([d5a3c76](d5a3c76))
* current must be calculated after increment ([5f12bab](5f12bab))
* remove broken code ([0e72a6e](0e72a6e))
* workflow on dev branch ([7e67daf](7e67daf))
@github-actions
Copy link
Contributor

🎉 This issue has been resolved in version 1.0.0-dev.1 🎉

The release is available on:

Your semantic-release bot 📦🚀

github-actions bot pushed a commit that referenced this issue Mar 23, 2022
# 1.0.0-dev.1 (2022-03-23)

### Bug Fixes

* avoid ignoring test resources (fixes [#1](#1)) ([d5a3c76](d5a3c76))
* current must be calculated after increment ([5f12bab](5f12bab))
* **gradle:** publish source and javadocs ([87bbde5](87bbde5))
* **Io:** fix finding classes by name ([460d62a](460d62a))
* **Io:** JAR loading and saving ([#8](#8)) ([4d98cbc](4d98cbc))
* nullable signature members ([#10](#10)) ([8db8893](8db8893))
* Patch should have access to the Cache ([6c0f082](6c0f082))
* remove broken code ([0e72a6e](0e72a6e))
* set index for insertAt to 0 by default ([1769132](1769132))
* workflow on dev branch ([7e67daf](7e67daf))

### Code Refactoring

* convert Patch to abstract class ([23e897a](23e897a))
* Optimize Signature class ([#11](#11)) ([49beec9](49beec9))
* Rename `net.revanced` to `app.revanced` ([3ab42a9](3ab42a9))

### Features

* Add `findParentMethod` utility method ([#4](#4)) ([00c6ab7](00c6ab7))

### BREAKING CHANGES

* Array<Int> was changed to IntArray. This breaks existing patches.
* Package name was changed from "net.revanced" to "app.revanced"
* Method signature of execute() was changed to include the cache, this will break existing implementations of the Patch class.
* Patch class is now an abstract class. You must implement it. You can use anonymous implements, like done in the tests.
@github-actions
Copy link
Contributor

🎉 This issue has been resolved in version 1.0.0-dev.1 🎉

The release is available on:

Your semantic-release bot 📦🚀

github-actions bot pushed a commit to Optinux/revanced-patcher that referenced this issue Mar 27, 2022
# 1.0.0-dev.1 (2022-03-27)

### Bug Fixes

* avoid ignoring test resources (fixes [ReVanced#1](https://github.com/Optinux/revanced-patcher/issues/1)) ([d5a3c76](d5a3c76))
* current must be calculated after increment ([5f12bab](5f12bab))
* give ClassWriter a ClassReader for symtable ([e8f6973](e8f6973))
* **gradle:** publish source and javadocs ([87bbde5](87bbde5))
* **Io:** fix finding classes by name ([460d62a](460d62a))
* **Io:** JAR loading and saving ([ReVanced#8](https://github.com/Optinux/revanced-patcher/issues/8)) ([4d98cbc](4d98cbc))
* **MethodResolver:** fix cd57a8c ([1af31b2](1af31b2))
* **MethodResolver:** strip labels and line numbers so opcode patterns match ([8d1bb5f](8d1bb5f))
* **MethodResolver:** strip labels nodes so opcode patterns match ([cd57a8c](cd57a8c))
* nullable signature members ([ReVanced#10](https://github.com/Optinux/revanced-patcher/issues/10)) ([8db8893](8db8893))
* Patch should have access to the Cache ([6c0f082](6c0f082))
* remove broken code ([0e72a6e](0e72a6e))
* set index for insertAt to 0 by default ([1769132](1769132))
* set marklimit to Integer.MAX_VALUE ([ab6453c](ab6453c))
* workflow on dev branch ([7e67daf](7e67daf))

### Code Refactoring

* convert Patch to abstract class ([23e897a](23e897a))
* Optimize Signature class ([ReVanced#11](https://github.com/Optinux/revanced-patcher/issues/11)) ([49beec9](49beec9))
* Rename `net.revanced` to `app.revanced` ([3ab42a9](3ab42a9))

### Features

* Add `findParentMethod` utility method ([ReVanced#4](https://github.com/Optinux/revanced-patcher/issues/4)) ([00c6ab7](00c6ab7))
* add SafeClassWriter ([ca6b94d](ca6b94d))

### Performance Improvements

* check type instead of class ([47eb493](47eb493))

### BREAKING CHANGES

* Array<Int> was changed to IntArray. This breaks existing patches.
* Package name was changed from "net.revanced" to "app.revanced"
* Method signature of execute() was changed to include the cache, this will break existing implementations of the Patch class.
* Patch class is now an abstract class. You must implement it. You can use anonymous implements, like done in the tests.
github-actions bot pushed a commit to sudevn/revanced-patcher that referenced this issue Apr 26, 2022
# 1.0.0 (2022-04-26)

### Bug Fixes

* `compareSignatureToMethod` not matching correctly in case opcodes are null ([5ae5e98](5ae5e98))
* `ConcurrentModificationException` while iterating through `proxies` and modifying it ([bfeeaf4](bfeeaf4))
* `PackageMetadata` ([305a817](305a817))
* `replaceWith` not replacing classes with used class proxies ([f0f3403](f0f3403))
* adding existing classes to the patchers cache ([4281546](4281546))
* always return PatchResultSuccess on patch success ([866b03a](866b03a))
* applying no patches throwing error ([f88c118](f88c118))
* applyPatches not returning successful patches ([8b70bb4](8b70bb4))
* avoid ignoring test resources (fixes [ReVanced#1](https://github.com/sudevn/revanced-patcher/issues/1)) ([d5a3c76](d5a3c76))
* Classes not being written properly because of array shifting ([1471956](1471956))
* current must be calculated after increment ([5f12bab](5f12bab))
* fix classes having multiple instances of fields ([b711b80](b711b80))
* fix classes having multiple method instances ([12c10d8](12c10d8))
* Fixed writer & signature resolver, improved tests & speed, minor refactoring ([bb42fa3](bb42fa3))
* fuzzy resolver warning params were turned around ([d49df10](d49df10))
* give ClassWriter a ClassReader for symtable ([e8f6973](e8f6973))
* **gradle:** publish source and javadocs ([87bbde5](87bbde5))
* incorrect pattern offset ([03700ff](03700ff))
* **Io:** fix finding classes by name ([460d62a](460d62a))
* **Io:** JAR loading and saving ([ReVanced#8](https://github.com/sudevn/revanced-patcher/issues/8)) ([4d98cbc](4d98cbc))
* make `methodMetadata` nullable in `MethodSignatureMetadata` ([864e38c](864e38c))
* make warnings nullable instead of lateinit ([04b49b8](04b49b8))
* match to correct signature method parameters ([c49071a](c49071a))
* **MethodResolver:** fix cd57a8c ([1af31b2](1af31b2))
* **MethodResolver:** strip labels and line numbers so opcode patterns match ([8d1bb5f](8d1bb5f))
* **MethodResolver:** strip labels nodes so opcode patterns match ([cd57a8c](cd57a8c))
* MethodSignature#resolved throwing an exception ([82b1e66](82b1e66))
* Move proxy package out of cache package ([6bc4e7e](6bc4e7e))
* null check causing an exception ([560c485](560c485))
* nullable signature members ([ReVanced#10](https://github.com/sudevn/revanced-patcher/issues/10)) ([8db8893](8db8893))
* Patch should have access to the Cache ([6c0f082](6c0f082))
* Patcher not writing resolved methods ([d15240d](d15240d))
* remove broken code ([0e72a6e](0e72a6e))
* remove leftover debug code ([4458141](4458141))
* return mutable set of classes ([84bc7e0](84bc7e0))
* returning failure on success ([3b68d5c](3b68d5c))
* Search method map for existing class proxy ([d5e694c](d5e694c))
* set index for insertAt to 0 by default ([1769132](1769132))
* set marklimit to Integer.MAX_VALUE ([ab6453c](ab6453c))
* string signature in `SignatureResolver` ([ac36d19](ac36d19))
* Suppress unused for addFiles ([a0d6d46](a0d6d46))
* throwing in case the opcode patterns do not match ([f72dd68](f72dd68))
* use Array instead of Iterable for methodParameters ([312235b](312235b))
* workflow on dev branch ([7e67daf](7e67daf))
* write all classes ([6ad51aa](6ad51aa))

### Code Refactoring

* bump multidexlib2 to 2.5.2.r2 ([32e6458](32e6458))
* Change all references from Array to Iterable ([264989f](264989f))
* convert Patch to abstract class ([23e897a](23e897a))
* Optimize Signature class ([ReVanced#11](https://github.com/sudevn/revanced-patcher/issues/11)) ([49beec9](49beec9))
* Rename `net.revanced` to `app.revanced` ([3ab42a9](3ab42a9))

### Features

* Add `findParentMethod` utility method ([ReVanced#4](https://github.com/sudevn/revanced-patcher/issues/4)) ([00c6ab7](00c6ab7))
* add `MethodWalker` ([659e108](659e108))
* add extensions for cloning methods ([df7503b](df7503b))
* add findClass method with className ([78235d1](78235d1))
* Add first tests ([6767c8f](6767c8f))
* add fuzzy resolver ([a492808](a492808))
* add immutableMethod ([eed1cfd](eed1cfd))
* add inline smali compiler ([dbafe2a](dbafe2a))
* add missing test for fields ([4022b8b](4022b8b))
* add or extension for AccessFlags ([aec5eeb](aec5eeb))
* Add patch metadata ([8544fc4](8544fc4)), closes [ReVancedTeam/revanced-patches#1](https://github.com/ReVancedTeam/revanced-patches/issues/1)
* add SafeClassWriter ([ca6b94d](ca6b94d))
* Add warnings for Fuzzy resolver ([643a14e](643a14e))
* allow classes to be overwritten in addFiles and resolve signatures when applyPatches is called ([5f71a34](5f71a34))
* Allow unknown opcodes using `null` ([f4a47d4](f4a47d4))
* Finish first patcher test ([a9e4e8a](a9e4e8a))
* Improve `SignatureResolver` ([88a6a27](88a6a27))
* migrate to dexlib ([be51f42](be51f42))
* Minor refactor and return proxy, if class has been proxied already ([2d3c611](2d3c611))
* properly manage `ClassProxy` & add `ProxyBackedClassList` ([2319787](2319787))
* remaining mutable `EncodedValue` classes ([7d38bb0](7d38bb0))
* string signature ([ReVanced#22](https://github.com/sudevn/revanced-patcher/issues/22)) ([c245edb](c245edb))

### Performance Improvements

* check type instead of class ([47eb493](47eb493))
* do not resolve empty signatures list ([1f7bf3a](1f7bf3a))
* lazy-ify all mutable clones ([05e4400](05e4400))
* optimize indexOf call away ([f8e978a](f8e978a))
* use Set instead of List since there are no dupes ([6221387](6221387))
* use String List and compare instead of any lambda ([aed4fd9](aed4fd9))

### Reverts

* AccessFlag extensions not working with IDE ([e161f7f](e161f7f))
* previous commits check for dupes in dexFile, not cache ([433914f](433914f))

### BREAKING CHANGES

* arrayOf has to be changed to listOf.
* Method signature of Patcher#save() was changed to comply with the changes of multidexlib2.
* Removed usage of ASM library
* Array<Int> was changed to IntArray. This breaks existing patches.
* Package name was changed from "net.revanced" to "app.revanced"
* Method signature of execute() was changed to include the cache, this will break existing implementations of the Patch class.
* Patch class is now an abstract class. You must implement it. You can use anonymous implements, like done in the tests.
github-actions bot pushed a commit to sudevn/revanced-patcher that referenced this issue Apr 26, 2022
# 1.0.0 (2022-04-26)

### Bug Fixes

* `compareSignatureToMethod` not matching correctly in case opcodes are null ([5ae5e98](5ae5e98))
* `ConcurrentModificationException` while iterating through `proxies` and modifying it ([bfeeaf4](bfeeaf4))
* `PackageMetadata` ([305a817](305a817))
* `replaceWith` not replacing classes with used class proxies ([f0f3403](f0f3403))
* adding existing classes to the patchers cache ([4281546](4281546))
* always return PatchResultSuccess on patch success ([866b03a](866b03a))
* applying no patches throwing error ([f88c118](f88c118))
* applyPatches not returning successful patches ([8b70bb4](8b70bb4))
* avoid ignoring test resources (fixes [ReVanced#1](https://github.com/sudevn/revanced-patcher/issues/1)) ([d5a3c76](d5a3c76))
* Classes not being written properly because of array shifting ([1471956](1471956))
* current must be calculated after increment ([5f12bab](5f12bab))
* fix classes having multiple instances of fields ([b711b80](b711b80))
* fix classes having multiple method instances ([12c10d8](12c10d8))
* Fixed writer & signature resolver, improved tests & speed, minor refactoring ([bb42fa3](bb42fa3))
* fuzzy resolver warning params were turned around ([d49df10](d49df10))
* give ClassWriter a ClassReader for symtable ([e8f6973](e8f6973))
* **gradle:** publish source and javadocs ([87bbde5](87bbde5))
* incorrect pattern offset ([03700ff](03700ff))
* **Io:** fix finding classes by name ([460d62a](460d62a))
* **Io:** JAR loading and saving ([ReVanced#8](https://github.com/sudevn/revanced-patcher/issues/8)) ([4d98cbc](4d98cbc))
* make `methodMetadata` nullable in `MethodSignatureMetadata` ([864e38c](864e38c))
* make warnings nullable instead of lateinit ([04b49b8](04b49b8))
* match to correct signature method parameters ([c49071a](c49071a))
* **MethodResolver:** fix cd57a8c ([1af31b2](1af31b2))
* **MethodResolver:** strip labels and line numbers so opcode patterns match ([8d1bb5f](8d1bb5f))
* **MethodResolver:** strip labels nodes so opcode patterns match ([cd57a8c](cd57a8c))
* MethodSignature#resolved throwing an exception ([82b1e66](82b1e66))
* Move proxy package out of cache package ([6bc4e7e](6bc4e7e))
* null check causing an exception ([560c485](560c485))
* nullable signature members ([ReVanced#10](https://github.com/sudevn/revanced-patcher/issues/10)) ([8db8893](8db8893))
* Patch should have access to the Cache ([6c0f082](6c0f082))
* Patcher not writing resolved methods ([d15240d](d15240d))
* remove broken code ([0e72a6e](0e72a6e))
* remove leftover debug code ([4458141](4458141))
* return mutable set of classes ([84bc7e0](84bc7e0))
* returning failure on success ([3b68d5c](3b68d5c))
* Search method map for existing class proxy ([d5e694c](d5e694c))
* set index for insertAt to 0 by default ([1769132](1769132))
* set marklimit to Integer.MAX_VALUE ([ab6453c](ab6453c))
* string signature in `SignatureResolver` ([ac36d19](ac36d19))
* Suppress unused for addFiles ([a0d6d46](a0d6d46))
* throwing in case the opcode patterns do not match ([f72dd68](f72dd68))
* use Array instead of Iterable for methodParameters ([312235b](312235b))
* workflow on dev branch ([7e67daf](7e67daf))
* write all classes ([6ad51aa](6ad51aa))

### Code Refactoring

* bump multidexlib2 to 2.5.2.r2 ([32e6458](32e6458))
* Change all references from Array to Iterable ([264989f](264989f))
* convert Patch to abstract class ([23e897a](23e897a))
* Optimize Signature class ([ReVanced#11](https://github.com/sudevn/revanced-patcher/issues/11)) ([49beec9](49beec9))
* Rename `net.revanced` to `app.revanced` ([3ab42a9](3ab42a9))

### Features

* Add `findParentMethod` utility method ([ReVanced#4](https://github.com/sudevn/revanced-patcher/issues/4)) ([00c6ab7](00c6ab7))
* add `MethodWalker` ([659e108](659e108))
* add extensions for cloning methods ([df7503b](df7503b))
* add findClass method with className ([78235d1](78235d1))
* Add first tests ([6767c8f](6767c8f))
* add fuzzy resolver ([a492808](a492808))
* add immutableMethod ([eed1cfd](eed1cfd))
* add inline smali compiler ([dbafe2a](dbafe2a))
* add missing test for fields ([4022b8b](4022b8b))
* add or extension for AccessFlags ([aec5eeb](aec5eeb))
* Add patch metadata ([8544fc4](8544fc4)), closes [ReVancedTeam/revanced-patches#1](https://github.com/ReVancedTeam/revanced-patches/issues/1)
* add SafeClassWriter ([ca6b94d](ca6b94d))
* Add warnings for Fuzzy resolver ([643a14e](643a14e))
* allow classes to be overwritten in addFiles and resolve signatures when applyPatches is called ([5f71a34](5f71a34))
* Allow unknown opcodes using `null` ([f4a47d4](f4a47d4))
* Finish first patcher test ([a9e4e8a](a9e4e8a))
* Improve `SignatureResolver` ([88a6a27](88a6a27))
* migrate to dexlib ([be51f42](be51f42))
* Minor refactor and return proxy, if class has been proxied already ([2d3c611](2d3c611))
* properly manage `ClassProxy` & add `ProxyBackedClassList` ([2319787](2319787))
* remaining mutable `EncodedValue` classes ([7d38bb0](7d38bb0))
* string signature ([ReVanced#22](https://github.com/sudevn/revanced-patcher/issues/22)) ([c245edb](c245edb))

### Performance Improvements

* check type instead of class ([47eb493](47eb493))
* do not resolve empty signatures list ([1f7bf3a](1f7bf3a))
* lazy-ify all mutable clones ([05e4400](05e4400))
* optimize indexOf call away ([f8e978a](f8e978a))
* use Set instead of List since there are no dupes ([6221387](6221387))
* use String List and compare instead of any lambda ([aed4fd9](aed4fd9))

### Reverts

* AccessFlag extensions not working with IDE ([e161f7f](e161f7f))
* previous commits check for dupes in dexFile, not cache ([433914f](433914f))

### BREAKING CHANGES

* arrayOf has to be changed to listOf.
* Method signature of Patcher#save() was changed to comply with the changes of multidexlib2.
* Removed usage of ASM library
* Array<Int> was changed to IntArray. This breaks existing patches.
* Package name was changed from "net.revanced" to "app.revanced"
* Method signature of execute() was changed to include the cache, this will break existing implementations of the Patch class.
* Patch class is now an abstract class. You must implement it. You can use anonymous implements, like done in the tests.
github-actions bot pushed a commit to gitcetra/revanced-patcher that referenced this issue Jun 3, 2022
# 1.0.0-dev.1 (2022-06-03)

### Bug Fixes

* `compareSignatureToMethod` not matching correctly in case opcodes are null ([5ae5e98](5ae5e98))
* `ConcurrentModificationException` while iterating through `proxies` and modifying it ([bfeeaf4](bfeeaf4))
* `JarPatchBundle` loading non-class files to class loader ([3f0c740](3f0c740))
* `PackageMetadata` ([305a817](305a817))
* `replaceWith` not replacing classes with used class proxies ([f0f3403](f0f3403))
* adding existing classes to the patchers cache ([4281546](4281546))
* always return PatchResultSuccess on patch success ([866b03a](866b03a))
* applying no patches throwing error ([f88c118](f88c118))
* applyPatches not returning successful patches ([8b70bb4](8b70bb4))
* avoid ignoring test resources (fixes [ReVanced#1](https://github.com/gitcetra/revanced-patcher/issues/1)) ([d5a3c76](d5a3c76))
* Classes not being written properly because of array shifting ([1471956](1471956))
* current must be calculated after increment ([5f12bab](5f12bab))
* failing tests temporarily ([66b08f8](66b08f8))
* fix classes having multiple instances of fields ([b711b80](b711b80))
* fix classes having multiple method instances ([12c10d8](12c10d8))
* Fixed writer & signature resolver, improved tests & speed, minor refactoring ([bb42fa3](bb42fa3))
* fuzzy resolver warning params were turned around ([d49df10](d49df10))
* give ClassWriter a ClassReader for symtable ([e8f6973](e8f6973))
* **gradle:** publish source and javadocs ([87bbde5](87bbde5))
* incorrect pattern offset ([03700ff](03700ff))
* **Io:** fix finding classes by name ([460d62a](460d62a))
* **Io:** JAR loading and saving ([ReVanced#8](https://github.com/gitcetra/revanced-patcher/issues/8)) ([4d98cbc](4d98cbc))
* make `methodMetadata` nullable in `MethodSignatureMetadata` ([864e38c](864e38c))
* make warnings nullable instead of lateinit ([04b49b8](04b49b8))
* match to correct signature method parameters ([c49071a](c49071a))
* **MethodResolver:** fix cd57a8c ([1af31b2](1af31b2))
* **MethodResolver:** strip labels and line numbers so opcode patterns match ([8d1bb5f](8d1bb5f))
* **MethodResolver:** strip labels nodes so opcode patterns match ([cd57a8c](cd57a8c))
* MethodSignature#resolved throwing an exception ([82b1e66](82b1e66))
* Move proxy package out of cache package ([6bc4e7e](6bc4e7e))
* null check causing an exception ([560c485](560c485))
* nullable signature members ([ReVanced#10](https://github.com/gitcetra/revanced-patcher/issues/10)) ([8db8893](8db8893))
* Patch should have access to the Cache ([6c0f082](6c0f082))
* Patcher not writing resolved methods ([d15240d](d15240d))
* qualifying `Element` with wrong package ([4d74de4](4d74de4))
* reaching all constructors not possible ([37fa994](37fa994))
* reformat (trigger release) ([45a167e](45a167e))
* remove broken code ([0e72a6e](0e72a6e))
* remove dependency to fork of Apktool ([0fa529f](0fa529f))
* remove leftover debug code ([4458141](4458141))
* return mutable set of classes ([84bc7e0](84bc7e0))
* returning failure on success ([3b68d5c](3b68d5c))
* Search method map for existing class proxy ([d5e694c](d5e694c))
* set index for insertAt to 0 by default ([1769132](1769132))
* set marklimit to Integer.MAX_VALUE ([ab6453c](ab6453c))
* string signature in `SignatureResolver` ([ac36d19](ac36d19))
* Suppress unused for addFiles ([a0d6d46](a0d6d46))
* throwing in case the opcode patterns do not match ([f72dd68](f72dd68))
* use Array instead of Iterable for methodParameters ([312235b](312235b))
* using old instance of `Androlib` when saving ([5630e49](5630e49))
* workflow on dev branch ([7e67daf](7e67daf))
* write all classes ([6ad51aa](6ad51aa))

### Code Refactoring

* bump multidexlib2 to 2.5.2.r2 ([32e6458](32e6458))
* Change all references from Array to Iterable ([264989f](264989f))
* convert Patch to abstract class ([23e897a](23e897a))
* Optimize Signature class ([ReVanced#11](https://github.com/gitcetra/revanced-patcher/issues/11)) ([49beec9](49beec9))
* Rename `net.revanced` to `app.revanced` ([3ab42a9](3ab42a9))

### Features

* `PatchLoader` ([1a99eca](1a99eca))
* Add `findParentMethod` utility method ([ReVanced#4](https://github.com/gitcetra/revanced-patcher/issues/4)) ([00c6ab7](00c6ab7))
* add `MethodWalker` ([659e108](659e108))
* add `p` naming scheme to smali compiler ([38556d6](38556d6))
* add extensions for cloning methods ([df7503b](df7503b))
* add findClass method with className ([78235d1](78235d1))
* Add first tests ([6767c8f](6767c8f))
* add fuzzy resolver ([a492808](a492808))
* add immutableMethod ([eed1cfd](eed1cfd))
* add inline smali compiler ([dbafe2a](dbafe2a))
* add missing test for fields ([4022b8b](4022b8b))
* add or extension for AccessFlags ([aec5eeb](aec5eeb))
* Add patch metadata ([8544fc4](8544fc4)), closes [ReVancedTeam/revanced-patches#1](https://github.com/ReVancedTeam/revanced-patches/issues/1)
* add SafeClassWriter ([ca6b94d](ca6b94d))
* Add warnings for Fuzzy resolver ([643a14e](643a14e))
* allow classes to be overwritten in addFiles and resolve signatures when applyPatches is called ([5f71a34](5f71a34))
* Allow unknown opcodes using `null` ([f4a47d4](f4a47d4))
* Finish first patcher test ([a9e4e8a](a9e4e8a))
* Improve `SignatureResolver` ([88a6a27](88a6a27))
* migrate to `DexPatchBundle` and `JarPatchBundle` ([7573db2](7573db2))
* migrate to dexlib ([be51f42](be51f42))
* Minor refactor and return proxy, if class has been proxied already ([2d3c611](2d3c611))
* patch dependencies annotation and `PatcherOptions` ([8442991](8442991))
* properly manage `ClassProxy` & add `ProxyBackedClassList` ([2319787](2319787))
* remaining mutable `EncodedValue` classes ([7d38bb0](7d38bb0))
* string signature ([ReVanced#22](https://github.com/gitcetra/revanced-patcher/issues/22)) ([c245edb](c245edb))
* use annotations instead of metadata objects ([6726884](6726884))
* utility functions to get metadata of patch & sigs ([72f16b7](72f16b7))

### Performance Improvements

* check type instead of class ([47eb493](47eb493))
* decode manifest only when not using resource patcher ([40b1fa4](40b1fa4))
* depend on `androlib` instead of `ApkDecoder` ([e5c054a](e5c054a))
* do not resolve empty signatures list ([1f7bf3a](1f7bf3a))
* lazy-ify all mutable clones ([05e4400](05e4400))
* optimize indexOf call away ([f8e978a](f8e978a))
* use Set instead of List since there are no dupes ([6221387](6221387))
* use String List and compare instead of any lambda ([aed4fd9](aed4fd9))

### Reverts

* AccessFlag extensions not working with IDE ([e161f7f](e161f7f))
* previous commits check for dupes in dexFile, not cache ([433914f](433914f))

### BREAKING CHANGES

* arrayOf has to be changed to listOf.
* Method signature of Patcher#save() was changed to comply with the changes of multidexlib2.
* Removed usage of ASM library
* Array<Int> was changed to IntArray. This breaks existing patches.
* Package name was changed from "net.revanced" to "app.revanced"
* Method signature of execute() was changed to include the cache, this will break existing implementations of the Patch class.
* Patch class is now an abstract class. You must implement it. You can use anonymous implements, like done in the tests.
oSumAtrIX pushed a commit that referenced this issue Jun 5, 2022
# 1.0.0-dev.1 (2022-03-23)

### Bug Fixes

* avoid ignoring test resources (fixes [#1](#1)) ([d5a3c76](d5a3c76))
* current must be calculated after increment ([5f12bab](5f12bab))
* **gradle:** publish source and javadocs ([87bbde5](87bbde5))
* **Io:** fix finding classes by name ([460d62a](460d62a))
* **Io:** JAR loading and saving ([#8](#8)) ([4d98cbc](4d98cbc))
* nullable signature members ([#10](#10)) ([8db8893](8db8893))
* Patch should have access to the Cache ([6c0f082](6c0f082))
* remove broken code ([0e72a6e](0e72a6e))
* set index for insertAt to 0 by default ([1769132](1769132))
* workflow on dev branch ([7e67daf](7e67daf))

### Code Refactoring

* convert Patch to abstract class ([23e897a](23e897a))
* Optimize Signature class ([#11](#11)) ([49beec9](49beec9))
* Rename `net.revanced` to `app.revanced` ([3ab42a9](3ab42a9))

### Features

* Add `findParentMethod` utility method ([#4](#4)) ([00c6ab7](00c6ab7))

### BREAKING CHANGES

* Array<Int> was changed to IntArray. This breaks existing patches.
* Package name was changed from "net.revanced" to "app.revanced"
* Method signature of execute() was changed to include the cache, this will break existing implementations of the Patch class.
* Patch class is now an abstract class. You must implement it. You can use anonymous implements, like done in the tests.
github-actions bot pushed a commit that referenced this issue Jun 5, 2022
# 1.0.0 (2022-06-05)

### Bug Fixes

* `compareSignatureToMethod` not matching correctly in case opcodes are null ([cca12aa](cca12aa))
* `ConcurrentModificationException` while iterating through `proxies` and modifying it ([6cb7cdb](6cb7cdb))
* `JarPatchBundle` loading non-class files to class loader ([849616d](849616d))
* `PackageMetadata` ([7399450](7399450))
* `replaceWith` not replacing classes with used class proxies ([4178a1e](4178a1e))
* adding existing classes to the patchers cache ([9659a61](9659a61))
* always return PatchResultSuccess on patch success ([996c4ac](996c4ac))
* applying no patches throwing error ([5ca5a1c](5ca5a1c))
* applyPatches not returning successful patches ([f806cb3](f806cb3))
* avoid ignoring test resources (fixes [#1](#1)) ([d5a3c76](d5a3c76))
* Classes not being written properly because of array shifting ([6e4db11](6e4db11))
* current must be calculated after increment ([5f12bab](5f12bab))
* failing tests temporarily ([fc05fe7](fc05fe7))
* fix classes having multiple instances of fields ([7cc8a7d](7cc8a7d))
* fix classes having multiple method instances ([398239d](398239d))
* Fixed writer & signature resolver, improved tests & speed, minor refactoring ([e6c2501](e6c2501))
* fuzzy resolver warning params were turned around ([e5bea06](e5bea06))
* give ClassWriter a ClassReader for symtable ([41749ba](41749ba))
* **gradle:** publish source and javadocs ([c236ebe](c236ebe))
* incorrect pattern offset ([f3b5f67](f3b5f67))
* **Io:** fix finding classes by name ([b957501](b957501))
* **Io:** JAR loading and saving ([#8](#8)) ([310a7c4](310a7c4))
* make `methodMetadata` nullable in `MethodSignatureMetadata` ([4e56652](4e56652))
* make warnings nullable instead of lateinit ([8f1a629](8f1a629))
* match to correct signature method parameters ([1ee2e4b](1ee2e4b))
* **MethodResolver:** fix cd57a8c ([cbd8df2](cbd8df2))
* **MethodResolver:** strip labels and line numbers so opcode patterns match ([699c730](699c730))
* **MethodResolver:** strip labels nodes so opcode patterns match ([82c5306](82c5306))
* MethodSignature#resolved throwing an exception ([c612676](c612676))
* Move proxy package out of cache package ([ce21bd6](ce21bd6))
* null check causing an exception ([338bd9f](338bd9f))
* nullable signature members ([#10](#10)) ([674461f](674461f))
* Patch should have access to the Cache ([4dd820f](4dd820f))
* Patcher not writing resolved methods ([fac44a5](fac44a5))
* qualifying `Element` with wrong package ([024fa86](024fa86))
* reaching all constructors not possible ([c459beb](c459beb))
* reformat (trigger release) ([bf48945](bf48945))
* remove broken code ([0e72a6e](0e72a6e))
* remove dependency to fork of Apktool ([11abc67](11abc67))
* remove leftover debug code ([0f30eac](0f30eac))
* return mutable set of classes ([66a9b76](66a9b76))
* returning failure on success ([48c4ea2](48c4ea2))
* Search method map for existing class proxy ([a1e909b](a1e909b))
* set index for insertAt to 0 by default ([d5b4c99](d5b4c99))
* set marklimit to Integer.MAX_VALUE ([e6e468f](e6e468f))
* string signature in `SignatureResolver` ([e5ae970](e5ae970))
* Suppress unused for addFiles ([3d6a1d3](3d6a1d3))
* throwing in case the opcode patterns do not match ([3144ec8](3144ec8))
* use Array instead of Iterable for methodParameters ([dfac8f0](dfac8f0))
* using old instance of `Androlib` when saving ([a4d8be2](a4d8be2))
* workflow on dev branch ([428f7f4](428f7f4))
* write all classes ([f068fc8](f068fc8))

### Code Refactoring

* bump multidexlib2 to 2.5.2.r2 ([a6c6b49](a6c6b49))
* Change all references from Array to Iterable ([72f3cad](72f3cad))
* convert Patch to abstract class ([cb9b1b9](cb9b1b9))
* Optimize Signature class ([#11](#11)) ([7faa001](7faa001))
* Rename `net.revanced` to `app.revanced` ([7087230](7087230))

### Features

* `Dependencies` annotation ([893d4c6](893d4c6))
* `PatchLoader` ([ec9fd15](ec9fd15))
* Add `findParentMethod` utility method ([#4](#4)) ([bbb2c54](bbb2c54))
* add `MethodWalker` ([7755bbc](7755bbc))
* add `p` naming scheme to smali compiler ([79909cf](79909cf))
* add extensions for cloning methods ([01bfbd6](01bfbd6))
* add findClass method with className ([4087f49](4087f49))
* Add first tests ([544bcf7](544bcf7))
* add fuzzy resolver ([7a56dca](7a56dca))
* add immutableMethod ([c63b20f](c63b20f))
* add inline smali compiler ([bfe4e3e](bfe4e3e))
* add missing test for fields ([6b8b057](6b8b057))
* add or extension for AccessFlags ([00c85b5](00c85b5))
* Add patch metadata ([642e903](642e903)), closes [ReVancedTeam/revanced-patches#1](https://github.com/ReVancedTeam/revanced-patches/issues/1)
* add SafeClassWriter ([6626014](6626014))
* Add warnings for Fuzzy resolver ([715a2ad](715a2ad))
* allow classes to be overwritten in addFiles and resolve signatures when applyPatches is called ([1db735b](1db735b))
* Allow unknown opcodes using `null` ([0e5f4ba](0e5f4ba))
* Finish first patcher test ([0d8d19e](0d8d19e))
* Improve `SignatureResolver` ([139a23b](139a23b))
* migrate to `DexPatchBundle` and `JarPatchBundle` ([8615798](8615798))
* migrate to dexlib ([3651981](3651981))
* Minor refactor and return proxy, if class has been proxied already ([4b26305](4b26305))
* optional `forStaticMethod` parameter for `InlineSmaliCompiler.compileMethodInstructions` ([41e8860](41e8860))
* patch dependencies annotation and `PatcherOptions` ([6c65952](6c65952))
* properly manage `ClassProxy` & add `ProxyBackedClassList` ([6cb1fdf](6cb1fdf))
* remaining mutable `EncodedValue` classes ([3f97cc8](3f97cc8))
* string signature ([#22](#22)) ([612515a](612515a))
* use annotations instead of metadata objects ([d20f7fd](d20f7fd))
* utility functions to get metadata of patch & sigs ([54511a4](54511a4))

### Performance Improvements

* check type instead of class ([c7ef264](c7ef264))
* decode manifest only when not using resource patcher ([4f60bea](4f60bea))
* depend on `androlib` instead of `ApkDecoder` ([cc9416d](cc9416d))
* do not resolve empty signatures list ([b1eebc9](b1eebc9))
* lazy-ify all mutable clones ([d18a3b6](d18a3b6))
* optimize indexOf call away ([9991f39](9991f39))
* use Set instead of List since there are no dupes ([e65ebd2](e65ebd2))
* use String List and compare instead of any lambda ([5bd416b](5bd416b))

### Reverts

* AccessFlag extensions not working with IDE ([0bfb92a](0bfb92a))
* previous commits check for dupes in dexFile, not cache ([e810197](e810197))

### BREAKING CHANGES

* arrayOf has to be changed to listOf.
* Method signature of Patcher#save() was changed to comply with the changes of multidexlib2.
* Removed usage of ASM library
* Array<Int> was changed to IntArray. This breaks existing patches.
* Package name was changed from "net.revanced" to "app.revanced"
* Method signature of execute() was changed to include the cache, this will break existing implementations of the Patch class.
* Patch class is now an abstract class. You must implement it. You can use anonymous implements, like done in the tests.
github-actions bot pushed a commit to KiyuM1n/revanced-patcher that referenced this issue Aug 23, 2022
# 1.0.0 (2022-08-23)

### Bug Fixes

* `compareSignatureToMethod` not matching correctly in case opcodes are null ([cca12aa](cca12aa))
* `ConcurrentModificationException` while iterating through `proxies` and modifying it ([6cb7cdb](6cb7cdb))
* `InlineSmaliCompiler.compile` using 0 registers instead of 1 by default ([835a421](835a421))
* `JarPatchBundle` loading non-class files to class loader ([849616d](849616d))
* `MethodWalker` not accounting for all reference instructions ([48068cb](48068cb))
* `PackageMetadata` ([7399450](7399450))
* `replaceWith` not replacing classes with used class proxies ([4178a1e](4178a1e))
* `String.toInstructions` defaulting `forStaticMethod` to `false` ([5a2f02b](5a2f02b)), closes [ReVanced/revanced-patches#46](ReVanced/revanced-patches#46)
* add docs (trigger release) ([6628b78](6628b78))
* add execute permission to `./gradlew` file ([ReVanced#46](https://github.com/Sean1781031/revanced-patcher/issues/46)) ([34f607a](34f607a))
* adding existing classes to the patchers cache ([9659a61](9659a61))
* always return PatchResultSuccess on patch success ([996c4ac](996c4ac))
* applying no patches throwing error ([5ca5a1c](5ca5a1c))
* applyPatches not returning successful patches ([f806cb3](f806cb3))
* avoid ignoring test resources (fixes [ReVanced#1](https://github.com/Sean1781031/revanced-patcher/issues/1)) ([d5a3c76](d5a3c76))
* callback for each file instead of class ([930768d](930768d))
* callback only when inteded ([e3bf367](e3bf367))
* check if patch option requirement is met ([14a73bf](14a73bf))
* Classes not being written properly because of array shifting ([6e4db11](6e4db11))
* close open files ([ReVanced#75](https://github.com/Sean1781031/revanced-patcher/issues/75)) ([123ad54](123ad54))
* close stream when closing `DomFileEditor` ([77604d4](77604d4))
* current must be calculated after increment ([5f12bab](5f12bab))
* dexlib must be propagated ([b738dcd](b738dcd))
* DomFileEditor opening in- and output streams on the same file ([83187c9](83187c9))
* enforce aapt v2 ([b68b0bf](b68b0bf))
* failing tests temporarily ([fc05fe7](fc05fe7))
* fix classes having multiple instances of fields ([7cc8a7d](7cc8a7d))
* fix classes having multiple method instances ([398239d](398239d))
* Fixed writer & signature resolver, improved tests & speed, minor refactoring ([e6c2501](e6c2501))
* fuzzy resolver warning params were turned around ([e5bea06](e5bea06))
* give ClassWriter a ClassReader for symtable ([41749ba](41749ba))
* goodbye security ([8f3ac77](8f3ac77))
* **gradle:** publish source and javadocs ([c236ebe](c236ebe))
* handle null properly ([ReVanced#64](https://github.com/Sean1781031/revanced-patcher/issues/64)) ([482af78](482af78))
* incorrect pattern offset ([f3b5f67](f3b5f67))
* invert fingerprint resolution condition of `customFingerprint` ([e2faf4c](e2faf4c))
* **Io:** fix finding classes by name ([b957501](b957501))
* **Io:** JAR loading and saving ([ReVanced#8](https://github.com/Sean1781031/revanced-patcher/issues/8)) ([310a7c4](310a7c4))
* make `methodMetadata` nullable in `MethodSignatureMetadata` ([4e56652](4e56652))
* make warnings nullable instead of lateinit ([8f1a629](8f1a629))
* match to correct signature method parameters ([1ee2e4b](1ee2e4b))
* **MethodResolver:** fix cd57a8c ([cbd8df2](cbd8df2))
* **MethodResolver:** strip labels and line numbers so opcode patterns match ([699c730](699c730))
* **MethodResolver:** strip labels nodes so opcode patterns match ([82c5306](82c5306))
* MethodSignature#resolved throwing an exception ([c612676](c612676))
* missing additional items [skip ci] ([0ebab8b](0ebab8b))
* more useful error message ([4b2e323](4b2e323))
* Move proxy package out of cache package ([ce21bd6](ce21bd6))
* mutability of local variable `modified` ([0e87ef5](0e87ef5))
* null check causing an exception ([338bd9f](338bd9f))
* nullable signature members ([ReVanced#10](https://github.com/Sean1781031/revanced-patcher/issues/10)) ([674461f](674461f))
* Patch should have access to the Cache ([4dd820f](4dd820f))
* Patcher not writing resolved methods ([fac44a5](fac44a5))
* Patcher setting BuildOptions too late ([6a5c873](6a5c873))
* qualifying `Element` with wrong package ([024fa86](024fa86))
* reaching all constructors not possible ([c459beb](c459beb))
* reformat (trigger release) ([bf48945](bf48945))
* remove broken code ([0e72a6e](0e72a6e))
* remove dependency to fork of Apktool ([11abc67](11abc67))
* remove javadoc jar (also trigger release) ([56f6ca3](56f6ca3))
* remove leftover debug code ([0f30eac](0f30eac))
* remove requirement for solution [skip ci] ([ReVanced#80](https://github.com/Sean1781031/revanced-patcher/issues/80)) ([9a4d30e](9a4d30e))
* resource patcher ([31815ca](31815ca))
* return mutable set of classes ([66a9b76](66a9b76))
* return resourceFile to caller ([1f75777](1f75777))
* returning failure on success ([48c4ea2](48c4ea2))
* revert soft dependencies ([7b2d058](7b2d058))
* Search method map for existing class proxy ([a1e909b](a1e909b))
* set index for insertAt to 0 by default ([d5b4c99](d5b4c99))
* set marklimit to Integer.MAX_VALUE ([e6e468f](e6e468f))
* show error message if cause is null ([f9da2ad](f9da2ad))
* show error message instead of `null` ([8d95b14](8d95b14))
* string signature in `SignatureResolver` ([e5ae970](e5ae970))
* Suppress unused for addFiles ([3d6a1d3](3d6a1d3))
* throwing in case the opcode patterns do not match ([3144ec8](3144ec8))
* update apktool ([ab866bb](ab866bb))
* update apktool ([051afd9](051afd9))
* update apktool to fork ([566ecef](566ecef))
* use `Exception` instead of `MethodNotFoundException` ([2fc4ec4](2fc4ec4))
* use Array instead of Iterable for methodParameters ([dfac8f0](dfac8f0))
* using old instance of `Androlib` when saving ([a4d8be2](a4d8be2))
* version not working with apktool due to cache ([03f5ee0](03f5ee0))
* workflow on dev branch ([428f7f4](428f7f4))
* write all classes ([f068fc8](f068fc8))

### Code Refactoring

* bump multidexlib2 to 2.5.2.r2 ([a6c6b49](a6c6b49))
* Change all references from Array to Iterable ([72f3cad](72f3cad))
* convert Patch to abstract class ([cb9b1b9](cb9b1b9))
* migrate from `Signature` to `Fingerprint` ([efa8ea1](efa8ea1))
* Optimize Signature class ([ReVanced#11](https://github.com/Sean1781031/revanced-patcher/issues/11)) ([7faa001](7faa001))
* Rename `net.revanced` to `app.revanced` ([7087230](7087230))

### Features

* `Closeable` patches ([bbd40bf](bbd40bf))
* `Dependencies` annotation ([893d4c6](893d4c6))
* `parametersCount` for `InlineSmaliCompiler` instead of `parameters` ([ad6c5c8](ad6c5c8))
* `PatchLoader` ([ec9fd15](ec9fd15))
* Add `findParentMethod` utility method ([ReVanced#4](https://github.com/Sean1781031/revanced-patcher/issues/4)) ([bbb2c54](bbb2c54))
* add `MethodWalker` ([7755bbc](7755bbc))
* add `p` naming scheme to smali compiler ([79909cf](79909cf))
* add extensions for cloning methods ([01bfbd6](01bfbd6))
* add findClass method with className ([4087f49](4087f49))
* Add first tests ([544bcf7](544bcf7))
* add fuzzy resolver ([7a56dca](7a56dca))
* add getValue & setValue for PatchOption ([2572cd0](2572cd0))
* add immutableMethod ([c63b20f](c63b20f))
* add inline smali compiler ([bfe4e3e](bfe4e3e))
* add missing test for fields ([6b8b057](6b8b057))
* add or extension for AccessFlags ([00c85b5](00c85b5))
* Add patch metadata ([642e903](642e903)), closes [ReVancedTeam/revanced-patches#1](https://github.com/ReVancedTeam/revanced-patches/issues/1)
* add Patch#dependsOn extension ([523f67b](523f67b))
* add replace and remove extensions ([ReVanced#50](https://github.com/Sean1781031/revanced-patcher/issues/50)) ([92ac5e4](92ac5e4))
* add SafeClassWriter ([6626014](6626014))
* Add warnings for Fuzzy resolver ([715a2ad](715a2ad))
* allow classes to be overwritten in addFiles and resolve signatures when applyPatches is called ([1db735b](1db735b))
* allow custom aapt path to be specified ([8eb4a8f](8eb4a8f))
* allow custom framework path to be specified ([d3a580e](d3a580e))
* Allow unknown opcodes using `null` ([0e5f4ba](0e5f4ba))
* exclusive mutable access to files ([814ce0b](814ce0b))
* feature request issue template ([1b39278](1b39278))
* Finish first patcher test ([0d8d19e](0d8d19e))
* Improve `SignatureResolver` ([139a23b](139a23b))
* improve logging ([c20dfe1](c20dfe1))
* Improve Smali Compiler ([6bfe571](6bfe571))
* issue templates [skip ci] ([112bc99](112bc99))
* log failed patches due to failed dependencies ([a467fbb](a467fbb))
* logging class ([caf2745](caf2745))
* migrate logger to `slf4j` ([8f66f9f](8f66f9f))
* migrate to `DexPatchBundle` and `JarPatchBundle` ([8615798](8615798))
* migrate to dexlib ([3651981](3651981))
* Minor refactor and return proxy, if class has been proxied already ([4b26305](4b26305))
* nullability for `BytecodePatch` constructor ([ReVanced#59](https://github.com/Sean1781031/revanced-patcher/issues/59)) ([4ea030d](4ea030d))
* optional `forStaticMethod` parameter for `InlineSmaliCompiler.compileMethodInstructions` ([41e8860](41e8860))
* patch dependencies annotation and `PatcherOptions` ([6c65952](6c65952))
* patch options ([ReVanced#81](https://github.com/Sean1781031/revanced-patcher/issues/81)) ([fbb09f3](fbb09f3))
* PatchOptions#nullify to nullify an option ([371f0c4](371f0c4))
* properly manage `ClassProxy` & add `ProxyBackedClassList` ([6cb1fdf](6cb1fdf))
* registry for patch options ([2431785](2431785))
* remaining mutable `EncodedValue` classes ([3f97cc8](3f97cc8))
* remove deprecated functions ([ada5a03](ada5a03))
* return a `File` instance instead of `ExtFile` ([68174bb](68174bb))
* simplify adding instructions ([e47b67d](e47b67d))
* Soft Dependencies for Patches ([8c12f8d](8c12f8d))
* streams overload for `XmlFileHolder` ([6f72c4c](6f72c4c))
* string signature ([ReVanced#22](https://github.com/Sean1781031/revanced-patcher/issues/22)) ([612515a](612515a))
* use annotations instead of metadata objects ([d20f7fd](d20f7fd))
* use streams to write the dex files ([64bae88](64bae88))
* utility functions to get metadata of patch & sigs ([54511a4](54511a4))
* validator for patch options ([4e2e772](4e2e772))
* yield the patch result ([dde5385](dde5385))

### Performance Improvements

* check type instead of class ([c7ef264](c7ef264))
* decode manifest only when not using resource patcher ([4f60bea](4f60bea))
* depend on `androlib` instead of `ApkDecoder` ([cc9416d](cc9416d))
* do not resolve empty signatures list ([b1eebc9](b1eebc9))
* lazy-ify all mutable clones ([d18a3b6](d18a3b6))
* optimize indexOf call away ([9991f39](9991f39))
* use Set instead of List since there are no dupes ([e65ebd2](e65ebd2))
* use String List and compare instead of any lambda ([5bd416b](5bd416b))

### Reverts

* "fix: enforce aapt v1" ([dfd8a24](dfd8a24))
* AccessFlag extensions not working with IDE ([0bfb92a](0bfb92a))
* previous commits check for dupes in dexFile, not cache ([e810197](e810197))
* propagate dependencies ([365e1d7](365e1d7))

### BREAKING CHANGES

* Patch options now use the PatchOptions registry class instead of an Iterable. This change requires modifications to existing patches using this API.
* Not backwards compatible, since a lot of classes where renamed.
* arrayOf has to be changed to listOf.
* Method signature of Patcher#save() was changed to comply with the changes of multidexlib2.
* Removed usage of ASM library
* Array<Int> was changed to IntArray. This breaks existing patches.
* Package name was changed from "net.revanced" to "app.revanced"
* Method signature of execute() was changed to include the cache, this will break existing implementations of the Patch class.
* Patch class is now an abstract class. You must implement it. You can use anonymous implements, like done in the tests.
github-actions bot pushed a commit to 5ee1e/revanced-patcher that referenced this issue Aug 27, 2022
# 1.0.0 (2022-08-27)

### Bug Fixes

* `compareSignatureToMethod` not matching correctly in case opcodes are null ([cca12aa](cca12aa))
* `ConcurrentModificationException` while iterating through `proxies` and modifying it ([6cb7cdb](6cb7cdb))
* `InlineSmaliCompiler.compile` using 0 registers instead of 1 by default ([835a421](835a421))
* `JarPatchBundle` loading non-class files to class loader ([849616d](849616d))
* `MethodWalker` not accounting for all reference instructions ([48068cb](48068cb))
* `PackageMetadata` ([7399450](7399450))
* `replaceWith` not replacing classes with used class proxies ([4178a1e](4178a1e))
* `String.toInstructions` defaulting `forStaticMethod` to `false` ([5a2f02b](5a2f02b)), closes [ReVanced/revanced-patches#46](ReVanced/revanced-patches#46)
* add docs (trigger release) ([6628b78](6628b78))
* add execute permission to `./gradlew` file ([ReVanced#46](https://github.com/5ee1e/revanced-patcher/issues/46)) ([34f607a](34f607a))
* adding existing classes to the patchers cache ([9659a61](9659a61))
* always return PatchResultSuccess on patch success ([996c4ac](996c4ac))
* applying no patches throwing error ([5ca5a1c](5ca5a1c))
* applyPatches not returning successful patches ([f806cb3](f806cb3))
* avoid ignoring test resources (fixes [ReVanced#1](https://github.com/5ee1e/revanced-patcher/issues/1)) ([d5a3c76](d5a3c76))
* callback for each file instead of class ([930768d](930768d))
* callback only when inteded ([e3bf367](e3bf367))
* check if patch option requirement is met ([14a73bf](14a73bf))
* Classes not being written properly because of array shifting ([6e4db11](6e4db11))
* close open files ([ReVanced#75](https://github.com/5ee1e/revanced-patcher/issues/75)) ([123ad54](123ad54))
* close stream when closing `DomFileEditor` ([77604d4](77604d4))
* current must be calculated after increment ([5f12bab](5f12bab))
* dexlib must be propagated ([b738dcd](b738dcd))
* DomFileEditor opening in- and output streams on the same file ([83187c9](83187c9))
* enforce aapt v2 ([b68b0bf](b68b0bf))
* failing tests temporarily ([fc05fe7](fc05fe7))
* fix classes having multiple instances of fields ([7cc8a7d](7cc8a7d))
* fix classes having multiple method instances ([398239d](398239d))
* Fixed writer & signature resolver, improved tests & speed, minor refactoring ([e6c2501](e6c2501))
* fuzzy resolver warning params were turned around ([e5bea06](e5bea06))
* give ClassWriter a ClassReader for symtable ([41749ba](41749ba))
* goodbye security ([8f3ac77](8f3ac77))
* **gradle:** publish source and javadocs ([c236ebe](c236ebe))
* handle null properly ([ReVanced#64](https://github.com/5ee1e/revanced-patcher/issues/64)) ([482af78](482af78))
* incorrect pattern offset ([f3b5f67](f3b5f67))
* invert fingerprint resolution condition of `customFingerprint` ([e2faf4c](e2faf4c))
* **Io:** fix finding classes by name ([b957501](b957501))
* **Io:** JAR loading and saving ([ReVanced#8](https://github.com/5ee1e/revanced-patcher/issues/8)) ([310a7c4](310a7c4))
* make `methodMetadata` nullable in `MethodSignatureMetadata` ([4e56652](4e56652))
* make warnings nullable instead of lateinit ([8f1a629](8f1a629))
* match to correct signature method parameters ([1ee2e4b](1ee2e4b))
* **MethodResolver:** fix cd57a8c ([cbd8df2](cbd8df2))
* **MethodResolver:** strip labels and line numbers so opcode patterns match ([699c730](699c730))
* **MethodResolver:** strip labels nodes so opcode patterns match ([82c5306](82c5306))
* MethodSignature#resolved throwing an exception ([c612676](c612676))
* missing additional items [skip ci] ([0ebab8b](0ebab8b))
* more useful error message ([4b2e323](4b2e323))
* Move proxy package out of cache package ([ce21bd6](ce21bd6))
* mutability of local variable `modified` ([0e87ef5](0e87ef5))
* null check causing an exception ([338bd9f](338bd9f))
* nullable signature members ([ReVanced#10](https://github.com/5ee1e/revanced-patcher/issues/10)) ([674461f](674461f))
* Patch should have access to the Cache ([4dd820f](4dd820f))
* Patcher not writing resolved methods ([fac44a5](fac44a5))
* Patcher setting BuildOptions too late ([6a5c873](6a5c873))
* qualifying `Element` with wrong package ([024fa86](024fa86))
* reaching all constructors not possible ([c459beb](c459beb))
* reformat (trigger release) ([bf48945](bf48945))
* remove broken code ([0e72a6e](0e72a6e))
* remove dependency to fork of Apktool ([11abc67](11abc67))
* remove javadoc jar (also trigger release) ([56f6ca3](56f6ca3))
* remove leftover debug code ([0f30eac](0f30eac))
* remove requirement for solution [skip ci] ([ReVanced#80](https://github.com/5ee1e/revanced-patcher/issues/80)) ([9a4d30e](9a4d30e))
* resource patcher ([31815ca](31815ca))
* return mutable set of classes ([66a9b76](66a9b76))
* return resourceFile to caller ([1f75777](1f75777))
* returning failure on success ([48c4ea2](48c4ea2))
* revert soft dependencies ([7b2d058](7b2d058))
* Search method map for existing class proxy ([a1e909b](a1e909b))
* set index for insertAt to 0 by default ([d5b4c99](d5b4c99))
* set marklimit to Integer.MAX_VALUE ([e6e468f](e6e468f))
* show error message if cause is null ([f9da2ad](f9da2ad))
* show error message instead of `null` ([8d95b14](8d95b14))
* string signature in `SignatureResolver` ([e5ae970](e5ae970))
* Suppress unused for addFiles ([3d6a1d3](3d6a1d3))
* throwing in case the opcode patterns do not match ([3144ec8](3144ec8))
* update apktool ([ab866bb](ab866bb))
* update apktool ([051afd9](051afd9))
* update apktool to fork ([566ecef](566ecef))
* use `Exception` instead of `MethodNotFoundException` ([2fc4ec4](2fc4ec4))
* use Array instead of Iterable for methodParameters ([dfac8f0](dfac8f0))
* using old instance of `Androlib` when saving ([a4d8be2](a4d8be2))
* version not working with apktool due to cache ([03f5ee0](03f5ee0))
* workflow on dev branch ([428f7f4](428f7f4))
* write all classes ([f068fc8](f068fc8))

### Code Refactoring

* bump multidexlib2 to 2.5.2.r2 ([a6c6b49](a6c6b49))
* Change all references from Array to Iterable ([72f3cad](72f3cad))
* convert Patch to abstract class ([cb9b1b9](cb9b1b9))
* migrate from `Signature` to `Fingerprint` ([efa8ea1](efa8ea1))
* Optimize Signature class ([ReVanced#11](https://github.com/5ee1e/revanced-patcher/issues/11)) ([7faa001](7faa001))
* Rename `net.revanced` to `app.revanced` ([7087230](7087230))

### Features

* `Closeable` patches ([bbd40bf](bbd40bf))
* `Dependencies` annotation ([893d4c6](893d4c6))
* `parametersCount` for `InlineSmaliCompiler` instead of `parameters` ([ad6c5c8](ad6c5c8))
* `PatchLoader` ([ec9fd15](ec9fd15))
* Add `findParentMethod` utility method ([ReVanced#4](https://github.com/5ee1e/revanced-patcher/issues/4)) ([bbb2c54](bbb2c54))
* add `MethodWalker` ([7755bbc](7755bbc))
* add `p` naming scheme to smali compiler ([79909cf](79909cf))
* add extensions for cloning methods ([01bfbd6](01bfbd6))
* add findClass method with className ([4087f49](4087f49))
* Add first tests ([544bcf7](544bcf7))
* add fuzzy resolver ([7a56dca](7a56dca))
* add getValue & setValue for PatchOption ([2572cd0](2572cd0))
* add immutableMethod ([c63b20f](c63b20f))
* add inline smali compiler ([bfe4e3e](bfe4e3e))
* add missing test for fields ([6b8b057](6b8b057))
* add or extension for AccessFlags ([00c85b5](00c85b5))
* Add patch metadata ([642e903](642e903)), closes [ReVancedTeam/revanced-patches#1](https://github.com/ReVancedTeam/revanced-patches/issues/1)
* add Patch#dependsOn extension ([523f67b](523f67b))
* add replace and remove extensions ([ReVanced#50](https://github.com/5ee1e/revanced-patcher/issues/50)) ([92ac5e4](92ac5e4))
* add SafeClassWriter ([6626014](6626014))
* Add warnings for Fuzzy resolver ([715a2ad](715a2ad))
* allow classes to be overwritten in addFiles and resolve signatures when applyPatches is called ([1db735b](1db735b))
* allow custom aapt path to be specified ([8eb4a8f](8eb4a8f))
* allow custom framework path to be specified ([d3a580e](d3a580e))
* Allow unknown opcodes using `null` ([0e5f4ba](0e5f4ba))
* exclusive mutable access to files ([814ce0b](814ce0b))
* feature request issue template ([1b39278](1b39278))
* Finish first patcher test ([0d8d19e](0d8d19e))
* Improve `SignatureResolver` ([139a23b](139a23b))
* improve logging ([c20dfe1](c20dfe1))
* Improve Smali Compiler ([6bfe571](6bfe571))
* issue templates [skip ci] ([112bc99](112bc99))
* log failed patches due to failed dependencies ([a467fbb](a467fbb))
* logging class ([caf2745](caf2745))
* migrate logger to `slf4j` ([8f66f9f](8f66f9f))
* migrate to `DexPatchBundle` and `JarPatchBundle` ([8615798](8615798))
* migrate to dexlib ([3651981](3651981))
* Minor refactor and return proxy, if class has been proxied already ([4b26305](4b26305))
* nullability for `BytecodePatch` constructor ([ReVanced#59](https://github.com/5ee1e/revanced-patcher/issues/59)) ([4ea030d](4ea030d))
* optional `forStaticMethod` parameter for `InlineSmaliCompiler.compileMethodInstructions` ([41e8860](41e8860))
* patch dependencies annotation and `PatcherOptions` ([6c65952](6c65952))
* patch options ([ReVanced#81](https://github.com/5ee1e/revanced-patcher/issues/81)) ([fbb09f3](fbb09f3))
* PatchOptions#nullify to nullify an option ([371f0c4](371f0c4))
* properly manage `ClassProxy` & add `ProxyBackedClassList` ([6cb1fdf](6cb1fdf))
* registry for patch options ([2431785](2431785))
* remaining mutable `EncodedValue` classes ([3f97cc8](3f97cc8))
* remove deprecated functions ([ada5a03](ada5a03))
* return a `File` instance instead of `ExtFile` ([68174bb](68174bb))
* simplify adding instructions ([e47b67d](e47b67d))
* Soft Dependencies for Patches ([8c12f8d](8c12f8d))
* streams overload for `XmlFileHolder` ([6f72c4c](6f72c4c))
* string signature ([ReVanced#22](https://github.com/5ee1e/revanced-patcher/issues/22)) ([612515a](612515a))
* use annotations instead of metadata objects ([d20f7fd](d20f7fd))
* use streams to write the dex files ([64bae88](64bae88))
* utility functions to get metadata of patch & sigs ([54511a4](54511a4))
* validator for patch options ([4e2e772](4e2e772))
* yield the patch result ([dde5385](dde5385))

### Performance Improvements

* check type instead of class ([c7ef264](c7ef264))
* decode manifest only when not using resource patcher ([4f60bea](4f60bea))
* depend on `androlib` instead of `ApkDecoder` ([cc9416d](cc9416d))
* do not resolve empty signatures list ([b1eebc9](b1eebc9))
* lazy-ify all mutable clones ([d18a3b6](d18a3b6))
* optimize indexOf call away ([9991f39](9991f39))
* use Set instead of List since there are no dupes ([e65ebd2](e65ebd2))
* use String List and compare instead of any lambda ([5bd416b](5bd416b))

### Reverts

* "fix: enforce aapt v1" ([dfd8a24](dfd8a24))
* AccessFlag extensions not working with IDE ([0bfb92a](0bfb92a))
* previous commits check for dupes in dexFile, not cache ([e810197](e810197))
* propagate dependencies ([365e1d7](365e1d7))

### BREAKING CHANGES

* Patch options now use the PatchOptions registry class instead of an Iterable. This change requires modifications to existing patches using this API.
* Not backwards compatible, since a lot of classes where renamed.
* arrayOf has to be changed to listOf.
* Method signature of Patcher#save() was changed to comply with the changes of multidexlib2.
* Removed usage of ASM library
* Array<Int> was changed to IntArray. This breaks existing patches.
* Package name was changed from "net.revanced" to "app.revanced"
* Method signature of execute() was changed to include the cache, this will break existing implementations of the Patch class.
* Patch class is now an abstract class. You must implement it. You can use anonymous implements, like done in the tests.
github-actions bot pushed a commit to djvk87/revanced-patcher that referenced this issue Aug 28, 2022
# 1.0.0 (2022-08-28)

### Bug Fixes

* `compareSignatureToMethod` not matching correctly in case opcodes are null ([cca12aa](cca12aa))
* `ConcurrentModificationException` while iterating through `proxies` and modifying it ([6cb7cdb](6cb7cdb))
* `InlineSmaliCompiler.compile` using 0 registers instead of 1 by default ([835a421](835a421))
* `JarPatchBundle` loading non-class files to class loader ([849616d](849616d))
* `MethodWalker` not accounting for all reference instructions ([48068cb](48068cb))
* `PackageMetadata` ([7399450](7399450))
* `replaceWith` not replacing classes with used class proxies ([4178a1e](4178a1e))
* `String.toInstructions` defaulting `forStaticMethod` to `false` ([5a2f02b](5a2f02b)), closes [ReVanced/revanced-patches#46](ReVanced/revanced-patches#46)
* add docs (trigger release) ([6628b78](6628b78))
* add execute permission to `./gradlew` file ([ReVanced#46](https://github.com/djvk87/revanced-patcher/issues/46)) ([34f607a](34f607a))
* adding existing classes to the patchers cache ([9659a61](9659a61))
* always return PatchResultSuccess on patch success ([996c4ac](996c4ac))
* applying no patches throwing error ([5ca5a1c](5ca5a1c))
* applyPatches not returning successful patches ([f806cb3](f806cb3))
* avoid ignoring test resources (fixes [ReVanced#1](https://github.com/djvk87/revanced-patcher/issues/1)) ([d5a3c76](d5a3c76))
* callback for each file instead of class ([930768d](930768d))
* callback only when inteded ([e3bf367](e3bf367))
* check if patch option requirement is met ([14a73bf](14a73bf))
* Classes not being written properly because of array shifting ([6e4db11](6e4db11))
* close open files ([ReVanced#75](https://github.com/djvk87/revanced-patcher/issues/75)) ([123ad54](123ad54))
* close stream when closing `DomFileEditor` ([77604d4](77604d4))
* current must be calculated after increment ([5f12bab](5f12bab))
* dexlib must be propagated ([b738dcd](b738dcd))
* DomFileEditor opening in- and output streams on the same file ([83187c9](83187c9))
* enforce aapt v2 ([b68b0bf](b68b0bf))
* failing tests temporarily ([fc05fe7](fc05fe7))
* fix classes having multiple instances of fields ([7cc8a7d](7cc8a7d))
* fix classes having multiple method instances ([398239d](398239d))
* Fixed writer & signature resolver, improved tests & speed, minor refactoring ([e6c2501](e6c2501))
* fuzzy resolver warning params were turned around ([e5bea06](e5bea06))
* give ClassWriter a ClassReader for symtable ([41749ba](41749ba))
* goodbye security ([8f3ac77](8f3ac77))
* **gradle:** publish source and javadocs ([c236ebe](c236ebe))
* handle null properly ([ReVanced#64](https://github.com/djvk87/revanced-patcher/issues/64)) ([482af78](482af78))
* incorrect pattern offset ([f3b5f67](f3b5f67))
* invert fingerprint resolution condition of `customFingerprint` ([e2faf4c](e2faf4c))
* **Io:** fix finding classes by name ([b957501](b957501))
* **Io:** JAR loading and saving ([ReVanced#8](https://github.com/djvk87/revanced-patcher/issues/8)) ([310a7c4](310a7c4))
* make `methodMetadata` nullable in `MethodSignatureMetadata` ([4e56652](4e56652))
* make warnings nullable instead of lateinit ([8f1a629](8f1a629))
* match to correct signature method parameters ([1ee2e4b](1ee2e4b))
* **MethodResolver:** fix cd57a8c ([cbd8df2](cbd8df2))
* **MethodResolver:** strip labels and line numbers so opcode patterns match ([699c730](699c730))
* **MethodResolver:** strip labels nodes so opcode patterns match ([82c5306](82c5306))
* MethodSignature#resolved throwing an exception ([c612676](c612676))
* missing additional items [skip ci] ([0ebab8b](0ebab8b))
* more useful error message ([4b2e323](4b2e323))
* Move proxy package out of cache package ([ce21bd6](ce21bd6))
* mutability of local variable `modified` ([0e87ef5](0e87ef5))
* null check causing an exception ([338bd9f](338bd9f))
* nullable signature members ([ReVanced#10](https://github.com/djvk87/revanced-patcher/issues/10)) ([674461f](674461f))
* Patch should have access to the Cache ([4dd820f](4dd820f))
* Patcher not writing resolved methods ([fac44a5](fac44a5))
* Patcher setting BuildOptions too late ([6a5c873](6a5c873))
* qualifying `Element` with wrong package ([024fa86](024fa86))
* reaching all constructors not possible ([c459beb](c459beb))
* reformat (trigger release) ([bf48945](bf48945))
* remove broken code ([0e72a6e](0e72a6e))
* remove dependency to fork of Apktool ([11abc67](11abc67))
* remove javadoc jar (also trigger release) ([56f6ca3](56f6ca3))
* remove leftover debug code ([0f30eac](0f30eac))
* remove requirement for solution [skip ci] ([ReVanced#80](https://github.com/djvk87/revanced-patcher/issues/80)) ([9a4d30e](9a4d30e))
* resource patcher ([31815ca](31815ca))
* return mutable set of classes ([66a9b76](66a9b76))
* return resourceFile to caller ([1f75777](1f75777))
* returning failure on success ([48c4ea2](48c4ea2))
* revert soft dependencies ([7b2d058](7b2d058))
* Search method map for existing class proxy ([a1e909b](a1e909b))
* set index for insertAt to 0 by default ([d5b4c99](d5b4c99))
* set marklimit to Integer.MAX_VALUE ([e6e468f](e6e468f))
* show error message if cause is null ([f9da2ad](f9da2ad))
* show error message instead of `null` ([8d95b14](8d95b14))
* string signature in `SignatureResolver` ([e5ae970](e5ae970))
* Suppress unused for addFiles ([3d6a1d3](3d6a1d3))
* throwing in case the opcode patterns do not match ([3144ec8](3144ec8))
* update apktool ([ab866bb](ab866bb))
* update apktool ([051afd9](051afd9))
* update apktool to fork ([566ecef](566ecef))
* use `Exception` instead of `MethodNotFoundException` ([2fc4ec4](2fc4ec4))
* use Array instead of Iterable for methodParameters ([dfac8f0](dfac8f0))
* using old instance of `Androlib` when saving ([a4d8be2](a4d8be2))
* version not working with apktool due to cache ([03f5ee0](03f5ee0))
* workflow on dev branch ([428f7f4](428f7f4))
* write all classes ([f068fc8](f068fc8))

### Code Refactoring

* bump multidexlib2 to 2.5.2.r2 ([a6c6b49](a6c6b49))
* Change all references from Array to Iterable ([72f3cad](72f3cad))
* convert Patch to abstract class ([cb9b1b9](cb9b1b9))
* migrate from `Signature` to `Fingerprint` ([efa8ea1](efa8ea1))
* Optimize Signature class ([ReVanced#11](https://github.com/djvk87/revanced-patcher/issues/11)) ([7faa001](7faa001))
* Rename `net.revanced` to `app.revanced` ([7087230](7087230))

### Features

* `Closeable` patches ([bbd40bf](bbd40bf))
* `Dependencies` annotation ([893d4c6](893d4c6))
* `parametersCount` for `InlineSmaliCompiler` instead of `parameters` ([ad6c5c8](ad6c5c8))
* `PatchLoader` ([ec9fd15](ec9fd15))
* Add `findParentMethod` utility method ([ReVanced#4](https://github.com/djvk87/revanced-patcher/issues/4)) ([bbb2c54](bbb2c54))
* add `MethodWalker` ([7755bbc](7755bbc))
* add `p` naming scheme to smali compiler ([79909cf](79909cf))
* add extensions for cloning methods ([01bfbd6](01bfbd6))
* add findClass method with className ([4087f49](4087f49))
* Add first tests ([544bcf7](544bcf7))
* add fuzzy resolver ([7a56dca](7a56dca))
* add getValue & setValue for PatchOption ([2572cd0](2572cd0))
* add immutableMethod ([c63b20f](c63b20f))
* add inline smali compiler ([bfe4e3e](bfe4e3e))
* add missing test for fields ([6b8b057](6b8b057))
* add or extension for AccessFlags ([00c85b5](00c85b5))
* Add patch metadata ([642e903](642e903)), closes [ReVancedTeam/revanced-patches#1](https://github.com/ReVancedTeam/revanced-patches/issues/1)
* add Patch#dependsOn extension ([523f67b](523f67b))
* add replace and remove extensions ([ReVanced#50](https://github.com/djvk87/revanced-patcher/issues/50)) ([92ac5e4](92ac5e4))
* add SafeClassWriter ([6626014](6626014))
* Add warnings for Fuzzy resolver ([715a2ad](715a2ad))
* allow classes to be overwritten in addFiles and resolve signatures when applyPatches is called ([1db735b](1db735b))
* allow custom aapt path to be specified ([8eb4a8f](8eb4a8f))
* allow custom framework path to be specified ([d3a580e](d3a580e))
* Allow unknown opcodes using `null` ([0e5f4ba](0e5f4ba))
* exclusive mutable access to files ([814ce0b](814ce0b))
* feature request issue template ([1b39278](1b39278))
* Finish first patcher test ([0d8d19e](0d8d19e))
* Improve `SignatureResolver` ([139a23b](139a23b))
* improve logging ([c20dfe1](c20dfe1))
* Improve Smali Compiler ([6bfe571](6bfe571))
* issue templates [skip ci] ([112bc99](112bc99))
* log failed patches due to failed dependencies ([a467fbb](a467fbb))
* logging class ([caf2745](caf2745))
* migrate logger to `slf4j` ([8f66f9f](8f66f9f))
* migrate to `DexPatchBundle` and `JarPatchBundle` ([8615798](8615798))
* migrate to dexlib ([3651981](3651981))
* Minor refactor and return proxy, if class has been proxied already ([4b26305](4b26305))
* nullability for `BytecodePatch` constructor ([ReVanced#59](https://github.com/djvk87/revanced-patcher/issues/59)) ([4ea030d](4ea030d))
* optional `forStaticMethod` parameter for `InlineSmaliCompiler.compileMethodInstructions` ([41e8860](41e8860))
* patch dependencies annotation and `PatcherOptions` ([6c65952](6c65952))
* patch options ([ReVanced#81](https://github.com/djvk87/revanced-patcher/issues/81)) ([fbb09f3](fbb09f3))
* PatchOptions#nullify to nullify an option ([371f0c4](371f0c4))
* properly manage `ClassProxy` & add `ProxyBackedClassList` ([6cb1fdf](6cb1fdf))
* registry for patch options ([2431785](2431785))
* remaining mutable `EncodedValue` classes ([3f97cc8](3f97cc8))
* remove deprecated functions ([ada5a03](ada5a03))
* return a `File` instance instead of `ExtFile` ([68174bb](68174bb))
* simplify adding instructions ([e47b67d](e47b67d))
* Soft Dependencies for Patches ([8c12f8d](8c12f8d))
* streams overload for `XmlFileHolder` ([6f72c4c](6f72c4c))
* string signature ([ReVanced#22](https://github.com/djvk87/revanced-patcher/issues/22)) ([612515a](612515a))
* use annotations instead of metadata objects ([d20f7fd](d20f7fd))
* use streams to write the dex files ([64bae88](64bae88))
* utility functions to get metadata of patch & sigs ([54511a4](54511a4))
* validator for patch options ([4e2e772](4e2e772))
* yield the patch result ([dde5385](dde5385))

### Performance Improvements

* check type instead of class ([c7ef264](c7ef264))
* decode manifest only when not using resource patcher ([4f60bea](4f60bea))
* depend on `androlib` instead of `ApkDecoder` ([cc9416d](cc9416d))
* do not resolve empty signatures list ([b1eebc9](b1eebc9))
* lazy-ify all mutable clones ([d18a3b6](d18a3b6))
* optimize indexOf call away ([9991f39](9991f39))
* use Set instead of List since there are no dupes ([e65ebd2](e65ebd2))
* use String List and compare instead of any lambda ([5bd416b](5bd416b))

### Reverts

* "fix: enforce aapt v1" ([dfd8a24](dfd8a24))
* AccessFlag extensions not working with IDE ([0bfb92a](0bfb92a))
* previous commits check for dupes in dexFile, not cache ([e810197](e810197))
* propagate dependencies ([365e1d7](365e1d7))

### BREAKING CHANGES

* Patch options now use the PatchOptions registry class instead of an Iterable. This change requires modifications to existing patches using this API.
* Not backwards compatible, since a lot of classes where renamed.
* arrayOf has to be changed to listOf.
* Method signature of Patcher#save() was changed to comply with the changes of multidexlib2.
* Removed usage of ASM library
* Array<Int> was changed to IntArray. This breaks existing patches.
* Package name was changed from "net.revanced" to "app.revanced"
* Method signature of execute() was changed to include the cache, this will break existing implementations of the Patch class.
* Patch class is now an abstract class. You must implement it. You can use anonymous implements, like done in the tests.
github-actions bot pushed a commit to Thuyen21/revanced-patcher that referenced this issue Sep 1, 2022
# 1.0.0 (2022-09-01)

### Bug Fixes

* `compareSignatureToMethod` not matching correctly in case opcodes are null ([cca12aa](cca12aa))
* `ConcurrentModificationException` while iterating through `proxies` and modifying it ([6cb7cdb](6cb7cdb))
* `InlineSmaliCompiler.compile` using 0 registers instead of 1 by default ([835a421](835a421))
* `JarPatchBundle` loading non-class files to class loader ([849616d](849616d))
* `MethodWalker` not accounting for all reference instructions ([48068cb](48068cb))
* `PackageMetadata` ([7399450](7399450))
* `replaceWith` not replacing classes with used class proxies ([4178a1e](4178a1e))
* `String.toInstructions` defaulting `forStaticMethod` to `false` ([5a2f02b](5a2f02b)), closes [ReVanced/revanced-patches#46](ReVanced/revanced-patches#46)
* add docs (trigger release) ([6628b78](6628b78))
* add execute permission to `./gradlew` file ([ReVanced#46](https://github.com/Thuyen21/revanced-patcher/issues/46)) ([34f607a](34f607a))
* adding existing classes to the patchers cache ([9659a61](9659a61))
* always return PatchResultSuccess on patch success ([996c4ac](996c4ac))
* applying no patches throwing error ([5ca5a1c](5ca5a1c))
* applyPatches not returning successful patches ([f806cb3](f806cb3))
* avoid ignoring test resources (fixes [ReVanced#1](https://github.com/Thuyen21/revanced-patcher/issues/1)) ([d5a3c76](d5a3c76))
* callback for each file instead of class ([930768d](930768d))
* callback only when inteded ([e3bf367](e3bf367))
* check if patch option requirement is met ([14a73bf](14a73bf))
* Classes not being written properly because of array shifting ([6e4db11](6e4db11))
* close open files ([ReVanced#75](https://github.com/Thuyen21/revanced-patcher/issues/75)) ([123ad54](123ad54))
* close stream when closing `DomFileEditor` ([77604d4](77604d4))
* current must be calculated after increment ([5f12bab](5f12bab))
* dexlib must be propagated ([b738dcd](b738dcd))
* DomFileEditor opening in- and output streams on the same file ([83187c9](83187c9))
* enforce aapt v2 ([b68b0bf](b68b0bf))
* failing tests temporarily ([fc05fe7](fc05fe7))
* fix classes having multiple instances of fields ([7cc8a7d](7cc8a7d))
* fix classes having multiple method instances ([398239d](398239d))
* Fixed writer & signature resolver, improved tests & speed, minor refactoring ([e6c2501](e6c2501))
* fuzzy resolver warning params were turned around ([e5bea06](e5bea06))
* give ClassWriter a ClassReader for symtable ([41749ba](41749ba))
* goodbye security ([8f3ac77](8f3ac77))
* **gradle:** publish source and javadocs ([c236ebe](c236ebe))
* handle null properly ([ReVanced#64](https://github.com/Thuyen21/revanced-patcher/issues/64)) ([482af78](482af78))
* incorrect pattern offset ([f3b5f67](f3b5f67))
* invert fingerprint resolution condition of `customFingerprint` ([e2faf4c](e2faf4c))
* **Io:** fix finding classes by name ([b957501](b957501))
* **Io:** JAR loading and saving ([ReVanced#8](https://github.com/Thuyen21/revanced-patcher/issues/8)) ([310a7c4](310a7c4))
* make `methodMetadata` nullable in `MethodSignatureMetadata` ([4e56652](4e56652))
* make warnings nullable instead of lateinit ([8f1a629](8f1a629))
* match to correct signature method parameters ([1ee2e4b](1ee2e4b))
* **MethodResolver:** fix cd57a8c ([cbd8df2](cbd8df2))
* **MethodResolver:** strip labels and line numbers so opcode patterns match ([699c730](699c730))
* **MethodResolver:** strip labels nodes so opcode patterns match ([82c5306](82c5306))
* MethodSignature#resolved throwing an exception ([c612676](c612676))
* missing additional items [skip ci] ([0ebab8b](0ebab8b))
* more useful error message ([4b2e323](4b2e323))
* Move proxy package out of cache package ([ce21bd6](ce21bd6))
* mutability of local variable `modified` ([0e87ef5](0e87ef5))
* null check causing an exception ([338bd9f](338bd9f))
* nullable signature members ([ReVanced#10](https://github.com/Thuyen21/revanced-patcher/issues/10)) ([674461f](674461f))
* Patch should have access to the Cache ([4dd820f](4dd820f))
* Patcher not writing resolved methods ([fac44a5](fac44a5))
* Patcher setting BuildOptions too late ([6a5c873](6a5c873))
* qualifying `Element` with wrong package ([024fa86](024fa86))
* reaching all constructors not possible ([c459beb](c459beb))
* reformat (trigger release) ([bf48945](bf48945))
* remove broken code ([0e72a6e](0e72a6e))
* remove dependency to fork of Apktool ([11abc67](11abc67))
* remove javadoc jar (also trigger release) ([56f6ca3](56f6ca3))
* remove leftover debug code ([0f30eac](0f30eac))
* remove requirement for solution [skip ci] ([ReVanced#80](https://github.com/Thuyen21/revanced-patcher/issues/80)) ([9a4d30e](9a4d30e))
* resource patcher ([31815ca](31815ca))
* return mutable set of classes ([66a9b76](66a9b76))
* return resourceFile to caller ([1f75777](1f75777))
* returning failure on success ([48c4ea2](48c4ea2))
* revert soft dependencies ([7b2d058](7b2d058))
* Search method map for existing class proxy ([a1e909b](a1e909b))
* set index for insertAt to 0 by default ([d5b4c99](d5b4c99))
* set marklimit to Integer.MAX_VALUE ([e6e468f](e6e468f))
* show error message if cause is null ([f9da2ad](f9da2ad))
* show error message instead of `null` ([8d95b14](8d95b14))
* string signature in `SignatureResolver` ([e5ae970](e5ae970))
* Suppress unused for addFiles ([3d6a1d3](3d6a1d3))
* throwing in case the opcode patterns do not match ([3144ec8](3144ec8))
* update apktool ([ab866bb](ab866bb))
* update apktool ([051afd9](051afd9))
* update apktool to fork ([566ecef](566ecef))
* use `Exception` instead of `MethodNotFoundException` ([2fc4ec4](2fc4ec4))
* use Array instead of Iterable for methodParameters ([dfac8f0](dfac8f0))
* using old instance of `Androlib` when saving ([a4d8be2](a4d8be2))
* version not working with apktool due to cache ([03f5ee0](03f5ee0))
* workflow on dev branch ([428f7f4](428f7f4))
* write all classes ([f068fc8](f068fc8))

### Code Refactoring

* bump multidexlib2 to 2.5.2.r2 ([a6c6b49](a6c6b49))
* Change all references from Array to Iterable ([72f3cad](72f3cad))
* convert Patch to abstract class ([cb9b1b9](cb9b1b9))
* migrate from `Signature` to `Fingerprint` ([efa8ea1](efa8ea1))
* Optimize Signature class ([ReVanced#11](https://github.com/Thuyen21/revanced-patcher/issues/11)) ([7faa001](7faa001))
* Rename `net.revanced` to `app.revanced` ([7087230](7087230))

### Features

* `Closeable` patches ([bbd40bf](bbd40bf))
* `Dependencies` annotation ([893d4c6](893d4c6))
* `parametersCount` for `InlineSmaliCompiler` instead of `parameters` ([ad6c5c8](ad6c5c8))
* `PatchLoader` ([ec9fd15](ec9fd15))
* Add `findParentMethod` utility method ([ReVanced#4](https://github.com/Thuyen21/revanced-patcher/issues/4)) ([bbb2c54](bbb2c54))
* add `MethodWalker` ([7755bbc](7755bbc))
* add `p` naming scheme to smali compiler ([79909cf](79909cf))
* add extensions for cloning methods ([01bfbd6](01bfbd6))
* add findClass method with className ([4087f49](4087f49))
* Add first tests ([544bcf7](544bcf7))
* add fuzzy resolver ([7a56dca](7a56dca))
* add getValue & setValue for PatchOption ([2572cd0](2572cd0))
* add immutableMethod ([c63b20f](c63b20f))
* add inline smali compiler ([bfe4e3e](bfe4e3e))
* add missing test for fields ([6b8b057](6b8b057))
* add or extension for AccessFlags ([00c85b5](00c85b5))
* Add patch metadata ([642e903](642e903)), closes [ReVancedTeam/revanced-patches#1](https://github.com/ReVancedTeam/revanced-patches/issues/1)
* add Patch#dependsOn extension ([523f67b](523f67b))
* add replace and remove extensions ([ReVanced#50](https://github.com/Thuyen21/revanced-patcher/issues/50)) ([92ac5e4](92ac5e4))
* add SafeClassWriter ([6626014](6626014))
* Add warnings for Fuzzy resolver ([715a2ad](715a2ad))
* allow classes to be overwritten in addFiles and resolve signatures when applyPatches is called ([1db735b](1db735b))
* allow custom aapt path to be specified ([8eb4a8f](8eb4a8f))
* allow custom framework path to be specified ([d3a580e](d3a580e))
* Allow unknown opcodes using `null` ([0e5f4ba](0e5f4ba))
* exclusive mutable access to files ([814ce0b](814ce0b))
* feature request issue template ([1b39278](1b39278))
* Finish first patcher test ([0d8d19e](0d8d19e))
* Improve `SignatureResolver` ([139a23b](139a23b))
* improve logging ([c20dfe1](c20dfe1))
* Improve Smali Compiler ([6bfe571](6bfe571))
* issue templates [skip ci] ([112bc99](112bc99))
* log failed patches due to failed dependencies ([a467fbb](a467fbb))
* logging class ([caf2745](caf2745))
* migrate logger to `slf4j` ([8f66f9f](8f66f9f))
* migrate to `DexPatchBundle` and `JarPatchBundle` ([8615798](8615798))
* migrate to dexlib ([3651981](3651981))
* Minor refactor and return proxy, if class has been proxied already ([4b26305](4b26305))
* nullability for `BytecodePatch` constructor ([ReVanced#59](https://github.com/Thuyen21/revanced-patcher/issues/59)) ([4ea030d](4ea030d))
* nullable parameters ([7882a8d](7882a8d))
* optional `forStaticMethod` parameter for `InlineSmaliCompiler.compileMethodInstructions` ([41e8860](41e8860))
* patch dependencies annotation and `PatcherOptions` ([6c65952](6c65952))
* patch options ([ReVanced#81](https://github.com/Thuyen21/revanced-patcher/issues/81)) ([fbb09f3](fbb09f3))
* PatchOptions#nullify to nullify an option ([371f0c4](371f0c4))
* properly manage `ClassProxy` & add `ProxyBackedClassList` ([6cb1fdf](6cb1fdf))
* registry for patch options ([2431785](2431785))
* remaining mutable `EncodedValue` classes ([3f97cc8](3f97cc8))
* remove deprecated functions ([ada5a03](ada5a03))
* return a `File` instance instead of `ExtFile` ([68174bb](68174bb))
* simplify adding instructions ([e47b67d](e47b67d))
* Soft Dependencies for Patches ([8c12f8d](8c12f8d))
* streams overload for `XmlFileHolder` ([6f72c4c](6f72c4c))
* string signature ([ReVanced#22](https://github.com/Thuyen21/revanced-patcher/issues/22)) ([612515a](612515a))
* use annotations instead of metadata objects ([d20f7fd](d20f7fd))
* use streams to write the dex files ([64bae88](64bae88))
* utility functions to get metadata of patch & sigs ([54511a4](54511a4))
* validator for patch options ([4e2e772](4e2e772))
* yield the patch result ([dde5385](dde5385))

### Performance Improvements

* check type instead of class ([c7ef264](c7ef264))
* decode manifest only when not using resource patcher ([4f60bea](4f60bea))
* depend on `androlib` instead of `ApkDecoder` ([cc9416d](cc9416d))
* do not resolve empty signatures list ([b1eebc9](b1eebc9))
* lazy-ify all mutable clones ([d18a3b6](d18a3b6))
* optimize indexOf call away ([9991f39](9991f39))
* use Set instead of List since there are no dupes ([e65ebd2](e65ebd2))
* use String List and compare instead of any lambda ([5bd416b](5bd416b))

### Reverts

* "fix: enforce aapt v1" ([dfd8a24](dfd8a24))
* AccessFlag extensions not working with IDE ([0bfb92a](0bfb92a))
* previous commits check for dupes in dexFile, not cache ([e810197](e810197))
* propagate dependencies ([365e1d7](365e1d7))

### BREAKING CHANGES

* Patch options now use the PatchOptions registry class instead of an Iterable. This change requires modifications to existing patches using this API.
* Not backwards compatible, since a lot of classes where renamed.
* arrayOf has to be changed to listOf.
* Method signature of Patcher#save() was changed to comply with the changes of multidexlib2.
* Removed usage of ASM library
* Array<Int> was changed to IntArray. This breaks existing patches.
* Package name was changed from "net.revanced" to "app.revanced"
* Method signature of execute() was changed to include the cache, this will break existing implementations of the Patch class.
* Patch class is now an abstract class. You must implement it. You can use anonymous implements, like done in the tests.
github-actions bot pushed a commit to apicalshark/revanced-patcher that referenced this issue Sep 6, 2022
# 1.0.0 (2022-09-06)

### Bug Fixes

* `compareSignatureToMethod` not matching correctly in case opcodes are null ([cca12aa](cca12aa))
* `ConcurrentModificationException` while iterating through `proxies` and modifying it ([6cb7cdb](6cb7cdb))
* `InlineSmaliCompiler.compile` using 0 registers instead of 1 by default ([835a421](835a421))
* `JarPatchBundle` loading non-class files to class loader ([849616d](849616d))
* `MethodWalker` not accounting for all reference instructions ([48068cb](48068cb))
* `PackageMetadata` ([7399450](7399450))
* `replaceWith` not replacing classes with used class proxies ([4178a1e](4178a1e))
* `String.toInstructions` defaulting `forStaticMethod` to `false` ([5a2f02b](5a2f02b)), closes [ReVanced/revanced-patches#46](ReVanced/revanced-patches#46)
* add docs (trigger release) ([6628b78](6628b78))
* add execute permission to `./gradlew` file ([ReVanced#46](https://github.com/dennyxbox890/revanced-patcher/issues/46)) ([34f607a](34f607a))
* adding existing classes to the patchers cache ([9659a61](9659a61))
* always return PatchResultSuccess on patch success ([996c4ac](996c4ac))
* applying no patches throwing error ([5ca5a1c](5ca5a1c))
* applyPatches not returning successful patches ([f806cb3](f806cb3))
* avoid ignoring test resources (fixes [ReVanced#1](https://github.com/dennyxbox890/revanced-patcher/issues/1)) ([d5a3c76](d5a3c76))
* callback for each file instead of class ([930768d](930768d))
* callback only when inteded ([e3bf367](e3bf367))
* check if patch option requirement is met ([14a73bf](14a73bf))
* Classes not being written properly because of array shifting ([6e4db11](6e4db11))
* close open files ([ReVanced#75](https://github.com/dennyxbox890/revanced-patcher/issues/75)) ([123ad54](123ad54))
* close stream when closing `DomFileEditor` ([77604d4](77604d4))
* current must be calculated after increment ([5f12bab](5f12bab))
* dexlib must be propagated ([b738dcd](b738dcd))
* DomFileEditor opening in- and output streams on the same file ([83187c9](83187c9))
* enforce aapt v2 ([b68b0bf](b68b0bf))
* failing tests temporarily ([fc05fe7](fc05fe7))
* fix classes having multiple instances of fields ([7cc8a7d](7cc8a7d))
* fix classes having multiple method instances ([398239d](398239d))
* Fixed writer & signature resolver, improved tests & speed, minor refactoring ([e6c2501](e6c2501))
* fuzzy resolver warning params were turned around ([e5bea06](e5bea06))
* give ClassWriter a ClassReader for symtable ([41749ba](41749ba))
* goodbye security ([8f3ac77](8f3ac77))
* **gradle:** publish source and javadocs ([c236ebe](c236ebe))
* handle null properly ([ReVanced#64](https://github.com/dennyxbox890/revanced-patcher/issues/64)) ([482af78](482af78))
* incorrect pattern offset ([f3b5f67](f3b5f67))
* invert fingerprint resolution condition of `customFingerprint` ([e2faf4c](e2faf4c))
* **Io:** fix finding classes by name ([b957501](b957501))
* **Io:** JAR loading and saving ([ReVanced#8](https://github.com/dennyxbox890/revanced-patcher/issues/8)) ([310a7c4](310a7c4))
* make `methodMetadata` nullable in `MethodSignatureMetadata` ([4e56652](4e56652))
* make warnings nullable instead of lateinit ([8f1a629](8f1a629))
* match to correct signature method parameters ([1ee2e4b](1ee2e4b))
* **MethodResolver:** fix cd57a8c ([cbd8df2](cbd8df2))
* **MethodResolver:** strip labels and line numbers so opcode patterns match ([699c730](699c730))
* **MethodResolver:** strip labels nodes so opcode patterns match ([82c5306](82c5306))
* MethodSignature#resolved throwing an exception ([c612676](c612676))
* missing additional items [skip ci] ([0ebab8b](0ebab8b))
* more useful error message ([4b2e323](4b2e323))
* Move proxy package out of cache package ([ce21bd6](ce21bd6))
* mutability of local variable `modified` ([0e87ef5](0e87ef5))
* null check causing an exception ([338bd9f](338bd9f))
* nullable signature members ([ReVanced#10](https://github.com/dennyxbox890/revanced-patcher/issues/10)) ([674461f](674461f))
* Patch should have access to the Cache ([4dd820f](4dd820f))
* Patcher not writing resolved methods ([fac44a5](fac44a5))
* Patcher setting BuildOptions too late ([6a5c873](6a5c873))
* qualifying `Element` with wrong package ([024fa86](024fa86))
* reaching all constructors not possible ([c459beb](c459beb))
* reformat (trigger release) ([bf48945](bf48945))
* remove broken code ([0e72a6e](0e72a6e))
* remove default param from Package.versions ([4b81318](4b81318))
* remove dependency to fork of Apktool ([11abc67](11abc67))
* remove javadoc jar (also trigger release) ([56f6ca3](56f6ca3))
* remove leftover debug code ([0f30eac](0f30eac))
* remove requirement for solution [skip ci] ([ReVanced#80](https://github.com/dennyxbox890/revanced-patcher/issues/80)) ([9a4d30e](9a4d30e))
* resource patcher ([31815ca](31815ca))
* return mutable set of classes ([66a9b76](66a9b76))
* return resourceFile to caller ([1f75777](1f75777))
* returning failure on success ([48c4ea2](48c4ea2))
* revert soft dependencies ([7b2d058](7b2d058))
* Search method map for existing class proxy ([a1e909b](a1e909b))
* set index for insertAt to 0 by default ([d5b4c99](d5b4c99))
* set marklimit to Integer.MAX_VALUE ([e6e468f](e6e468f))
* show error message if cause is null ([f9da2ad](f9da2ad))
* show error message instead of `null` ([8d95b14](8d95b14))
* string signature in `SignatureResolver` ([e5ae970](e5ae970))
* Suppress unused for addFiles ([3d6a1d3](3d6a1d3))
* throwing in case the opcode patterns do not match ([3144ec8](3144ec8))
* update apktool ([ab866bb](ab866bb))
* update apktool ([051afd9](051afd9))
* update apktool to fork ([566ecef](566ecef))
* use `Exception` instead of `MethodNotFoundException` ([2fc4ec4](2fc4ec4))
* use Array instead of Iterable for methodParameters ([dfac8f0](dfac8f0))
* using old instance of `Androlib` when saving ([a4d8be2](a4d8be2))
* version not working with apktool due to cache ([03f5ee0](03f5ee0))
* workflow on dev branch ([428f7f4](428f7f4))
* write all classes ([f068fc8](f068fc8))

### Code Refactoring

* bump multidexlib2 to 2.5.2.r2 ([a6c6b49](a6c6b49))
* Change all references from Array to Iterable ([72f3cad](72f3cad))
* convert Patch to abstract class ([cb9b1b9](cb9b1b9))
* migrate from `Signature` to `Fingerprint` ([efa8ea1](efa8ea1))
* Optimize Signature class ([ReVanced#11](https://github.com/dennyxbox890/revanced-patcher/issues/11)) ([7faa001](7faa001))
* Rename `net.revanced` to `app.revanced` ([7087230](7087230))

### Features

* `Closeable` patches ([bbd40bf](bbd40bf))
* `Dependencies` annotation ([893d4c6](893d4c6))
* `parametersCount` for `InlineSmaliCompiler` instead of `parameters` ([ad6c5c8](ad6c5c8))
* `PatchLoader` ([ec9fd15](ec9fd15))
* Add `findParentMethod` utility method ([ReVanced#4](https://github.com/dennyxbox890/revanced-patcher/issues/4)) ([bbb2c54](bbb2c54))
* add `MethodWalker` ([7755bbc](7755bbc))
* add `p` naming scheme to smali compiler ([79909cf](79909cf))
* add extensions for cloning methods ([01bfbd6](01bfbd6))
* add findClass method with className ([4087f49](4087f49))
* Add first tests ([544bcf7](544bcf7))
* add fuzzy resolver ([7a56dca](7a56dca))
* add getValue & setValue for PatchOption ([2572cd0](2572cd0))
* add immutableMethod ([c63b20f](c63b20f))
* add inline smali compiler ([bfe4e3e](bfe4e3e))
* add missing test for fields ([6b8b057](6b8b057))
* add or extension for AccessFlags ([00c85b5](00c85b5))
* Add patch metadata ([642e903](642e903)), closes [ReVancedTeam/revanced-patches#1](https://github.com/ReVancedTeam/revanced-patches/issues/1)
* add Patch#dependsOn extension ([523f67b](523f67b))
* add replace and remove extensions ([ReVanced#50](https://github.com/dennyxbox890/revanced-patcher/issues/50)) ([92ac5e4](92ac5e4))
* add SafeClassWriter ([6626014](6626014))
* Add warnings for Fuzzy resolver ([715a2ad](715a2ad))
* allow classes to be overwritten in addFiles and resolve signatures when applyPatches is called ([1db735b](1db735b))
* allow custom aapt path to be specified ([8eb4a8f](8eb4a8f))
* allow custom framework path to be specified ([d3a580e](d3a580e))
* Allow unknown opcodes using `null` ([0e5f4ba](0e5f4ba))
* default value for `Package.versions` annotation parameter ([131dedd](131dedd))
* exclusive mutable access to files ([814ce0b](814ce0b))
* feature request issue template ([1b39278](1b39278))
* Finish first patcher test ([0d8d19e](0d8d19e))
* Improve `SignatureResolver` ([139a23b](139a23b))
* improve logging ([c20dfe1](c20dfe1))
* Improve Smali Compiler ([6bfe571](6bfe571))
* issue templates [skip ci] ([112bc99](112bc99))
* log failed patches due to failed dependencies ([a467fbb](a467fbb))
* logging class ([caf2745](caf2745))
* migrate logger to `slf4j` ([8f66f9f](8f66f9f))
* migrate to `DexPatchBundle` and `JarPatchBundle` ([8615798](8615798))
* migrate to dexlib ([3651981](3651981))
* Minor refactor and return proxy, if class has been proxied already ([4b26305](4b26305))
* nullability for `BytecodePatch` constructor ([ReVanced#59](https://github.com/dennyxbox890/revanced-patcher/issues/59)) ([4ea030d](4ea030d))
* nullable parameters ([7882a8d](7882a8d))
* optional `forStaticMethod` parameter for `InlineSmaliCompiler.compileMethodInstructions` ([41e8860](41e8860))
* patch dependencies annotation and `PatcherOptions` ([6c65952](6c65952))
* patch options ([ReVanced#81](https://github.com/dennyxbox890/revanced-patcher/issues/81)) ([fbb09f3](fbb09f3))
* PatchOptions#nullify to nullify an option ([371f0c4](371f0c4))
* properly manage `ClassProxy` & add `ProxyBackedClassList` ([6cb1fdf](6cb1fdf))
* registry for patch options ([2431785](2431785))
* remaining mutable `EncodedValue` classes ([3f97cc8](3f97cc8))
* remove deprecated functions ([ada5a03](ada5a03))
* return a `File` instance instead of `ExtFile` ([68174bb](68174bb))
* simplify adding instructions ([e47b67d](e47b67d))
* Soft Dependencies for Patches ([8c12f8d](8c12f8d))
* streams overload for `XmlFileHolder` ([6f72c4c](6f72c4c))
* string signature ([ReVanced#22](https://github.com/dennyxbox890/revanced-patcher/issues/22)) ([612515a](612515a))
* use annotations instead of metadata objects ([d20f7fd](d20f7fd))
* use streams to write the dex files ([64bae88](64bae88))
* utility functions to get metadata of patch & sigs ([54511a4](54511a4))
* validator for patch options ([4e2e772](4e2e772))
* yield the patch result ([dde5385](dde5385))

### Performance Improvements

* check type instead of class ([c7ef264](c7ef264))
* decode manifest only when not using resource patcher ([4f60bea](4f60bea))
* depend on `androlib` instead of `ApkDecoder` ([cc9416d](cc9416d))
* do not resolve empty signatures list ([b1eebc9](b1eebc9))
* lazy-ify all mutable clones ([d18a3b6](d18a3b6))
* optimize indexOf call away ([9991f39](9991f39))
* use Set instead of List since there are no dupes ([e65ebd2](e65ebd2))
* use String List and compare instead of any lambda ([5bd416b](5bd416b))

### Reverts

* "fix: enforce aapt v1" ([dfd8a24](dfd8a24))
* AccessFlag extensions not working with IDE ([0bfb92a](0bfb92a))
* previous commits check for dupes in dexFile, not cache ([e810197](e810197))
* propagate dependencies ([365e1d7](365e1d7))

### BREAKING CHANGES

* Patch options now use the PatchOptions registry class instead of an Iterable. This change requires modifications to existing patches using this API.
* Not backwards compatible, since a lot of classes where renamed.
* arrayOf has to be changed to listOf.
* Method signature of Patcher#save() was changed to comply with the changes of multidexlib2.
* Removed usage of ASM library
* Array<Int> was changed to IntArray. This breaks existing patches.
* Package name was changed from "net.revanced" to "app.revanced"
* Method signature of execute() was changed to include the cache, this will break existing implementations of the Patch class.
* Patch class is now an abstract class. You must implement it. You can use anonymous implements, like done in the tests.
github-actions bot pushed a commit to yuchi0531/revanced-patcher that referenced this issue Sep 22, 2022
# 1.0.0 (2022-09-22)

### Bug Fixes

* `compareSignatureToMethod` not matching correctly in case opcodes are null ([cca12aa](cca12aa))
* `ConcurrentModificationException` while iterating through `proxies` and modifying it ([6cb7cdb](6cb7cdb))
* `InlineSmaliCompiler.compile` using 0 registers instead of 1 by default ([835a421](835a421))
* `JarPatchBundle` loading non-class files to class loader ([849616d](849616d))
* `MethodWalker` not accounting for all reference instructions ([48068cb](48068cb))
* `PackageMetadata` ([7399450](7399450))
* `replaceWith` not replacing classes with used class proxies ([4178a1e](4178a1e))
* `String.toInstructions` defaulting `forStaticMethod` to `false` ([5a2f02b](5a2f02b)), closes [ReVanced/revanced-patches#46](ReVanced/revanced-patches#46)
* add docs (trigger release) ([6628b78](6628b78))
* add execute permission to `./gradlew` file ([ReVanced#46](https://github.com/yuchi0531/revanced-patcher/issues/46)) ([34f607a](34f607a))
* add tests for PathOption ([d6308e1](d6308e1))
* adding existing classes to the patchers cache ([9659a61](9659a61))
* always return PatchResultSuccess on patch success ([996c4ac](996c4ac))
* applying no patches throwing error ([5ca5a1c](5ca5a1c))
* applyPatches not returning successful patches ([f806cb3](f806cb3))
* avoid ignoring test resources (fixes [ReVanced#1](https://github.com/yuchi0531/revanced-patcher/issues/1)) ([d5a3c76](d5a3c76))
* broken deprecation message ([62aa295](62aa295))
* callback for each file instead of class ([930768d](930768d))
* callback only when inteded ([e3bf367](e3bf367))
* check if patch option requirement is met ([14a73bf](14a73bf))
* Classes not being written properly because of array shifting ([6e4db11](6e4db11))
* close open files ([ReVanced#75](https://github.com/yuchi0531/revanced-patcher/issues/75)) ([123ad54](123ad54))
* close stream when closing `DomFileEditor` ([77604d4](77604d4))
* compare any methods parameters ([ReVanced#101](https://github.com/yuchi0531/revanced-patcher/issues/101)) ([085a3a4](085a3a4))
* current must be calculated after increment ([5f12bab](5f12bab))
* dexlib must be propagated ([b738dcd](b738dcd))
* DomFileEditor opening in- and output streams on the same file ([83187c9](83187c9))
* enforce aapt v2 ([b68b0bf](b68b0bf))
* failing tests temporarily ([fc05fe7](fc05fe7))
* **fingerprint:** do not throw on `MethodFingerprint.result` getter ([2f7e62e](2f7e62e))
* fix classes having multiple instances of fields ([7cc8a7d](7cc8a7d))
* fix classes having multiple method instances ([398239d](398239d))
* Fixed writer & signature resolver, improved tests & speed, minor refactoring ([e6c2501](e6c2501))
* fuzzy resolver warning params were turned around ([e5bea06](e5bea06))
* give ClassWriter a ClassReader for symtable ([41749ba](41749ba))
* goodbye security ([8f3ac77](8f3ac77))
* **gradle:** publish source and javadocs ([c236ebe](c236ebe))
* handle null properly ([ReVanced#64](https://github.com/yuchi0531/revanced-patcher/issues/64)) ([482af78](482af78))
* handle option types and nulls properly ([aff4968](aff4968))
* handle private companion objects ([ad3d332](ad3d332))
* incorrect pattern offset ([f3b5f67](f3b5f67))
* invalid type propagation in options ([b873228](b873228)), closes [ReVanced#98](https://github.com/yuchi0531/revanced-patcher/issues/98)
* invalid types for example options ([79f91e0](79f91e0))
* invert fingerprint resolution condition of `customFingerprint` ([e2faf4c](e2faf4c))
* **Io:** fix finding classes by name ([b957501](b957501))
* **Io:** JAR loading and saving ([ReVanced#8](https://github.com/yuchi0531/revanced-patcher/issues/8)) ([310a7c4](310a7c4))
* make `methodMetadata` nullable in `MethodSignatureMetadata` ([4e56652](4e56652))
* make patcher version public ([76c45dd](76c45dd))
* make warnings nullable instead of lateinit ([8f1a629](8f1a629))
* match to correct signature method parameters ([1ee2e4b](1ee2e4b))
* **MethodResolver:** fix cd57a8c ([cbd8df2](cbd8df2))
* **MethodResolver:** strip labels and line numbers so opcode patterns match ([699c730](699c730))
* **MethodResolver:** strip labels nodes so opcode patterns match ([82c5306](82c5306))
* MethodSignature#resolved throwing an exception ([c612676](c612676))
* missing additional items [skip ci] ([0ebab8b](0ebab8b))
* more useful error message ([4b2e323](4b2e323))
* Move proxy package out of cache package ([ce21bd6](ce21bd6))
* mutability of local variable `modified` ([0e87ef5](0e87ef5))
* null check causing an exception ([338bd9f](338bd9f))
* nullable signature members ([ReVanced#10](https://github.com/yuchi0531/revanced-patcher/issues/10)) ([674461f](674461f))
* only run list option check if not null ([4055939](4055939))
* Patch should have access to the Cache ([4dd820f](4dd820f))
* Patcher not writing resolved methods ([fac44a5](fac44a5))
* Patcher setting BuildOptions too late ([6a5c873](6a5c873))
* PathOption should be open, not sealed ([a562e47](a562e47))
* qualifying `Element` with wrong package ([024fa86](024fa86))
* reaching all constructors not possible ([c459beb](c459beb))
* reformat (trigger release) ([bf48945](bf48945))
* remove broken code ([0e72a6e](0e72a6e))
* remove default param from Package.versions ([4b81318](4b81318))
* remove dependency to fork of Apktool ([11abc67](11abc67))
* remove javadoc jar (also trigger release) ([56f6ca3](56f6ca3))
* remove leftover debug code ([0f30eac](0f30eac))
* remove repeatable from PatchDeprecated ([6e73631](6e73631))
* remove requirement for solution [skip ci] ([ReVanced#80](https://github.com/yuchi0531/revanced-patcher/issues/80)) ([9a4d30e](9a4d30e))
* resource patcher ([31815ca](31815ca))
* return mutable set of classes ([66a9b76](66a9b76))
* return resourceFile to caller ([1f75777](1f75777))
* returning failure on success ([48c4ea2](48c4ea2))
* revert soft dependencies ([7b2d058](7b2d058))
* Search method map for existing class proxy ([a1e909b](a1e909b))
* set index for insertAt to 0 by default ([d5b4c99](d5b4c99))
* set marklimit to Integer.MAX_VALUE ([e6e468f](e6e468f))
* show error message if cause is null ([f9da2ad](f9da2ad))
* show error message instead of `null` ([8d95b14](8d95b14))
* string signature in `SignatureResolver` ([e5ae970](e5ae970))
* Suppress unused for addFiles ([3d6a1d3](3d6a1d3))
* **tests:** access `patternScanResult` through `scanResult` ([76676fb](76676fb))
* throwing in case the opcode patterns do not match ([3144ec8](3144ec8))
* typo in ListOption ([3921648](3921648))
* update apktool ([ab866bb](ab866bb))
* update apktool ([051afd9](051afd9))
* update apktool to fork ([566ecef](566ecef))
* use `Exception` instead of `MethodNotFoundException` ([2fc4ec4](2fc4ec4))
* use Array instead of Iterable for methodParameters ([dfac8f0](dfac8f0))
* using old instance of `Androlib` when saving ([a4d8be2](a4d8be2))
* version not working with apktool due to cache ([03f5ee0](03f5ee0))
* workflow on dev branch ([428f7f4](428f7f4))
* write all classes ([f068fc8](f068fc8))
* wrong value for iterator in PatchOptions ([e31ac1f](e31ac1f))

### Code Refactoring

* bump multidexlib2 to 2.5.2.r2 ([a6c6b49](a6c6b49))
* Change all references from Array to Iterable ([72f3cad](72f3cad))
* convert Patch to abstract class ([cb9b1b9](cb9b1b9))
* Improve Patch Options ([6b909c1](6b909c1))
* migrate from `Signature` to `Fingerprint` ([efa8ea1](efa8ea1))
* Optimize Signature class ([ReVanced#11](https://github.com/yuchi0531/revanced-patcher/issues/11)) ([7faa001](7faa001))
* Rename `net.revanced` to `app.revanced` ([7087230](7087230))

* refactor!: move utility methods from `MethodFingerprintUtils` `MethodFingerprint` ([d802ef8](d802ef8))
* feat(fingerprint)!: `StringsScanResult` for `MethodFingerprint` ([3813e28](3813e28))

### Features

* `Closeable` patches ([bbd40bf](bbd40bf))
* `Dependencies` annotation ([893d4c6](893d4c6))
* `parametersCount` for `InlineSmaliCompiler` instead of `parameters` ([ad6c5c8](ad6c5c8))
* `PatchLoader` ([ec9fd15](ec9fd15))
* Add `findParentMethod` utility method ([ReVanced#4](https://github.com/yuchi0531/revanced-patcher/issues/4)) ([bbb2c54](bbb2c54))
* add `MethodWalker` ([7755bbc](7755bbc))
* add `p` naming scheme to smali compiler ([79909cf](79909cf))
* add extensions for cloning methods ([01bfbd6](01bfbd6))
* add findClass method with className ([4087f49](4087f49))
* Add first tests ([544bcf7](544bcf7))
* add fuzzy resolver ([7a56dca](7a56dca))
* add getValue & setValue for PatchOption ([2572cd0](2572cd0))
* add immutableMethod ([c63b20f](c63b20f))
* add inline smali compiler ([bfe4e3e](bfe4e3e))
* add missing test for fields ([6b8b057](6b8b057))
* add or extension for AccessFlags ([00c85b5](00c85b5))
* Add patch metadata ([642e903](642e903)), closes [ReVancedTeam/revanced-patches#1](https://github.com/ReVancedTeam/revanced-patches/issues/1)
* add Patch#dependsOn extension ([523f67b](523f67b))
* add PathOption back ([172655b](172655b))
* add replace and remove extensions ([ReVanced#50](https://github.com/yuchi0531/revanced-patcher/issues/50)) ([92ac5e4](92ac5e4))
* add SafeClassWriter ([6626014](6626014))
* Add warnings for Fuzzy resolver ([715a2ad](715a2ad))
* allow classes to be overwritten in addFiles and resolve signatures when applyPatches is called ([1db735b](1db735b))
* allow custom aapt path to be specified ([8eb4a8f](8eb4a8f))
* allow custom framework path to be specified ([d3a580e](d3a580e))
* Allow unknown opcodes using `null` ([0e5f4ba](0e5f4ba))
* default value for `Package.versions` annotation parameter ([131dedd](131dedd))
* deprecation for patches ([80c2e80](80c2e80))
* exclusive mutable access to files ([814ce0b](814ce0b))
* feature request issue template ([1b39278](1b39278))
* Finish first patcher test ([0d8d19e](0d8d19e))
* Improve `SignatureResolver` ([139a23b](139a23b))
* improve logging ([c20dfe1](c20dfe1))
* Improve Smali Compiler ([6bfe571](6bfe571))
* improved Patch Options ([e722e3f](e722e3f))
* issue templates [skip ci] ([112bc99](112bc99))
* log failed patches due to failed dependencies ([a467fbb](a467fbb))
* logging class ([caf2745](caf2745))
* migrate logger to `slf4j` ([8f66f9f](8f66f9f))
* migrate to `DexPatchBundle` and `JarPatchBundle` ([8615798](8615798))
* migrate to dexlib ([3651981](3651981))
* Minor refactor and return proxy, if class has been proxied already ([4b26305](4b26305))
* nullability for `BytecodePatch` constructor ([ReVanced#59](https://github.com/yuchi0531/revanced-patcher/issues/59)) ([4ea030d](4ea030d))
* nullable parameters ([7882a8d](7882a8d))
* optional `forStaticMethod` parameter for `InlineSmaliCompiler.compileMethodInstructions` ([41e8860](41e8860))
* patch dependencies annotation and `PatcherOptions` ([6c65952](6c65952))
* patch options ([ReVanced#81](https://github.com/yuchi0531/revanced-patcher/issues/81)) ([fbb09f3](fbb09f3))
* PatchOptions#nullify to nullify an option ([371f0c4](371f0c4))
* properly manage `ClassProxy` & add `ProxyBackedClassList` ([6cb1fdf](6cb1fdf))
* registry for patch options ([2431785](2431785))
* remaining mutable `EncodedValue` classes ([3f97cc8](3f97cc8))
* remove deprecated functions ([ada5a03](ada5a03))
* return a `File` instance instead of `ExtFile` ([68174bb](68174bb))
* section `acknowledgements` for issue templates ([a0cb449](a0cb449))
* simplify adding instructions ([e47b67d](e47b67d))
* SincePatcher annotation ([25f74dc](25f74dc))
* Soft Dependencies for Patches ([8c12f8d](8c12f8d))
* streams overload for `XmlFileHolder` ([6f72c4c](6f72c4c))
* string signature ([ReVanced#22](https://github.com/yuchi0531/revanced-patcher/issues/22)) ([612515a](612515a))
* use annotations instead of metadata objects ([d20f7fd](d20f7fd))
* use streams to write the dex files ([64bae88](64bae88))
* utility functions to get metadata of patch & sigs ([54511a4](54511a4))
* validator for patch options ([4e2e772](4e2e772))
* yield the patch result ([dde5385](dde5385))

### Performance Improvements

* check type instead of class ([c7ef264](c7ef264))
* decode manifest only when not using resource patcher ([4f60bea](4f60bea))
* depend on `androlib` instead of `ApkDecoder` ([cc9416d](cc9416d))
* do not resolve empty signatures list ([b1eebc9](b1eebc9))
* **fingerprint:** do not resolve already resolved fingerprints ([4bfd7eb](4bfd7eb))
* lazy-ify all mutable clones ([d18a3b6](d18a3b6))
* make exception an object ([75d2be8](75d2be8))
* optimize indexOf call away ([9991f39](9991f39))
* use Set instead of List since there are no dupes ([e65ebd2](e65ebd2))
* use String List and compare instead of any lambda ([5bd416b](5bd416b))

### Reverts

* "fix: enforce aapt v1" ([dfd8a24](dfd8a24))
* AccessFlag extensions not working with IDE ([0bfb92a](0bfb92a))
* previous commits check for dupes in dexFile, not cache ([e810197](e810197))
* propagate dependencies ([365e1d7](365e1d7))
* revert breaking changes ([ReVanced#106](https://github.com/yuchi0531/revanced-patcher/issues/106)) ([124332f](124332f))

### BREAKING CHANGES

* Imports will have to be updated from `MethodFingerprintUtils` to `MethodFingerprint.Companion`.

Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
* `MethodFingerprint` now has a field for `MethodFingerprintScanResult`. `MethodFingerprintScanResult` now holds the previous field `MethodFingerprint.patternScanResult`.

Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
* Options has been moved from Patch to a new interface called OptionsContainer and are now handled entirely different. Make sure to check the examples to understand how it works.
* Patch options now use the PatchOptions registry class instead of an Iterable. This change requires modifications to existing patches using this API.
* Not backwards compatible, since a lot of classes where renamed.
* arrayOf has to be changed to listOf.
* Method signature of Patcher#save() was changed to comply with the changes of multidexlib2.
* Removed usage of ASM library
* Array<Int> was changed to IntArray. This breaks existing patches.
* Package name was changed from "net.revanced" to "app.revanced"
* Method signature of execute() was changed to include the cache, this will break existing implementations of the Patch class.
* Patch class is now an abstract class. You must implement it. You can use anonymous implements, like done in the tests.
github-actions bot pushed a commit to ThexXTURBOXx/revanced-patcher that referenced this issue Nov 5, 2022
# 1.0.0 (2022-11-05)

### Bug Fixes

* `compareSignatureToMethod` not matching correctly in case opcodes are null ([cca12aa](cca12aa))
* `ConcurrentModificationException` while iterating through `proxies` and modifying it ([6cb7cdb](6cb7cdb))
* `InlineSmaliCompiler.compile` using 0 registers instead of 1 by default ([835a421](835a421))
* `JarPatchBundle` loading non-class files to class loader ([849616d](849616d))
* `MethodWalker` not accounting for all reference instructions ([48068cb](48068cb))
* `PackageMetadata` ([7399450](7399450))
* `replaceWith` not replacing classes with used class proxies ([4178a1e](4178a1e))
* `String.toInstructions` defaulting `forStaticMethod` to `false` ([5a2f02b](5a2f02b)), closes [ReVanced/revanced-patches#46](ReVanced/revanced-patches#46)
* add docs (trigger release) ([6628b78](6628b78))
* add execute permission to `./gradlew` file ([ReVanced#46](https://github.com/ThexXTURBOXx/revanced-patcher/issues/46)) ([34f607a](34f607a))
* add tests for PathOption ([d6308e1](d6308e1))
* adding existing classes to the patchers cache ([9659a61](9659a61))
* always return PatchResultSuccess on patch success ([996c4ac](996c4ac))
* applying no patches throwing error ([5ca5a1c](5ca5a1c))
* applyPatches not returning successful patches ([f806cb3](f806cb3))
* avoid ignoring test resources (fixes [ReVanced#1](https://github.com/ThexXTURBOXx/revanced-patcher/issues/1)) ([d5a3c76](d5a3c76))
* broken deprecation message ([62aa295](62aa295))
* callback for each file instead of class ([930768d](930768d))
* callback only when inteded ([e3bf367](e3bf367))
* check dependencies for resource patches ([9c07ffc](9c07ffc))
* check if patch option requirement is met ([14a73bf](14a73bf))
* Classes not being written properly because of array shifting ([6e4db11](6e4db11))
* close open files ([ReVanced#75](https://github.com/ThexXTURBOXx/revanced-patcher/issues/75)) ([123ad54](123ad54))
* close stream when closing `DomFileEditor` ([77604d4](77604d4))
* compare any methods parameters ([ReVanced#101](https://github.com/ThexXTURBOXx/revanced-patcher/issues/101)) ([085a3a4](085a3a4))
* current must be calculated after increment ([5f12bab](5f12bab))
* dexlib must be propagated ([b738dcd](b738dcd))
* DomFileEditor opening in- and output streams on the same file ([83187c9](83187c9))
* enforce aapt v2 ([b68b0bf](b68b0bf))
* failing tests temporarily ([fc05fe7](fc05fe7))
* **fingerprint:** do not throw on `MethodFingerprint.result` getter ([2f7e62e](2f7e62e))
* fix classes having multiple instances of fields ([7cc8a7d](7cc8a7d))
* fix classes having multiple method instances ([398239d](398239d))
* Fixed writer & signature resolver, improved tests & speed, minor refactoring ([e6c2501](e6c2501))
* fuzzy resolver warning params were turned around ([e5bea06](e5bea06))
* give ClassWriter a ClassReader for symtable ([41749ba](41749ba))
* goodbye security ([8f3ac77](8f3ac77))
* **gradle:** publish source and javadocs ([c236ebe](c236ebe))
* handle null properly ([ReVanced#64](https://github.com/ThexXTURBOXx/revanced-patcher/issues/64)) ([482af78](482af78))
* handle option types and nulls properly ([aff4968](aff4968))
* handle private companion objects ([ad3d332](ad3d332))
* incorrect pattern offset ([f3b5f67](f3b5f67))
* invalid type propagation in options ([b873228](b873228)), closes [ReVanced#98](https://github.com/ThexXTURBOXx/revanced-patcher/issues/98)
* invalid types for example options ([79f91e0](79f91e0))
* invert fingerprint resolution condition of `customFingerprint` ([e2faf4c](e2faf4c))
* **Io:** fix finding classes by name ([b957501](b957501))
* **Io:** JAR loading and saving ([ReVanced#8](https://github.com/ThexXTURBOXx/revanced-patcher/issues/8)) ([310a7c4](310a7c4))
* make `methodMetadata` nullable in `MethodSignatureMetadata` ([4e56652](4e56652))
* make patcher version public ([76c45dd](76c45dd))
* make warnings nullable instead of lateinit ([8f1a629](8f1a629))
* match to correct signature method parameters ([1ee2e4b](1ee2e4b))
* **MethodResolver:** fix cd57a8c ([cbd8df2](cbd8df2))
* **MethodResolver:** strip labels and line numbers so opcode patterns match ([699c730](699c730))
* **MethodResolver:** strip labels nodes so opcode patterns match ([82c5306](82c5306))
* MethodSignature#resolved throwing an exception ([c612676](c612676))
* missing additional items [skip ci] ([0ebab8b](0ebab8b))
* more useful error message ([4b2e323](4b2e323))
* Move proxy package out of cache package ([ce21bd6](ce21bd6))
* mutability of local variable `modified` ([0e87ef5](0e87ef5))
* null check causing an exception ([338bd9f](338bd9f))
* nullable signature members ([ReVanced#10](https://github.com/ThexXTURBOXx/revanced-patcher/issues/10)) ([674461f](674461f))
* only run list option check if not null ([4055939](4055939))
* Patch should have access to the Cache ([4dd820f](4dd820f))
* Patcher not writing resolved methods ([fac44a5](fac44a5))
* Patcher setting BuildOptions too late ([6a5c873](6a5c873))
* PathOption should be open, not sealed ([a562e47](a562e47))
* qualifying `Element` with wrong package ([024fa86](024fa86))
* reaching all constructors not possible ([c459beb](c459beb))
* reformat (trigger release) ([bf48945](bf48945))
* remove broken code ([0e72a6e](0e72a6e))
* remove default param from Package.versions ([4b81318](4b81318))
* remove dependency to fork of Apktool ([11abc67](11abc67))
* remove javadoc jar (also trigger release) ([56f6ca3](56f6ca3))
* remove leftover debug code ([0f30eac](0f30eac))
* remove repeatable from PatchDeprecated ([6e73631](6e73631))
* remove requirement for solution [skip ci] ([ReVanced#80](https://github.com/ThexXTURBOXx/revanced-patcher/issues/80)) ([9a4d30e](9a4d30e))
* resource patcher ([31815ca](31815ca))
* return mutable set of classes ([66a9b76](66a9b76))
* return resourceFile to caller ([1f75777](1f75777))
* returning failure on success ([48c4ea2](48c4ea2))
* revert soft dependencies ([7b2d058](7b2d058))
* Search method map for existing class proxy ([a1e909b](a1e909b))
* set index for insertAt to 0 by default ([d5b4c99](d5b4c99))
* set marklimit to Integer.MAX_VALUE ([e6e468f](e6e468f))
* show error message if cause is null ([f9da2ad](f9da2ad))
* show error message instead of `null` ([8d95b14](8d95b14))
* string signature in `SignatureResolver` ([e5ae970](e5ae970))
* Suppress unused for addFiles ([3d6a1d3](3d6a1d3))
* **tests:** access `patternScanResult` through `scanResult` ([76676fb](76676fb))
* throwing in case the opcode patterns do not match ([3144ec8](3144ec8))
* typo in ListOption ([3921648](3921648))
* update apktool ([ab866bb](ab866bb))
* update apktool ([051afd9](051afd9))
* update apktool to fork ([566ecef](566ecef))
* update workflow actions ([20caab2](20caab2))
* use `Exception` instead of `MethodNotFoundException` ([2fc4ec4](2fc4ec4))
* use Array instead of Iterable for methodParameters ([dfac8f0](dfac8f0))
* use instruction index instead of strings list index for `StringMatch` ([843e62a](843e62a))
* using old instance of `Androlib` when saving ([a4d8be2](a4d8be2))
* version not working with apktool due to cache ([03f5ee0](03f5ee0))
* workflow on dev branch ([428f7f4](428f7f4))
* write all classes ([f068fc8](f068fc8))
* wrong value for iterator in PatchOptions ([e31ac1f](e31ac1f))

### Code Refactoring

* bump multidexlib2 to 2.5.2.r2 ([a6c6b49](a6c6b49))
* Change all references from Array to Iterable ([72f3cad](72f3cad))
* convert Patch to abstract class ([cb9b1b9](cb9b1b9))
* Improve Patch Options ([6b909c1](6b909c1))
* improve structuring of classes and their implementations ([4aa14bb](4aa14bb))
* migrate from `Signature` to `Fingerprint` ([efa8ea1](efa8ea1))
* Optimize Signature class ([ReVanced#11](https://github.com/ThexXTURBOXx/revanced-patcher/issues/11)) ([7faa001](7faa001))
* Rename `net.revanced` to `app.revanced` ([7087230](7087230))

* refactor!: move utility methods from `MethodFingerprintUtils` `MethodFingerprint` ([d802ef8](d802ef8))
* feat(fingerprint)!: `StringsScanResult` for `MethodFingerprint` ([3813e28](3813e28))

### Features

* `Closeable` patches ([bbd40bf](bbd40bf))
* `Dependencies` annotation ([893d4c6](893d4c6))
* `parametersCount` for `InlineSmaliCompiler` instead of `parameters` ([ad6c5c8](ad6c5c8))
* `PatchLoader` ([ec9fd15](ec9fd15))
* Add `findParentMethod` utility method ([ReVanced#4](https://github.com/ThexXTURBOXx/revanced-patcher/issues/4)) ([bbb2c54](bbb2c54))
* add `MethodWalker` ([7755bbc](7755bbc))
* add `p` naming scheme to smali compiler ([79909cf](79909cf))
* add extensions for cloning methods ([01bfbd6](01bfbd6))
* add findClass method with className ([4087f49](4087f49))
* Add first tests ([544bcf7](544bcf7))
* add fuzzy resolver ([7a56dca](7a56dca))
* add getValue & setValue for PatchOption ([2572cd0](2572cd0))
* add immutableMethod ([c63b20f](c63b20f))
* add inline smali compiler ([bfe4e3e](bfe4e3e))
* add missing test for fields ([6b8b057](6b8b057))
* add or extension for AccessFlags ([00c85b5](00c85b5))
* Add patch metadata ([642e903](642e903)), closes [ReVancedTeam/revanced-patches#1](https://github.com/ReVancedTeam/revanced-patches/issues/1)
* add Patch#dependsOn extension ([523f67b](523f67b))
* add PathOption back ([172655b](172655b))
* add replace and remove extensions ([ReVanced#50](https://github.com/ThexXTURBOXx/revanced-patcher/issues/50)) ([92ac5e4](92ac5e4))
* add SafeClassWriter ([6626014](6626014))
* Add warnings for Fuzzy resolver ([715a2ad](715a2ad))
* allow classes to be overwritten in addFiles and resolve signatures when applyPatches is called ([1db735b](1db735b))
* allow custom aapt path to be specified ([8eb4a8f](8eb4a8f))
* allow custom framework path to be specified ([d3a580e](d3a580e))
* Allow unknown opcodes using `null` ([0e5f4ba](0e5f4ba))
* default value for `Package.versions` annotation parameter ([131dedd](131dedd))
* deprecation for patches ([80c2e80](80c2e80))
* exclusive mutable access to files ([814ce0b](814ce0b))
* feature request issue template ([1b39278](1b39278))
* Finish first patcher test ([0d8d19e](0d8d19e))
* Improve `SignatureResolver` ([139a23b](139a23b))
* improve logging ([c20dfe1](c20dfe1))
* Improve Smali Compiler ([6bfe571](6bfe571))
* improved Patch Options ([e722e3f](e722e3f))
* issue templates [skip ci] ([112bc99](112bc99))
* log failed patches due to failed dependencies ([a467fbb](a467fbb))
* logging class ([caf2745](caf2745))
* migrate logger to `slf4j` ([8f66f9f](8f66f9f))
* migrate to `DexPatchBundle` and `JarPatchBundle` ([8615798](8615798))
* migrate to dexlib ([3651981](3651981))
* Minor refactor and return proxy, if class has been proxied already ([4b26305](4b26305))
* nullability for `BytecodePatch` constructor ([ReVanced#59](https://github.com/ThexXTURBOXx/revanced-patcher/issues/59)) ([4ea030d](4ea030d))
* nullable parameters ([7882a8d](7882a8d))
* optional `forStaticMethod` parameter for `InlineSmaliCompiler.compileMethodInstructions` ([41e8860](41e8860))
* patch dependencies annotation and `PatcherOptions` ([6c65952](6c65952))
* patch options ([ReVanced#81](https://github.com/ThexXTURBOXx/revanced-patcher/issues/81)) ([fbb09f3](fbb09f3))
* PatchOptions#nullify to nullify an option ([371f0c4](371f0c4))
* properly manage `ClassProxy` & add `ProxyBackedClassList` ([6cb1fdf](6cb1fdf))
* registry for patch options ([2431785](2431785))
* remaining mutable `EncodedValue` classes ([3f97cc8](3f97cc8))
* remove deprecated functions ([ada5a03](ada5a03))
* remove unused annotation `DirectPatternScanMethod` ([538b2a8](538b2a8))
* remove unused annotation `SincePatcher` ([4ae9ad0](4ae9ad0))
* remove unused extension `dependsOn` ([797286b](797286b))
* remove unused patch extensions ([5583904](5583904))
* return a `File` instance instead of `ExtFile` ([68174bb](68174bb))
* RwLock for opening files in `DomFileEditor` ([db4348c](db4348c))
* section `acknowledgements` for issue templates ([a0cb449](a0cb449))
* simplify adding instructions ([e47b67d](e47b67d))
* SincePatcher annotation ([25f74dc](25f74dc))
* Soft Dependencies for Patches ([8c12f8d](8c12f8d))
* streams overload for `XmlFileHolder` ([6f72c4c](6f72c4c))
* string signature ([ReVanced#22](https://github.com/ThexXTURBOXx/revanced-patcher/issues/22)) ([612515a](612515a))
* use annotations instead of metadata objects ([d20f7fd](d20f7fd))
* use streams to write the dex files ([64bae88](64bae88))
* utility functions to get metadata of patch & sigs ([54511a4](54511a4))
* validator for patch options ([4e2e772](4e2e772))
* yield the patch result ([dde5385](dde5385))

### Performance Improvements

* check type instead of class ([c7ef264](c7ef264))
* decode manifest only when not using resource patcher ([4f60bea](4f60bea))
* decode resources only when necessary ([3ba4be2](3ba4be2))
* depend on `androlib` instead of `ApkDecoder` ([cc9416d](cc9416d))
* do not resolve empty signatures list ([b1eebc9](b1eebc9))
* **fingerprint:** do not resolve already resolved fingerprints ([4bfd7eb](4bfd7eb))
* lazy-ify all mutable clones ([d18a3b6](d18a3b6))
* make exception an object ([75d2be8](75d2be8))
* optimize indexOf call away ([9991f39](9991f39))
* use Set instead of List since there are no dupes ([e65ebd2](e65ebd2))
* use String List and compare instead of any lambda ([5bd416b](5bd416b))

### Reverts

* "fix: enforce aapt v1" ([dfd8a24](dfd8a24))
* AccessFlag extensions not working with IDE ([0bfb92a](0bfb92a))
* previous commits check for dupes in dexFile, not cache ([e810197](e810197))
* propagate dependencies ([365e1d7](365e1d7))
* revert breaking changes ([ReVanced#106](https://github.com/ThexXTURBOXx/revanced-patcher/issues/106)) ([124332f](124332f))

### BREAKING CHANGES

* various changes in which packages classes previously where and their implementation
* These extensions do not exist anymore and any use should be removed
* The extension does not exist anymore and any use should be removed
* The annotation does not exist anymore and any use should be removed
* Imports will have to be updated from `MethodFingerprintUtils` to `MethodFingerprint.Companion`.

Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
* `MethodFingerprint` now has a field for `MethodFingerprintScanResult`. `MethodFingerprintScanResult` now holds the previous field `MethodFingerprint.patternScanResult`.

Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
* Options has been moved from Patch to a new interface called OptionsContainer and are now handled entirely different. Make sure to check the examples to understand how it works.
* Patch options now use the PatchOptions registry class instead of an Iterable. This change requires modifications to existing patches using this API.
* Not backwards compatible, since a lot of classes where renamed.
* arrayOf has to be changed to listOf.
* Method signature of Patcher#save() was changed to comply with the changes of multidexlib2.
* Removed usage of ASM library
* Array<Int> was changed to IntArray. This breaks existing patches.
* Package name was changed from "net.revanced" to "app.revanced"
* Method signature of execute() was changed to include the cache, this will break existing implementations of the Patch class.
* Patch class is now an abstract class. You must implement it. You can use anonymous implements, like done in the tests.
github-actions bot pushed a commit to chiraitori/revanced-patcher that referenced this issue Dec 13, 2022
# 1.0.0 (2022-12-13)

### Bug Fixes

* `compareSignatureToMethod` not matching correctly in case opcodes are null ([cca12aa](cca12aa))
* `ConcurrentModificationException` while iterating through `proxies` and modifying it ([6cb7cdb](6cb7cdb))
* `InlineSmaliCompiler.compile` using 0 registers instead of 1 by default ([835a421](835a421))
* `JarPatchBundle` loading non-class files to class loader ([849616d](849616d))
* `MethodWalker` not accounting for all reference instructions ([48068cb](48068cb))
* `PackageMetadata` ([7399450](7399450))
* `replaceWith` not replacing classes with used class proxies ([4178a1e](4178a1e))
* `String.toInstructions` defaulting `forStaticMethod` to `false` ([5a2f02b](5a2f02b)), closes [ReVanced/revanced-patches#46](ReVanced/revanced-patches#46)
* add docs (trigger release) ([6628b78](6628b78))
* add execute permission to `./gradlew` file ([ReVanced#46](https://github.com/tathaha/revanced-patcher/issues/46)) ([34f607a](34f607a))
* add tests for PathOption ([d6308e1](d6308e1))
* adding existing classes to the patchers cache ([9659a61](9659a61))
* always return PatchResultSuccess on patch success ([996c4ac](996c4ac))
* applying no patches throwing error ([5ca5a1c](5ca5a1c))
* applyPatches not returning successful patches ([f806cb3](f806cb3))
* avoid ignoring test resources (fixes [ReVanced#1](https://github.com/tathaha/revanced-patcher/issues/1)) ([d5a3c76](d5a3c76))
* broken deprecation message ([62aa295](62aa295))
* callback for each file instead of class ([930768d](930768d))
* callback only when inteded ([e3bf367](e3bf367))
* check dependencies for resource patches ([9c07ffc](9c07ffc))
* check if patch option requirement is met ([14a73bf](14a73bf))
* Classes not being written properly because of array shifting ([6e4db11](6e4db11))
* close open files ([ReVanced#75](https://github.com/tathaha/revanced-patcher/issues/75)) ([123ad54](123ad54))
* close stream when closing `DomFileEditor` ([77604d4](77604d4))
* compare any methods parameters ([ReVanced#101](https://github.com/tathaha/revanced-patcher/issues/101)) ([085a3a4](085a3a4))
* current must be calculated after increment ([5f12bab](5f12bab))
* dexlib must be propagated ([b738dcd](b738dcd))
* DomFileEditor opening in- and output streams on the same file ([83187c9](83187c9))
* enforce aapt v2 ([b68b0bf](b68b0bf))
* failing tests temporarily ([fc05fe7](fc05fe7))
* fallback to patch class name instead of `java.lang.Class` class name ([4164cb0](4164cb0))
* **fingerprint:** do not throw on `MethodFingerprint.result` getter ([2f7e62e](2f7e62e))
* fix classes having multiple instances of fields ([7cc8a7d](7cc8a7d))
* fix classes having multiple method instances ([398239d](398239d))
* Fixed writer & signature resolver, improved tests & speed, minor refactoring ([e6c2501](e6c2501))
* fuzzy resolver warning params were turned around ([e5bea06](e5bea06))
* give ClassWriter a ClassReader for symtable ([41749ba](41749ba))
* goodbye security ([8f3ac77](8f3ac77))
* **gradle:** publish source and javadocs ([c236ebe](c236ebe))
* handle null properly ([ReVanced#64](https://github.com/tathaha/revanced-patcher/issues/64)) ([482af78](482af78))
* handle option types and nulls properly ([aff4968](aff4968))
* handle private companion objects ([ad3d332](ad3d332))
* incorrect pattern offset ([f3b5f67](f3b5f67))
* invalid type propagation in options ([b873228](b873228)), closes [ReVanced#98](https://github.com/tathaha/revanced-patcher/issues/98)
* invalid types for example options ([79f91e0](79f91e0))
* invert fingerprint resolution condition of `customFingerprint` ([e2faf4c](e2faf4c))
* **Io:** fix finding classes by name ([b957501](b957501))
* **Io:** JAR loading and saving ([ReVanced#8](https://github.com/tathaha/revanced-patcher/issues/8)) ([310a7c4](310a7c4))
* make `methodMetadata` nullable in `MethodSignatureMetadata` ([4e56652](4e56652))
* make patcher version public ([76c45dd](76c45dd))
* make warnings nullable instead of lateinit ([8f1a629](8f1a629))
* match to correct signature method parameters ([1ee2e4b](1ee2e4b))
* **MethodResolver:** fix cd57a8c ([cbd8df2](cbd8df2))
* **MethodResolver:** strip labels and line numbers so opcode patterns match ([699c730](699c730))
* **MethodResolver:** strip labels nodes so opcode patterns match ([82c5306](82c5306))
* MethodSignature#resolved throwing an exception ([c612676](c612676))
* missing additional items [skip ci] ([0ebab8b](0ebab8b))
* more useful error message ([4b2e323](4b2e323))
* Move proxy package out of cache package ([ce21bd6](ce21bd6))
* mutability of local variable `modified` ([0e87ef5](0e87ef5))
* null check causing an exception ([338bd9f](338bd9f))
* nullable signature members ([ReVanced#10](https://github.com/tathaha/revanced-patcher/issues/10)) ([674461f](674461f))
* only run list option check if not null ([4055939](4055939))
* Patch should have access to the Cache ([4dd820f](4dd820f))
* Patcher not writing resolved methods ([fac44a5](fac44a5))
* Patcher setting BuildOptions too late ([6a5c873](6a5c873))
* PathOption should be open, not sealed ([a562e47](a562e47))
* qualifying `Element` with wrong package ([024fa86](024fa86))
* reaching all constructors not possible ([c459beb](c459beb))
* reformat (trigger release) ([bf48945](bf48945))
* remove broken code ([0e72a6e](0e72a6e))
* remove default param from Package.versions ([4b81318](4b81318))
* remove dependency to fork of Apktool ([11abc67](11abc67))
* remove javadoc jar (also trigger release) ([56f6ca3](56f6ca3))
* remove leftover debug code ([0f30eac](0f30eac))
* remove repeatable from PatchDeprecated ([6e73631](6e73631))
* remove requirement for solution [skip ci] ([ReVanced#80](https://github.com/tathaha/revanced-patcher/issues/80)) ([9a4d30e](9a4d30e))
* remove unnecessary dummy nop instructions ([ReVanced#111](https://github.com/tathaha/revanced-patcher/issues/111)) ([f9bc95f](f9bc95f))
* resource patcher ([31815ca](31815ca))
* return mutable set of classes ([66a9b76](66a9b76))
* return resourceFile to caller ([1f75777](1f75777))
* returning failure on success ([48c4ea2](48c4ea2))
* revert soft dependencies ([7b2d058](7b2d058))
* Search method map for existing class proxy ([a1e909b](a1e909b))
* set index for insertAt to 0 by default ([d5b4c99](d5b4c99))
* set marklimit to Integer.MAX_VALUE ([e6e468f](e6e468f))
* show error message if cause is null ([f9da2ad](f9da2ad))
* show error message instead of `null` ([8d95b14](8d95b14))
* string signature in `SignatureResolver` ([e5ae970](e5ae970))
* Suppress unused for addFiles ([3d6a1d3](3d6a1d3))
* **tests:** access `patternScanResult` through `scanResult` ([76676fb](76676fb))
* throwing in case the opcode patterns do not match ([3144ec8](3144ec8))
* typo in ListOption ([3921648](3921648))
* update apktool ([ab866bb](ab866bb))
* update apktool ([051afd9](051afd9))
* update apktool to fork ([566ecef](566ecef))
* use `Exception` instead of `MethodNotFoundException` ([2fc4ec4](2fc4ec4))
* use `MethodUtil.methodSignaturesMatch` instead of `Method.softCompareTo` ([bd053b7](bd053b7))
* use Array instead of Iterable for methodParameters ([dfac8f0](dfac8f0))
* use instruction index instead of strings list index for `StringMatch` ([843e62a](843e62a))
* using old instance of `Androlib` when saving ([a4d8be2](a4d8be2))
* version not working with apktool due to cache ([03f5ee0](03f5ee0))
* workflow on dev branch ([428f7f4](428f7f4))
* write all classes ([f068fc8](f068fc8))
* wrong value for iterator in PatchOptions ([e31ac1f](e31ac1f))

### Code Refactoring

* bump multidexlib2 to 2.5.2.r2 ([a6c6b49](a6c6b49))
* Change all references from Array to Iterable ([72f3cad](72f3cad))
* convert Patch to abstract class ([cb9b1b9](cb9b1b9))
* Improve Patch Options ([6b909c1](6b909c1))
* improve structuring of classes and their implementations ([4aa14bb](4aa14bb))
* migrate from `Signature` to `Fingerprint` ([efa8ea1](efa8ea1))
* Optimize Signature class ([ReVanced#11](https://github.com/tathaha/revanced-patcher/issues/11)) ([7faa001](7faa001))
* Rename `net.revanced` to `app.revanced` ([7087230](7087230))

* refactor!: move utility methods from `MethodFingerprintUtils` `MethodFingerprint` ([d802ef8](d802ef8))
* feat(fingerprint)!: `StringsScanResult` for `MethodFingerprint` ([3813e28](3813e28))

### Features

* `Closeable` patches ([bbd40bf](bbd40bf))
* `Dependencies` annotation ([893d4c6](893d4c6))
* `parametersCount` for `InlineSmaliCompiler` instead of `parameters` ([ad6c5c8](ad6c5c8))
* `PatchLoader` ([ec9fd15](ec9fd15))
* Add `findParentMethod` utility method ([ReVanced#4](https://github.com/tathaha/revanced-patcher/issues/4)) ([bbb2c54](bbb2c54))
* add `MethodWalker` ([7755bbc](7755bbc))
* add `p` naming scheme to smali compiler ([79909cf](79909cf))
* add extensions for cloning methods ([01bfbd6](01bfbd6))
* add findClass method with className ([4087f49](4087f49))
* Add first tests ([544bcf7](544bcf7))
* add fuzzy resolver ([7a56dca](7a56dca))
* add getValue & setValue for PatchOption ([2572cd0](2572cd0))
* add immutableMethod ([c63b20f](c63b20f))
* add inline smali compiler ([bfe4e3e](bfe4e3e))
* add missing test for fields ([6b8b057](6b8b057))
* add or extension for AccessFlags ([00c85b5](00c85b5))
* Add patch metadata ([642e903](642e903)), closes [ReVancedTeam/revanced-patches#1](https://github.com/ReVancedTeam/revanced-patches/issues/1)
* add Patch#dependsOn extension ([523f67b](523f67b))
* add PathOption back ([172655b](172655b))
* add replace and remove extensions ([ReVanced#50](https://github.com/tathaha/revanced-patcher/issues/50)) ([92ac5e4](92ac5e4))
* add SafeClassWriter ([6626014](6626014))
* Add warnings for Fuzzy resolver ([715a2ad](715a2ad))
* allow classes to be overwritten in addFiles and resolve signatures when applyPatches is called ([1db735b](1db735b))
* allow custom aapt path to be specified ([8eb4a8f](8eb4a8f))
* allow custom framework path to be specified ([d3a580e](d3a580e))
* Allow unknown opcodes using `null` ([0e5f4ba](0e5f4ba))
* apply changes from ReVanced Patcher ([ba9d998](ba9d998))
* default value for `Package.versions` annotation parameter ([131dedd](131dedd))
* deprecation for patches ([80c2e80](80c2e80))
* exclusive mutable access to files ([814ce0b](814ce0b))
* feature request issue template ([1b39278](1b39278))
* Finish first patcher test ([0d8d19e](0d8d19e))
* Improve `SignatureResolver` ([139a23b](139a23b))
* improve logging ([c20dfe1](c20dfe1))
* Improve Smali Compiler ([6bfe571](6bfe571))
* improved Patch Options ([e722e3f](e722e3f))
* issue templates [skip ci] ([112bc99](112bc99))
* log failed patches due to failed dependencies ([a467fbb](a467fbb))
* logging class ([caf2745](caf2745))
* merge classes on addition ([ReVanced#127](https://github.com/tathaha/revanced-patcher/issues/127)) ([a925650](a925650))
* migrate logger to `slf4j` ([8f66f9f](8f66f9f))
* migrate to `DexPatchBundle` and `JarPatchBundle` ([8615798](8615798))
* migrate to dexlib ([3651981](3651981))
* Minor refactor and return proxy, if class has been proxied already ([4b26305](4b26305))
* nullability for `BytecodePatch` constructor ([ReVanced#59](https://github.com/tathaha/revanced-patcher/issues/59)) ([4ea030d](4ea030d))
* nullable parameters ([7882a8d](7882a8d))
* optional `forStaticMethod` parameter for `InlineSmaliCompiler.compileMethodInstructions` ([41e8860](41e8860))
* patch dependencies annotation and `PatcherOptions` ([6c65952](6c65952))
* patch options ([ReVanced#81](https://github.com/tathaha/revanced-patcher/issues/81)) ([fbb09f3](fbb09f3))
* PatchOptions#nullify to nullify an option ([371f0c4](371f0c4))
* properly manage `ClassProxy` & add `ProxyBackedClassList` ([6cb1fdf](6cb1fdf))
* registry for patch options ([2431785](2431785))
* remaining mutable `EncodedValue` classes ([3f97cc8](3f97cc8))
* remove deprecated functions ([ada5a03](ada5a03))
* remove unused annotation `DirectPatternScanMethod` ([538b2a8](538b2a8))
* remove unused annotation `SincePatcher` ([4ae9ad0](4ae9ad0))
* remove unused extension `dependsOn` ([797286b](797286b))
* remove unused patch extensions ([5583904](5583904))
* return a `File` instance instead of `ExtFile` ([68174bb](68174bb))
* RwLock for opening files in `DomFileEditor` ([db4348c](db4348c))
* section `acknowledgements` for issue templates ([a0cb449](a0cb449))
* simplify adding instructions ([e47b67d](e47b67d))
* SincePatcher annotation ([25f74dc](25f74dc))
* Soft Dependencies for Patches ([8c12f8d](8c12f8d))
* sort patches in lexicographical order ([a306561](a306561)), closes [ReVanced#125](https://github.com/tathaha/revanced-patcher/issues/125)
* streams overload for `XmlFileHolder` ([6f72c4c](6f72c4c))
* string signature ([ReVanced#22](https://github.com/tathaha/revanced-patcher/issues/22)) ([612515a](612515a))
* use annotations instead of metadata objects ([d20f7fd](d20f7fd))
* use streams to write the dex files ([64bae88](64bae88))
* utility functions to get metadata of patch & sigs ([54511a4](54511a4))
* validator for patch options ([4e2e772](4e2e772))
* yield the patch result ([dde5385](dde5385))

### Performance Improvements

* check type instead of class ([c7ef264](c7ef264))
* decode manifest only when not using resource patcher ([4f60bea](4f60bea))
* decode resources only when necessary ([3ba4be2](3ba4be2))
* depend on `androlib` instead of `ApkDecoder` ([cc9416d](cc9416d))
* do not resolve empty signatures list ([b1eebc9](b1eebc9))
* **fingerprint:** do not resolve already resolved fingerprints ([4bfd7eb](4bfd7eb))
* lazy-ify all mutable clones ([d18a3b6](d18a3b6))
* make exception an object ([75d2be8](75d2be8))
* optimize indexOf call away ([9991f39](9991f39))
* use Set instead of List since there are no dupes ([e65ebd2](e65ebd2))
* use String List and compare instead of any lambda ([5bd416b](5bd416b))

### Reverts

* "fix: enforce aapt v1" ([dfd8a24](dfd8a24))
* AccessFlag extensions not working with IDE ([0bfb92a](0bfb92a))
* previous commits check for dupes in dexFile, not cache ([e810197](e810197))
* propagate dependencies ([365e1d7](365e1d7))
* revert breaking changes ([ReVanced#106](https://github.com/tathaha/revanced-patcher/issues/106)) ([124332f](124332f))

### BREAKING CHANGES

* various changes in which packages classes previously where and their implementation
* These extensions do not exist anymore and any use should be removed
* The extension does not exist anymore and any use should be removed
* The annotation does not exist anymore and any use should be removed
* Imports will have to be updated from `MethodFingerprintUtils` to `MethodFingerprint.Companion`.

Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
* `MethodFingerprint` now has a field for `MethodFingerprintScanResult`. `MethodFingerprintScanResult` now holds the previous field `MethodFingerprint.patternScanResult`.

Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
* Options has been moved from Patch to a new interface called OptionsContainer and are now handled entirely different. Make sure to check the examples to understand how it works.
* Patch options now use the PatchOptions registry class instead of an Iterable. This change requires modifications to existing patches using this API.
* Not backwards compatible, since a lot of classes where renamed.
* arrayOf has to be changed to listOf.
* Method signature of Patcher#save() was changed to comply with the changes of multidexlib2.
* Removed usage of ASM library
* Array<Int> was changed to IntArray. This breaks existing patches.
* Package name was changed from "net.revanced" to "app.revanced"
* Method signature of execute() was changed to include the cache, this will break existing implementations of the Patch class.
* Patch class is now an abstract class. You must implement it. You can use anonymous implements, like done in the tests.
github-actions bot pushed a commit to bogadana/ravanched-patcher that referenced this issue Dec 16, 2022
# 1.0.0 (2022-12-16)

### Bug Fixes

* `compareSignatureToMethod` not matching correctly in case opcodes are null ([cca12aa](cca12aa))
* `ConcurrentModificationException` while iterating through `proxies` and modifying it ([6cb7cdb](6cb7cdb))
* `InlineSmaliCompiler.compile` using 0 registers instead of 1 by default ([835a421](835a421))
* `JarPatchBundle` loading non-class files to class loader ([849616d](849616d))
* `MethodWalker` not accounting for all reference instructions ([48068cb](48068cb))
* `PackageMetadata` ([7399450](7399450))
* `replaceWith` not replacing classes with used class proxies ([4178a1e](4178a1e))
* `String.toInstructions` defaulting `forStaticMethod` to `false` ([5a2f02b](5a2f02b)), closes [ReVanced/revanced-patches#46](ReVanced/revanced-patches#46)
* add docs (trigger release) ([6628b78](6628b78))
* add execute permission to `./gradlew` file ([ReVanced#46](https://github.com/bogadana/ravanched-patcher/issues/46)) ([34f607a](34f607a))
* add tests for PathOption ([d6308e1](d6308e1))
* adding existing classes to the patchers cache ([9659a61](9659a61))
* always return PatchResultSuccess on patch success ([996c4ac](996c4ac))
* applying no patches throwing error ([5ca5a1c](5ca5a1c))
* applyPatches not returning successful patches ([f806cb3](f806cb3))
* avoid ignoring test resources (fixes [ReVanced#1](https://github.com/bogadana/ravanched-patcher/issues/1)) ([d5a3c76](d5a3c76))
* broken deprecation message ([62aa295](62aa295))
* callback for each file instead of class ([930768d](930768d))
* callback only when inteded ([e3bf367](e3bf367))
* check dependencies for resource patches ([9c07ffc](9c07ffc))
* check if patch option requirement is met ([14a73bf](14a73bf))
* Classes not being written properly because of array shifting ([6e4db11](6e4db11))
* close open files ([ReVanced#75](https://github.com/bogadana/ravanched-patcher/issues/75)) ([123ad54](123ad54))
* close stream when closing `DomFileEditor` ([77604d4](77604d4))
* compare any methods parameters ([ReVanced#101](https://github.com/bogadana/ravanched-patcher/issues/101)) ([085a3a4](085a3a4))
* current must be calculated after increment ([5f12bab](5f12bab))
* dexlib must be propagated ([b738dcd](b738dcd))
* DomFileEditor opening in- and output streams on the same file ([83187c9](83187c9))
* enforce aapt v2 ([b68b0bf](b68b0bf))
* failing tests temporarily ([fc05fe7](fc05fe7))
* fallback to patch class name instead of `java.lang.Class` class name ([4164cb0](4164cb0))
* **fingerprint:** do not throw on `MethodFingerprint.result` getter ([2f7e62e](2f7e62e))
* fix classes having multiple instances of fields ([7cc8a7d](7cc8a7d))
* fix classes having multiple method instances ([398239d](398239d))
* Fixed writer & signature resolver, improved tests & speed, minor refactoring ([e6c2501](e6c2501))
* fuzzy resolver warning params were turned around ([e5bea06](e5bea06))
* give ClassWriter a ClassReader for symtable ([41749ba](41749ba))
* goodbye security ([8f3ac77](8f3ac77))
* **gradle:** publish source and javadocs ([c236ebe](c236ebe))
* handle null properly ([ReVanced#64](https://github.com/bogadana/ravanched-patcher/issues/64)) ([482af78](482af78))
* handle option types and nulls properly ([aff4968](aff4968))
* handle private companion objects ([ad3d332](ad3d332))
* incorrect pattern offset ([f3b5f67](f3b5f67))
* invalid type propagation in options ([b873228](b873228)), closes [ReVanced#98](https://github.com/bogadana/ravanched-patcher/issues/98)
* invalid types for example options ([79f91e0](79f91e0))
* invert fingerprint resolution condition of `customFingerprint` ([e2faf4c](e2faf4c))
* **Io:** fix finding classes by name ([b957501](b957501))
* **Io:** JAR loading and saving ([ReVanced#8](https://github.com/bogadana/ravanched-patcher/issues/8)) ([310a7c4](310a7c4))
* make `methodMetadata` nullable in `MethodSignatureMetadata` ([4e56652](4e56652))
* make patcher version public ([76c45dd](76c45dd))
* make warnings nullable instead of lateinit ([8f1a629](8f1a629))
* match to correct signature method parameters ([1ee2e4b](1ee2e4b))
* **MethodResolver:** fix cd57a8c ([cbd8df2](cbd8df2))
* **MethodResolver:** strip labels and line numbers so opcode patterns match ([699c730](699c730))
* **MethodResolver:** strip labels nodes so opcode patterns match ([82c5306](82c5306))
* MethodSignature#resolved throwing an exception ([c612676](c612676))
* missing additional items [skip ci] ([0ebab8b](0ebab8b))
* more useful error message ([4b2e323](4b2e323))
* Move proxy package out of cache package ([ce21bd6](ce21bd6))
* mutability of local variable `modified` ([0e87ef5](0e87ef5))
* null check causing an exception ([338bd9f](338bd9f))
* nullable signature members ([ReVanced#10](https://github.com/bogadana/ravanched-patcher/issues/10)) ([674461f](674461f))
* only run list option check if not null ([4055939](4055939))
* Patch should have access to the Cache ([4dd820f](4dd820f))
* Patcher not writing resolved methods ([fac44a5](fac44a5))
* Patcher setting BuildOptions too late ([6a5c873](6a5c873))
* PathOption should be open, not sealed ([a562e47](a562e47))
* publicize types when merging files if necessary ([ReVanced#137](https://github.com/bogadana/ravanched-patcher/issues/137)) ([9ec720e](9ec720e))
* qualifying `Element` with wrong package ([024fa86](024fa86))
* reaching all constructors not possible ([c459beb](c459beb))
* reformat (trigger release) ([bf48945](bf48945))
* remove broken code ([0e72a6e](0e72a6e))
* remove default param from Package.versions ([4b81318](4b81318))
* remove dependency to fork of Apktool ([11abc67](11abc67))
* remove javadoc jar (also trigger release) ([56f6ca3](56f6ca3))
* remove leftover debug code ([0f30eac](0f30eac))
* remove repeatable from PatchDeprecated ([6e73631](6e73631))
* remove requirement for solution [skip ci] ([ReVanced#80](https://github.com/bogadana/ravanched-patcher/issues/80)) ([9a4d30e](9a4d30e))
* remove unnecessary dummy nop instructions ([ReVanced#111](https://github.com/bogadana/ravanched-patcher/issues/111)) ([f9bc95f](f9bc95f))
* resource patcher ([31815ca](31815ca))
* return mutable set of classes ([66a9b76](66a9b76))
* return resourceFile to caller ([1f75777](1f75777))
* returning failure on success ([48c4ea2](48c4ea2))
* revert soft dependencies ([7b2d058](7b2d058))
* Search method map for existing class proxy ([a1e909b](a1e909b))
* set index for insertAt to 0 by default ([d5b4c99](d5b4c99))
* set marklimit to Integer.MAX_VALUE ([e6e468f](e6e468f))
* show error message if cause is null ([f9da2ad](f9da2ad))
* show error message instead of `null` ([8d95b14](8d95b14))
* string signature in `SignatureResolver` ([e5ae970](e5ae970))
* Suppress unused for addFiles ([3d6a1d3](3d6a1d3))
* **tests:** access `patternScanResult` through `scanResult` ([76676fb](76676fb))
* throwing in case the opcode patterns do not match ([3144ec8](3144ec8))
* typo in ListOption ([3921648](3921648))
* update apktool ([ab866bb](ab866bb))
* update apktool ([051afd9](051afd9))
* update apktool to fork ([566ecef](566ecef))
* use `Exception` instead of `MethodNotFoundException` ([2fc4ec4](2fc4ec4))
* use `MethodUtil.methodSignaturesMatch` instead of `Method.softCompareTo` ([bd053b7](bd053b7))
* use Array instead of Iterable for methodParameters ([dfac8f0](dfac8f0))
* use instruction index instead of strings list index for `StringMatch` ([843e62a](843e62a))
* using old instance of `Androlib` when saving ([a4d8be2](a4d8be2))
* version not working with apktool due to cache ([03f5ee0](03f5ee0))
* workflow on dev branch ([428f7f4](428f7f4))
* write all classes ([f068fc8](f068fc8))
* wrong value for iterator in PatchOptions ([e31ac1f](e31ac1f))

### Code Refactoring

* bump multidexlib2 to 2.5.2.r2 ([a6c6b49](a6c6b49))
* Change all references from Array to Iterable ([72f3cad](72f3cad))
* convert Patch to abstract class ([cb9b1b9](cb9b1b9))
* Improve Patch Options ([6b909c1](6b909c1))
* improve structuring of classes and their implementations ([4aa14bb](4aa14bb))
* migrate from `Signature` to `Fingerprint` ([efa8ea1](efa8ea1))
* Optimize Signature class ([ReVanced#11](https://github.com/bogadana/ravanched-patcher/issues/11)) ([7faa001](7faa001))
* Rename `net.revanced` to `app.revanced` ([7087230](7087230))

* refactor!: move utility methods from `MethodFingerprintUtils` `MethodFingerprint` ([d802ef8](d802ef8))
* feat(fingerprint)!: `StringsScanResult` for `MethodFingerprint` ([3813e28](3813e28))

### Features

* `Closeable` patches ([bbd40bf](bbd40bf))
* `Dependencies` annotation ([893d4c6](893d4c6))
* `parametersCount` for `InlineSmaliCompiler` instead of `parameters` ([ad6c5c8](ad6c5c8))
* `PatchLoader` ([ec9fd15](ec9fd15))
* Add `findParentMethod` utility method ([ReVanced#4](https://github.com/bogadana/ravanched-patcher/issues/4)) ([bbb2c54](bbb2c54))
* add `MethodWalker` ([7755bbc](7755bbc))
* add `p` naming scheme to smali compiler ([79909cf](79909cf))
* add extensions for cloning methods ([01bfbd6](01bfbd6))
* add findClass method with className ([4087f49](4087f49))
* Add first tests ([544bcf7](544bcf7))
* add fuzzy resolver ([7a56dca](7a56dca))
* add getValue & setValue for PatchOption ([2572cd0](2572cd0))
* add immutableMethod ([c63b20f](c63b20f))
* add inline smali compiler ([bfe4e3e](bfe4e3e))
* add missing test for fields ([6b8b057](6b8b057))
* add or extension for AccessFlags ([00c85b5](00c85b5))
* Add patch metadata ([642e903](642e903)), closes [ReVancedTeam/revanced-patches#1](https://github.com/ReVancedTeam/revanced-patches/issues/1)
* add Patch#dependsOn extension ([523f67b](523f67b))
* add PathOption back ([172655b](172655b))
* add replace and remove extensions ([ReVanced#50](https://github.com/bogadana/ravanched-patcher/issues/50)) ([92ac5e4](92ac5e4))
* add SafeClassWriter ([6626014](6626014))
* Add warnings for Fuzzy resolver ([715a2ad](715a2ad))
* allow classes to be overwritten in addFiles and resolve signatures when applyPatches is called ([1db735b](1db735b))
* allow custom aapt path to be specified ([8eb4a8f](8eb4a8f))
* allow custom framework path to be specified ([d3a580e](d3a580e))
* Allow unknown opcodes using `null` ([0e5f4ba](0e5f4ba))
* apply changes from ReVanced Patcher ([ba9d998](ba9d998))
* default value for `Package.versions` annotation parameter ([131dedd](131dedd))
* deprecation for patches ([80c2e80](80c2e80))
* exclusive mutable access to files ([814ce0b](814ce0b))
* feature request issue template ([1b39278](1b39278))
* Finish first patcher test ([0d8d19e](0d8d19e))
* Improve `SignatureResolver` ([139a23b](139a23b))
* improve logging ([c20dfe1](c20dfe1))
* Improve Smali Compiler ([6bfe571](6bfe571))
* improved Patch Options ([e722e3f](e722e3f))
* issue templates [skip ci] ([112bc99](112bc99))
* log failed patches due to failed dependencies ([a467fbb](a467fbb))
* logging class ([caf2745](caf2745))
* merge classes on addition ([ReVanced#127](https://github.com/bogadana/ravanched-patcher/issues/127)) ([a925650](a925650))
* migrate logger to `slf4j` ([8f66f9f](8f66f9f))
* migrate to `DexPatchBundle` and `JarPatchBundle` ([8615798](8615798))
* migrate to dexlib ([3651981](3651981))
* Minor refactor and return proxy, if class has been proxied already ([4b26305](4b26305))
* nullability for `BytecodePatch` constructor ([ReVanced#59](https://github.com/bogadana/ravanched-patcher/issues/59)) ([4ea030d](4ea030d))
* nullable parameters ([7882a8d](7882a8d))
* optional `forStaticMethod` parameter for `InlineSmaliCompiler.compileMethodInstructions` ([41e8860](41e8860))
* patch dependencies annotation and `PatcherOptions` ([6c65952](6c65952))
* patch options ([ReVanced#81](https://github.com/bogadana/ravanched-patcher/issues/81)) ([fbb09f3](fbb09f3))
* PatchOptions#nullify to nullify an option ([371f0c4](371f0c4))
* properly manage `ClassProxy` & add `ProxyBackedClassList` ([6cb1fdf](6cb1fdf))
* registry for patch options ([2431785](2431785))
* remaining mutable `EncodedValue` classes ([3f97cc8](3f97cc8))
* remove deprecated functions ([ada5a03](ada5a03))
* remove unused annotation `DirectPatternScanMethod` ([538b2a8](538b2a8))
* remove unused annotation `SincePatcher` ([4ae9ad0](4ae9ad0))
* remove unused extension `dependsOn` ([797286b](797286b))
* remove unused patch extensions ([5583904](5583904))
* return a `File` instance instead of `ExtFile` ([68174bb](68174bb))
* RwLock for opening files in `DomFileEditor` ([db4348c](db4348c))
* section `acknowledgements` for issue templates ([a0cb449](a0cb449))
* simplify adding instructions ([e47b67d](e47b67d))
* SincePatcher annotation ([25f74dc](25f74dc))
* Soft Dependencies for Patches ([8c12f8d](8c12f8d))
* sort patches in lexicographical order ([a306561](a306561)), closes [ReVanced#125](https://github.com/bogadana/ravanched-patcher/issues/125)
* streams overload for `XmlFileHolder` ([6f72c4c](6f72c4c))
* string signature ([ReVanced#22](https://github.com/bogadana/ravanched-patcher/issues/22)) ([612515a](612515a))
* use annotations instead of metadata objects ([d20f7fd](d20f7fd))
* use streams to write the dex files ([64bae88](64bae88))
* utility functions to get metadata of patch & sigs ([54511a4](54511a4))
* validator for patch options ([4e2e772](4e2e772))
* yield the patch result ([dde5385](dde5385))

### Performance Improvements

* check type instead of class ([c7ef264](c7ef264))
* decode manifest only when not using resource patcher ([4f60bea](4f60bea))
* decode resources only when necessary ([3ba4be2](3ba4be2))
* depend on `androlib` instead of `ApkDecoder` ([cc9416d](cc9416d))
* do not resolve empty signatures list ([b1eebc9](b1eebc9))
* **fingerprint:** do not resolve already resolved fingerprints ([4bfd7eb](4bfd7eb))
* lazy-ify all mutable clones ([d18a3b6](d18a3b6))
* make exception an object ([75d2be8](75d2be8))
* optimize indexOf call away ([9991f39](9991f39))
* use Set instead of List since there are no dupes ([e65ebd2](e65ebd2))
* use String List and compare instead of any lambda ([5bd416b](5bd416b))

### Reverts

* "fix: enforce aapt v1" ([dfd8a24](dfd8a24))
* AccessFlag extensions not working with IDE ([0bfb92a](0bfb92a))
* previous commits check for dupes in dexFile, not cache ([e810197](e810197))
* propagate dependencies ([365e1d7](365e1d7))
* revert breaking changes ([ReVanced#106](https://github.com/bogadana/ravanched-patcher/issues/106)) ([124332f](124332f))

### BREAKING CHANGES

* various changes in which packages classes previously where and their implementation
* These extensions do not exist anymore and any use should be removed
* The extension does not exist anymore and any use should be removed
* The annotation does not exist anymore and any use should be removed
* Imports will have to be updated from `MethodFingerprintUtils` to `MethodFingerprint.Companion`.

Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
* `MethodFingerprint` now has a field for `MethodFingerprintScanResult`. `MethodFingerprintScanResult` now holds the previous field `MethodFingerprint.patternScanResult`.

Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
* Options has been moved from Patch to a new interface called OptionsContainer and are now handled entirely different. Make sure to check the examples to understand how it works.
* Patch options now use the PatchOptions registry class instead of an Iterable. This change requires modifications to existing patches using this API.
* Not backwards compatible, since a lot of classes where renamed.
* arrayOf has to be changed to listOf.
* Method signature of Patcher#save() was changed to comply with the changes of multidexlib2.
* Removed usage of ASM library
* Array<Int> was changed to IntArray. This breaks existing patches.
* Package name was changed from "net.revanced" to "app.revanced"
* Method signature of execute() was changed to include the cache, this will break existing implementations of the Patch class.
* Patch class is now an abstract class. You must implement it. You can use anonymous implements, like done in the tests.
github-actions bot pushed a commit to bogadana/ravanched-patcher that referenced this issue Dec 16, 2022
# 1.0.0 (2022-12-16)

### Bug Fixes

* `compareSignatureToMethod` not matching correctly in case opcodes are null ([cca12aa](cca12aa))
* `ConcurrentModificationException` while iterating through `proxies` and modifying it ([6cb7cdb](6cb7cdb))
* `InlineSmaliCompiler.compile` using 0 registers instead of 1 by default ([835a421](835a421))
* `JarPatchBundle` loading non-class files to class loader ([849616d](849616d))
* `MethodWalker` not accounting for all reference instructions ([48068cb](48068cb))
* `PackageMetadata` ([7399450](7399450))
* `replaceWith` not replacing classes with used class proxies ([4178a1e](4178a1e))
* `String.toInstructions` defaulting `forStaticMethod` to `false` ([5a2f02b](5a2f02b)), closes [ReVanced/revanced-patches#46](ReVanced/revanced-patches#46)
* add docs (trigger release) ([6628b78](6628b78))
* add execute permission to `./gradlew` file ([ReVanced#46](https://github.com/bogadana/ravanched-patcher/issues/46)) ([34f607a](34f607a))
* add tests for PathOption ([d6308e1](d6308e1))
* adding existing classes to the patchers cache ([9659a61](9659a61))
* always return PatchResultSuccess on patch success ([996c4ac](996c4ac))
* applying no patches throwing error ([5ca5a1c](5ca5a1c))
* applyPatches not returning successful patches ([f806cb3](f806cb3))
* avoid ignoring test resources (fixes [ReVanced#1](https://github.com/bogadana/ravanched-patcher/issues/1)) ([d5a3c76](d5a3c76))
* broken deprecation message ([62aa295](62aa295))
* callback for each file instead of class ([930768d](930768d))
* callback only when inteded ([e3bf367](e3bf367))
* check dependencies for resource patches ([9c07ffc](9c07ffc))
* check if patch option requirement is met ([14a73bf](14a73bf))
* Classes not being written properly because of array shifting ([6e4db11](6e4db11))
* close open files ([ReVanced#75](https://github.com/bogadana/ravanched-patcher/issues/75)) ([123ad54](123ad54))
* close stream when closing `DomFileEditor` ([77604d4](77604d4))
* compare any methods parameters ([ReVanced#101](https://github.com/bogadana/ravanched-patcher/issues/101)) ([085a3a4](085a3a4))
* current must be calculated after increment ([5f12bab](5f12bab))
* dexlib must be propagated ([b738dcd](b738dcd))
* DomFileEditor opening in- and output streams on the same file ([83187c9](83187c9))
* enforce aapt v2 ([b68b0bf](b68b0bf))
* failing tests temporarily ([fc05fe7](fc05fe7))
* fallback to patch class name instead of `java.lang.Class` class name ([4164cb0](4164cb0))
* **fingerprint:** do not throw on `MethodFingerprint.result` getter ([2f7e62e](2f7e62e))
* fix classes having multiple instances of fields ([7cc8a7d](7cc8a7d))
* fix classes having multiple method instances ([398239d](398239d))
* Fixed writer & signature resolver, improved tests & speed, minor refactoring ([e6c2501](e6c2501))
* fuzzy resolver warning params were turned around ([e5bea06](e5bea06))
* give ClassWriter a ClassReader for symtable ([41749ba](41749ba))
* goodbye security ([8f3ac77](8f3ac77))
* **gradle:** publish source and javadocs ([c236ebe](c236ebe))
* handle null properly ([ReVanced#64](https://github.com/bogadana/ravanched-patcher/issues/64)) ([482af78](482af78))
* handle option types and nulls properly ([aff4968](aff4968))
* handle private companion objects ([ad3d332](ad3d332))
* incorrect pattern offset ([f3b5f67](f3b5f67))
* invalid type propagation in options ([b873228](b873228)), closes [ReVanced#98](https://github.com/bogadana/ravanched-patcher/issues/98)
* invalid types for example options ([79f91e0](79f91e0))
* invert fingerprint resolution condition of `customFingerprint` ([e2faf4c](e2faf4c))
* **Io:** fix finding classes by name ([b957501](b957501))
* **Io:** JAR loading and saving ([ReVanced#8](https://github.com/bogadana/ravanched-patcher/issues/8)) ([310a7c4](310a7c4))
* make `methodMetadata` nullable in `MethodSignatureMetadata` ([4e56652](4e56652))
* make patcher version public ([76c45dd](76c45dd))
* make warnings nullable instead of lateinit ([8f1a629](8f1a629))
* match to correct signature method parameters ([1ee2e4b](1ee2e4b))
* **MethodResolver:** fix cd57a8c ([cbd8df2](cbd8df2))
* **MethodResolver:** strip labels and line numbers so opcode patterns match ([699c730](699c730))
* **MethodResolver:** strip labels nodes so opcode patterns match ([82c5306](82c5306))
* MethodSignature#resolved throwing an exception ([c612676](c612676))
* missing additional items [skip ci] ([0ebab8b](0ebab8b))
* more useful error message ([4b2e323](4b2e323))
* Move proxy package out of cache package ([ce21bd6](ce21bd6))
* mutability of local variable `modified` ([0e87ef5](0e87ef5))
* null check causing an exception ([338bd9f](338bd9f))
* nullable signature members ([ReVanced#10](https://github.com/bogadana/ravanched-patcher/issues/10)) ([674461f](674461f))
* only run list option check if not null ([4055939](4055939))
* Patch should have access to the Cache ([4dd820f](4dd820f))
* Patcher not writing resolved methods ([fac44a5](fac44a5))
* Patcher setting BuildOptions too late ([6a5c873](6a5c873))
* PathOption should be open, not sealed ([a562e47](a562e47))
* publicize types when merging files if necessary ([ReVanced#137](https://github.com/bogadana/ravanched-patcher/issues/137)) ([9ec720e](9ec720e))
* qualifying `Element` with wrong package ([024fa86](024fa86))
* reaching all constructors not possible ([c459beb](c459beb))
* reformat (trigger release) ([bf48945](bf48945))
* remove broken code ([0e72a6e](0e72a6e))
* remove default param from Package.versions ([4b81318](4b81318))
* remove dependency to fork of Apktool ([11abc67](11abc67))
* remove javadoc jar (also trigger release) ([56f6ca3](56f6ca3))
* remove leftover debug code ([0f30eac](0f30eac))
* remove repeatable from PatchDeprecated ([6e73631](6e73631))
* remove requirement for solution [skip ci] ([ReVanced#80](https://github.com/bogadana/ravanched-patcher/issues/80)) ([9a4d30e](9a4d30e))
* remove unnecessary dummy nop instructions ([ReVanced#111](https://github.com/bogadana/ravanched-patcher/issues/111)) ([f9bc95f](f9bc95f))
* resource patcher ([31815ca](31815ca))
* return mutable set of classes ([66a9b76](66a9b76))
* return resourceFile to caller ([1f75777](1f75777))
* returning failure on success ([48c4ea2](48c4ea2))
* revert soft dependencies ([7b2d058](7b2d058))
* Search method map for existing class proxy ([a1e909b](a1e909b))
* set index for insertAt to 0 by default ([d5b4c99](d5b4c99))
* set marklimit to Integer.MAX_VALUE ([e6e468f](e6e468f))
* show error message if cause is null ([f9da2ad](f9da2ad))
* show error message instead of `null` ([8d95b14](8d95b14))
* string signature in `SignatureResolver` ([e5ae970](e5ae970))
* Suppress unused for addFiles ([3d6a1d3](3d6a1d3))
* **tests:** access `patternScanResult` through `scanResult` ([76676fb](76676fb))
* throwing in case the opcode patterns do not match ([3144ec8](3144ec8))
* typo in ListOption ([3921648](3921648))
* update apktool ([ab866bb](ab866bb))
* update apktool ([051afd9](051afd9))
* update apktool to fork ([566ecef](566ecef))
* use `Exception` instead of `MethodNotFoundException` ([2fc4ec4](2fc4ec4))
* use `MethodUtil.methodSignaturesMatch` instead of `Method.softCompareTo` ([bd053b7](bd053b7))
* use Array instead of Iterable for methodParameters ([dfac8f0](dfac8f0))
* use instruction index instead of strings list index for `StringMatch` ([843e62a](843e62a))
* using old instance of `Androlib` when saving ([a4d8be2](a4d8be2))
* version not working with apktool due to cache ([03f5ee0](03f5ee0))
* workflow on dev branch ([428f7f4](428f7f4))
* write all classes ([f068fc8](f068fc8))
* wrong value for iterator in PatchOptions ([e31ac1f](e31ac1f))

### Code Refactoring

* bump multidexlib2 to 2.5.2.r2 ([a6c6b49](a6c6b49))
* Change all references from Array to Iterable ([72f3cad](72f3cad))
* convert Patch to abstract class ([cb9b1b9](cb9b1b9))
* Improve Patch Options ([6b909c1](6b909c1))
* improve structuring of classes and their implementations ([4aa14bb](4aa14bb))
* migrate from `Signature` to `Fingerprint` ([efa8ea1](efa8ea1))
* Optimize Signature class ([ReVanced#11](https://github.com/bogadana/ravanched-patcher/issues/11)) ([7faa001](7faa001))
* Rename `net.revanced` to `app.revanced` ([7087230](7087230))

* refactor!: move utility methods from `MethodFingerprintUtils` `MethodFingerprint` ([d802ef8](d802ef8))
* feat(fingerprint)!: `StringsScanResult` for `MethodFingerprint` ([3813e28](3813e28))

### Features

* `Closeable` patches ([bbd40bf](bbd40bf))
* `Dependencies` annotation ([893d4c6](893d4c6))
* `parametersCount` for `InlineSmaliCompiler` instead of `parameters` ([ad6c5c8](ad6c5c8))
* `PatchLoader` ([ec9fd15](ec9fd15))
* Add `findParentMethod` utility method ([ReVanced#4](https://github.com/bogadana/ravanched-patcher/issues/4)) ([bbb2c54](bbb2c54))
* add `MethodWalker` ([7755bbc](7755bbc))
* add `p` naming scheme to smali compiler ([79909cf](79909cf))
* add extensions for cloning methods ([01bfbd6](01bfbd6))
* add findClass method with className ([4087f49](4087f49))
* Add first tests ([544bcf7](544bcf7))
* add fuzzy resolver ([7a56dca](7a56dca))
* add getValue & setValue for PatchOption ([2572cd0](2572cd0))
* add immutableMethod ([c63b20f](c63b20f))
* add inline smali compiler ([bfe4e3e](bfe4e3e))
* add missing test for fields ([6b8b057](6b8b057))
* add or extension for AccessFlags ([00c85b5](00c85b5))
* Add patch metadata ([642e903](642e903)), closes [ReVancedTeam/revanced-patches#1](https://github.com/ReVancedTeam/revanced-patches/issues/1)
* add Patch#dependsOn extension ([523f67b](523f67b))
* add PathOption back ([172655b](172655b))
* add replace and remove extensions ([ReVanced#50](https://github.com/bogadana/ravanched-patcher/issues/50)) ([92ac5e4](92ac5e4))
* add SafeClassWriter ([6626014](6626014))
* Add warnings for Fuzzy resolver ([715a2ad](715a2ad))
* allow classes to be overwritten in addFiles and resolve signatures when applyPatches is called ([1db735b](1db735b))
* allow custom aapt path to be specified ([8eb4a8f](8eb4a8f))
* allow custom framework path to be specified ([d3a580e](d3a580e))
* Allow unknown opcodes using `null` ([0e5f4ba](0e5f4ba))
* apply changes from ReVanced Patcher ([ba9d998](ba9d998))
* default value for `Package.versions` annotation parameter ([131dedd](131dedd))
* deprecation for patches ([80c2e80](80c2e80))
* exclusive mutable access to files ([814ce0b](814ce0b))
* feature request issue template ([1b39278](1b39278))
* Finish first patcher test ([0d8d19e](0d8d19e))
* Improve `SignatureResolver` ([139a23b](139a23b))
* improve logging ([c20dfe1](c20dfe1))
* Improve Smali Compiler ([6bfe571](6bfe571))
* improved Patch Options ([e722e3f](e722e3f))
* issue templates [skip ci] ([112bc99](112bc99))
* log failed patches due to failed dependencies ([a467fbb](a467fbb))
* logging class ([caf2745](caf2745))
* merge classes on addition ([ReVanced#127](https://github.com/bogadana/ravanched-patcher/issues/127)) ([a925650](a925650))
* migrate logger to `slf4j` ([8f66f9f](8f66f9f))
* migrate to `DexPatchBundle` and `JarPatchBundle` ([8615798](8615798))
* migrate to dexlib ([3651981](3651981))
* Minor refactor and return proxy, if class has been proxied already ([4b26305](4b26305))
* nullability for `BytecodePatch` constructor ([ReVanced#59](https://github.com/bogadana/ravanched-patcher/issues/59)) ([4ea030d](4ea030d))
* nullable parameters ([7882a8d](7882a8d))
* optional `forStaticMethod` parameter for `InlineSmaliCompiler.compileMethodInstructions` ([41e8860](41e8860))
* patch dependencies annotation and `PatcherOptions` ([6c65952](6c65952))
* patch options ([ReVanced#81](https://github.com/bogadana/ravanched-patcher/issues/81)) ([fbb09f3](fbb09f3))
* PatchOptions#nullify to nullify an option ([371f0c4](371f0c4))
* properly manage `ClassProxy` & add `ProxyBackedClassList` ([6cb1fdf](6cb1fdf))
* registry for patch options ([2431785](2431785))
* remaining mutable `EncodedValue` classes ([3f97cc8](3f97cc8))
* remove deprecated functions ([ada5a03](ada5a03))
* remove unused annotation `DirectPatternScanMethod` ([538b2a8](538b2a8))
* remove unused annotation `SincePatcher` ([4ae9ad0](4ae9ad0))
* remove unused extension `dependsOn` ([797286b](797286b))
* remove unused patch extensions ([5583904](5583904))
* return a `File` instance instead of `ExtFile` ([68174bb](68174bb))
* RwLock for opening files in `DomFileEditor` ([db4348c](db4348c))
* section `acknowledgements` for issue templates ([a0cb449](a0cb449))
* simplify adding instructions ([e47b67d](e47b67d))
* SincePatcher annotation ([25f74dc](25f74dc))
* Soft Dependencies for Patches ([8c12f8d](8c12f8d))
* sort patches in lexicographical order ([a306561](a306561)), closes [ReVanced#125](https://github.com/bogadana/ravanched-patcher/issues/125)
* streams overload for `XmlFileHolder` ([6f72c4c](6f72c4c))
* string signature ([ReVanced#22](https://github.com/bogadana/ravanched-patcher/issues/22)) ([612515a](612515a))
* use annotations instead of metadata objects ([d20f7fd](d20f7fd))
* use streams to write the dex files ([64bae88](64bae88))
* utility functions to get metadata of patch & sigs ([54511a4](54511a4))
* validator for patch options ([4e2e772](4e2e772))
* yield the patch result ([dde5385](dde5385))

### Performance Improvements

* check type instead of class ([c7ef264](c7ef264))
* decode manifest only when not using resource patcher ([4f60bea](4f60bea))
* decode resources only when necessary ([3ba4be2](3ba4be2))
* depend on `androlib` instead of `ApkDecoder` ([cc9416d](cc9416d))
* do not resolve empty signatures list ([b1eebc9](b1eebc9))
* **fingerprint:** do not resolve already resolved fingerprints ([4bfd7eb](4bfd7eb))
* lazy-ify all mutable clones ([d18a3b6](d18a3b6))
* make exception an object ([75d2be8](75d2be8))
* optimize indexOf call away ([9991f39](9991f39))
* use Set instead of List since there are no dupes ([e65ebd2](e65ebd2))
* use String List and compare instead of any lambda ([5bd416b](5bd416b))

### Reverts

* "fix: enforce aapt v1" ([dfd8a24](dfd8a24))
* AccessFlag extensions not working with IDE ([0bfb92a](0bfb92a))
* previous commits check for dupes in dexFile, not cache ([e810197](e810197))
* propagate dependencies ([365e1d7](365e1d7))
* revert breaking changes ([ReVanced#106](https://github.com/bogadana/ravanched-patcher/issues/106)) ([124332f](124332f))

### BREAKING CHANGES

* various changes in which packages classes previously where and their implementation
* These extensions do not exist anymore and any use should be removed
* The extension does not exist anymore and any use should be removed
* The annotation does not exist anymore and any use should be removed
* Imports will have to be updated from `MethodFingerprintUtils` to `MethodFingerprint.Companion`.

Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
* `MethodFingerprint` now has a field for `MethodFingerprintScanResult`. `MethodFingerprintScanResult` now holds the previous field `MethodFingerprint.patternScanResult`.

Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
* Options has been moved from Patch to a new interface called OptionsContainer and are now handled entirely different. Make sure to check the examples to understand how it works.
* Patch options now use the PatchOptions registry class instead of an Iterable. This change requires modifications to existing patches using this API.
* Not backwards compatible, since a lot of classes where renamed.
* arrayOf has to be changed to listOf.
* Method signature of Patcher#save() was changed to comply with the changes of multidexlib2.
* Removed usage of ASM library
* Array<Int> was changed to IntArray. This breaks existing patches.
* Package name was changed from "net.revanced" to "app.revanced"
* Method signature of execute() was changed to include the cache, this will break existing implementations of the Patch class.
* Patch class is now an abstract class. You must implement it. You can use anonymous implements, like done in the tests.
github-actions bot pushed a commit to bogadana/ravanched-patcher that referenced this issue Dec 16, 2022
# 1.0.0 (2022-12-16)

### Bug Fixes

* `compareSignatureToMethod` not matching correctly in case opcodes are null ([cca12aa](cca12aa))
* `ConcurrentModificationException` while iterating through `proxies` and modifying it ([6cb7cdb](6cb7cdb))
* `InlineSmaliCompiler.compile` using 0 registers instead of 1 by default ([835a421](835a421))
* `JarPatchBundle` loading non-class files to class loader ([849616d](849616d))
* `MethodWalker` not accounting for all reference instructions ([48068cb](48068cb))
* `PackageMetadata` ([7399450](7399450))
* `replaceWith` not replacing classes with used class proxies ([4178a1e](4178a1e))
* `String.toInstructions` defaulting `forStaticMethod` to `false` ([5a2f02b](5a2f02b)), closes [ReVanced/revanced-patches#46](ReVanced/revanced-patches#46)
* add docs (trigger release) ([6628b78](6628b78))
* add execute permission to `./gradlew` file ([ReVanced#46](https://github.com/bogadana/ravanched-patcher/issues/46)) ([34f607a](34f607a))
* add tests for PathOption ([d6308e1](d6308e1))
* adding existing classes to the patchers cache ([9659a61](9659a61))
* always return PatchResultSuccess on patch success ([996c4ac](996c4ac))
* applying no patches throwing error ([5ca5a1c](5ca5a1c))
* applyPatches not returning successful patches ([f806cb3](f806cb3))
* avoid ignoring test resources (fixes [ReVanced#1](https://github.com/bogadana/ravanched-patcher/issues/1)) ([d5a3c76](d5a3c76))
* broken deprecation message ([62aa295](62aa295))
* callback for each file instead of class ([930768d](930768d))
* callback only when inteded ([e3bf367](e3bf367))
* check dependencies for resource patches ([9c07ffc](9c07ffc))
* check if patch option requirement is met ([14a73bf](14a73bf))
* Classes not being written properly because of array shifting ([6e4db11](6e4db11))
* close open files ([ReVanced#75](https://github.com/bogadana/ravanched-patcher/issues/75)) ([123ad54](123ad54))
* close stream when closing `DomFileEditor` ([77604d4](77604d4))
* compare any methods parameters ([ReVanced#101](https://github.com/bogadana/ravanched-patcher/issues/101)) ([085a3a4](085a3a4))
* current must be calculated after increment ([5f12bab](5f12bab))
* dexlib must be propagated ([b738dcd](b738dcd))
* DomFileEditor opening in- and output streams on the same file ([83187c9](83187c9))
* enforce aapt v2 ([b68b0bf](b68b0bf))
* failing tests temporarily ([fc05fe7](fc05fe7))
* fallback to patch class name instead of `java.lang.Class` class name ([4164cb0](4164cb0))
* **fingerprint:** do not throw on `MethodFingerprint.result` getter ([2f7e62e](2f7e62e))
* fix classes having multiple instances of fields ([7cc8a7d](7cc8a7d))
* fix classes having multiple method instances ([398239d](398239d))
* Fixed writer & signature resolver, improved tests & speed, minor refactoring ([e6c2501](e6c2501))
* fuzzy resolver warning params were turned around ([e5bea06](e5bea06))
* give ClassWriter a ClassReader for symtable ([41749ba](41749ba))
* goodbye security ([8f3ac77](8f3ac77))
* **gradle:** publish source and javadocs ([c236ebe](c236ebe))
* handle null properly ([ReVanced#64](https://github.com/bogadana/ravanched-patcher/issues/64)) ([482af78](482af78))
* handle option types and nulls properly ([aff4968](aff4968))
* handle private companion objects ([ad3d332](ad3d332))
* incorrect pattern offset ([f3b5f67](f3b5f67))
* invalid type propagation in options ([b873228](b873228)), closes [ReVanced#98](https://github.com/bogadana/ravanched-patcher/issues/98)
* invalid types for example options ([79f91e0](79f91e0))
* invert fingerprint resolution condition of `customFingerprint` ([e2faf4c](e2faf4c))
* **Io:** fix finding classes by name ([b957501](b957501))
* **Io:** JAR loading and saving ([ReVanced#8](https://github.com/bogadana/ravanched-patcher/issues/8)) ([310a7c4](310a7c4))
* make `methodMetadata` nullable in `MethodSignatureMetadata` ([4e56652](4e56652))
* make patcher version public ([76c45dd](76c45dd))
* make warnings nullable instead of lateinit ([8f1a629](8f1a629))
* match to correct signature method parameters ([1ee2e4b](1ee2e4b))
* **MethodResolver:** fix cd57a8c ([cbd8df2](cbd8df2))
* **MethodResolver:** strip labels and line numbers so opcode patterns match ([699c730](699c730))
* **MethodResolver:** strip labels nodes so opcode patterns match ([82c5306](82c5306))
* MethodSignature#resolved throwing an exception ([c612676](c612676))
* missing additional items [skip ci] ([0ebab8b](0ebab8b))
* more useful error message ([4b2e323](4b2e323))
* Move proxy package out of cache package ([ce21bd6](ce21bd6))
* mutability of local variable `modified` ([0e87ef5](0e87ef5))
* null check causing an exception ([338bd9f](338bd9f))
* nullable signature members ([ReVanced#10](https://github.com/bogadana/ravanched-patcher/issues/10)) ([674461f](674461f))
* only run list option check if not null ([4055939](4055939))
* Patch should have access to the Cache ([4dd820f](4dd820f))
* Patcher not writing resolved methods ([fac44a5](fac44a5))
* Patcher setting BuildOptions too late ([6a5c873](6a5c873))
* PathOption should be open, not sealed ([a562e47](a562e47))
* publicize types when merging files if necessary ([ReVanced#137](https://github.com/bogadana/ravanched-patcher/issues/137)) ([9ec720e](9ec720e))
* qualifying `Element` with wrong package ([024fa86](024fa86))
* reaching all constructors not possible ([c459beb](c459beb))
* reformat (trigger release) ([bf48945](bf48945))
* remove broken code ([0e72a6e](0e72a6e))
* remove default param from Package.versions ([4b81318](4b81318))
* remove dependency to fork of Apktool ([11abc67](11abc67))
* remove javadoc jar (also trigger release) ([56f6ca3](56f6ca3))
* remove leftover debug code ([0f30eac](0f30eac))
* remove repeatable from PatchDeprecated ([6e73631](6e73631))
* remove requirement for solution [skip ci] ([ReVanced#80](https://github.com/bogadana/ravanched-patcher/issues/80)) ([9a4d30e](9a4d30e))
* remove unnecessary dummy nop instructions ([ReVanced#111](https://github.com/bogadana/ravanched-patcher/issues/111)) ([f9bc95f](f9bc95f))
* resource patcher ([31815ca](31815ca))
* return mutable set of classes ([66a9b76](66a9b76))
* return resourceFile to caller ([1f75777](1f75777))
* returning failure on success ([48c4ea2](48c4ea2))
* revert soft dependencies ([7b2d058](7b2d058))
* Search method map for existing class proxy ([a1e909b](a1e909b))
* set index for insertAt to 0 by default ([d5b4c99](d5b4c99))
* set marklimit to Integer.MAX_VALUE ([e6e468f](e6e468f))
* show error message if cause is null ([f9da2ad](f9da2ad))
* show error message instead of `null` ([8d95b14](8d95b14))
* string signature in `SignatureResolver` ([e5ae970](e5ae970))
* Suppress unused for addFiles ([3d6a1d3](3d6a1d3))
* **tests:** access `patternScanResult` through `scanResult` ([76676fb](76676fb))
* throwing in case the opcode patterns do not match ([3144ec8](3144ec8))
* typo in ListOption ([3921648](3921648))
* update apktool ([ab866bb](ab866bb))
* update apktool ([051afd9](051afd9))
* update apktool to fork ([566ecef](566ecef))
* use `Exception` instead of `MethodNotFoundException` ([2fc4ec4](2fc4ec4))
* use `MethodUtil.methodSignaturesMatch` instead of `Method.softCompareTo` ([bd053b7](bd053b7))
* use Array instead of Iterable for methodParameters ([dfac8f0](dfac8f0))
* use instruction index instead of strings list index for `StringMatch` ([843e62a](843e62a))
* using old instance of `Androlib` when saving ([a4d8be2](a4d8be2))
* version not working with apktool due to cache ([03f5ee0](03f5ee0))
* workflow on dev branch ([428f7f4](428f7f4))
* write all classes ([f068fc8](f068fc8))
* wrong value for iterator in PatchOptions ([e31ac1f](e31ac1f))

### Code Refactoring

* bump multidexlib2 to 2.5.2.r2 ([a6c6b49](a6c6b49))
* Change all references from Array to Iterable ([72f3cad](72f3cad))
* convert Patch to abstract class ([cb9b1b9](cb9b1b9))
* Improve Patch Options ([6b909c1](6b909c1))
* improve structuring of classes and their implementations ([4aa14bb](4aa14bb))
* migrate from `Signature` to `Fingerprint` ([efa8ea1](efa8ea1))
* Optimize Signature class ([ReVanced#11](https://github.com/bogadana/ravanched-patcher/issues/11)) ([7faa001](7faa001))
* Rename `net.revanced` to `app.revanced` ([7087230](7087230))

* refactor!: move utility methods from `MethodFingerprintUtils` `MethodFingerprint` ([d802ef8](d802ef8))
* feat(fingerprint)!: `StringsScanResult` for `MethodFingerprint` ([3813e28](3813e28))

### Features

* `Closeable` patches ([bbd40bf](bbd40bf))
* `Dependencies` annotation ([893d4c6](893d4c6))
* `parametersCount` for `InlineSmaliCompiler` instead of `parameters` ([ad6c5c8](ad6c5c8))
* `PatchLoader` ([ec9fd15](ec9fd15))
* Add `findParentMethod` utility method ([ReVanced#4](https://github.com/bogadana/ravanched-patcher/issues/4)) ([bbb2c54](bbb2c54))
* add `MethodWalker` ([7755bbc](7755bbc))
* add `p` naming scheme to smali compiler ([79909cf](79909cf))
* add extensions for cloning methods ([01bfbd6](01bfbd6))
* add findClass method with className ([4087f49](4087f49))
* Add first tests ([544bcf7](544bcf7))
* add fuzzy resolver ([7a56dca](7a56dca))
* add getValue & setValue for PatchOption ([2572cd0](2572cd0))
* add immutableMethod ([c63b20f](c63b20f))
* add inline smali compiler ([bfe4e3e](bfe4e3e))
* add missing test for fields ([6b8b057](6b8b057))
* add or extension for AccessFlags ([00c85b5](00c85b5))
* Add patch metadata ([642e903](642e903)), closes [ReVancedTeam/revanced-patches#1](https://github.com/ReVancedTeam/revanced-patches/issues/1)
* add Patch#dependsOn extension ([523f67b](523f67b))
* add PathOption back ([172655b](172655b))
* add replace and remove extensions ([ReVanced#50](https://github.com/bogadana/ravanched-patcher/issues/50)) ([92ac5e4](92ac5e4))
* add SafeClassWriter ([6626014](6626014))
* Add warnings for Fuzzy resolver ([715a2ad](715a2ad))
* allow classes to be overwritten in addFiles and resolve signatures when applyPatches is called ([1db735b](1db735b))
* allow custom aapt path to be specified ([8eb4a8f](8eb4a8f))
* allow custom framework path to be specified ([d3a580e](d3a580e))
* Allow unknown opcodes using `null` ([0e5f4ba](0e5f4ba))
* apply changes from ReVanced Patcher ([ba9d998](ba9d998))
* default value for `Package.versions` annotation parameter ([131dedd](131dedd))
* deprecation for patches ([80c2e80](80c2e80))
* exclusive mutable access to files ([814ce0b](814ce0b))
* feature request issue template ([1b39278](1b39278))
* Finish first patcher test ([0d8d19e](0d8d19e))
* Improve `SignatureResolver` ([139a23b](139a23b))
* improve logging ([c20dfe1](c20dfe1))
* Improve Smali Compiler ([6bfe571](6bfe571))
* improved Patch Options ([e722e3f](e722e3f))
* issue templates [skip ci] ([112bc99](112bc99))
* log failed patches due to failed dependencies ([a467fbb](a467fbb))
* logging class ([caf2745](caf2745))
* merge classes on addition ([ReVanced#127](https://github.com/bogadana/ravanched-patcher/issues/127)) ([a925650](a925650))
* migrate logger to `slf4j` ([8f66f9f](8f66f9f))
* migrate to `DexPatchBundle` and `JarPatchBundle` ([8615798](8615798))
* migrate to dexlib ([3651981](3651981))
* Minor refactor and return proxy, if class has been proxied already ([4b26305](4b26305))
* nullability for `BytecodePatch` constructor ([ReVanced#59](https://github.com/bogadana/ravanched-patcher/issues/59)) ([4ea030d](4ea030d))
* nullable parameters ([7882a8d](7882a8d))
* optional `forStaticMethod` parameter for `InlineSmaliCompiler.compileMethodInstructions` ([41e8860](41e8860))
* patch dependencies annotation and `PatcherOptions` ([6c65952](6c65952))
* patch options ([ReVanced#81](https://github.com/bogadana/ravanched-patcher/issues/81)) ([fbb09f3](fbb09f3))
* PatchOptions#nullify to nullify an option ([371f0c4](371f0c4))
* properly manage `ClassProxy` & add `ProxyBackedClassList` ([6cb1fdf](6cb1fdf))
* registry for patch options ([2431785](2431785))
* remaining mutable `EncodedValue` classes ([3f97cc8](3f97cc8))
* remove deprecated functions ([ada5a03](ada5a03))
* remove unused annotation `DirectPatternScanMethod` ([538b2a8](538b2a8))
* remove unused annotation `SincePatcher` ([4ae9ad0](4ae9ad0))
* remove unused extension `dependsOn` ([797286b](797286b))
* remove unused patch extensions ([5583904](5583904))
* return a `File` instance instead of `ExtFile` ([68174bb](68174bb))
* RwLock for opening files in `DomFileEditor` ([db4348c](db4348c))
* section `acknowledgements` for issue templates ([a0cb449](a0cb449))
* simplify adding instructions ([e47b67d](e47b67d))
* SincePatcher annotation ([25f74dc](25f74dc))
* Soft Dependencies for Patches ([8c12f8d](8c12f8d))
* sort patches in lexicographical order ([a306561](a306561)), closes [ReVanced#125](https://github.com/bogadana/ravanched-patcher/issues/125)
* streams overload for `XmlFileHolder` ([6f72c4c](6f72c4c))
* string signature ([ReVanced#22](https://github.com/bogadana/ravanched-patcher/issues/22)) ([612515a](612515a))
* use annotations instead of metadata objects ([d20f7fd](d20f7fd))
* use streams to write the dex files ([64bae88](64bae88))
* utility functions to get metadata of patch & sigs ([54511a4](54511a4))
* validator for patch options ([4e2e772](4e2e772))
* yield the patch result ([dde5385](dde5385))

### Performance Improvements

* check type instead of class ([c7ef264](c7ef264))
* decode manifest only when not using resource patcher ([4f60bea](4f60bea))
* decode resources only when necessary ([3ba4be2](3ba4be2))
* depend on `androlib` instead of `ApkDecoder` ([cc9416d](cc9416d))
* do not resolve empty signatures list ([b1eebc9](b1eebc9))
* **fingerprint:** do not resolve already resolved fingerprints ([4bfd7eb](4bfd7eb))
* lazy-ify all mutable clones ([d18a3b6](d18a3b6))
* make exception an object ([75d2be8](75d2be8))
* optimize indexOf call away ([9991f39](9991f39))
* use Set instead of List since there are no dupes ([e65ebd2](e65ebd2))
* use String List and compare instead of any lambda ([5bd416b](5bd416b))

### Reverts

* "fix: enforce aapt v1" ([dfd8a24](dfd8a24))
* AccessFlag extensions not working with IDE ([0bfb92a](0bfb92a))
* previous commits check for dupes in dexFile, not cache ([e810197](e810197))
* propagate dependencies ([365e1d7](365e1d7))
* revert breaking changes ([ReVanced#106](https://github.com/bogadana/ravanched-patcher/issues/106)) ([124332f](124332f))

### BREAKING CHANGES

* various changes in which packages classes previously where and their implementation
* These extensions do not exist anymore and any use should be removed
* The extension does not exist anymore and any use should be removed
* The annotation does not exist anymore and any use should be removed
* Imports will have to be updated from `MethodFingerprintUtils` to `MethodFingerprint.Companion`.

Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
* `MethodFingerprint` now has a field for `MethodFingerprintScanResult`. `MethodFingerprintScanResult` now holds the previous field `MethodFingerprint.patternScanResult`.

Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
* Options has been moved from Patch to a new interface called OptionsContainer and are now handled entirely different. Make sure to check the examples to understand how it works.
* Patch options now use the PatchOptions registry class instead of an Iterable. This change requires modifications to existing patches using this API.
* Not backwards compatible, since a lot of classes where renamed.
* arrayOf has to be changed to listOf.
* Method signature of Patcher#save() was changed to comply with the changes of multidexlib2.
* Removed usage of ASM library
* Array<Int> was changed to IntArray. This breaks existing patches.
* Package name was changed from "net.revanced" to "app.revanced"
* Method signature of execute() was changed to include the cache, this will break existing implementations of the Patch class.
* Patch class is now an abstract class. You must implement it. You can use anonymous implements, like done in the tests.
github-actions bot pushed a commit to bogadana/ravanched-patcher that referenced this issue Dec 18, 2022
# 1.0.0-dev.1 (2022-12-18)

### Bug Fixes

* `compareSignatureToMethod` not matching correctly in case opcodes are null ([cca12aa](cca12aa))
* `ConcurrentModificationException` while iterating through `proxies` and modifying it ([6cb7cdb](6cb7cdb))
* `InlineSmaliCompiler.compile` using 0 registers instead of 1 by default ([835a421](835a421))
* `JarPatchBundle` loading non-class files to class loader ([849616d](849616d))
* `MethodWalker` not accounting for all reference instructions ([48068cb](48068cb))
* `PackageMetadata` ([7399450](7399450))
* `replaceWith` not replacing classes with used class proxies ([4178a1e](4178a1e))
* `String.toInstructions` defaulting `forStaticMethod` to `false` ([5a2f02b](5a2f02b)), closes [ReVanced/revanced-patches#46](ReVanced/revanced-patches#46)
* add docs (trigger release) ([6628b78](6628b78))
* add execute permission to `./gradlew` file ([ReVanced#46](https://github.com/bogadana/ravanched-patcher/issues/46)) ([34f607a](34f607a))
* add tests for PathOption ([d6308e1](d6308e1))
* adding existing classes to the patchers cache ([9659a61](9659a61))
* always return PatchResultSuccess on patch success ([996c4ac](996c4ac))
* applying no patches throwing error ([5ca5a1c](5ca5a1c))
* applyPatches not returning successful patches ([f806cb3](f806cb3))
* avoid ignoring test resources (fixes [ReVanced#1](https://github.com/bogadana/ravanched-patcher/issues/1)) ([d5a3c76](d5a3c76))
* broken deprecation message ([62aa295](62aa295))
* callback for each file instead of class ([930768d](930768d))
* callback only when inteded ([e3bf367](e3bf367))
* check dependencies for resource patches ([9c07ffc](9c07ffc))
* check if patch option requirement is met ([14a73bf](14a73bf))
* Classes not being written properly because of array shifting ([6e4db11](6e4db11))
* close open files ([ReVanced#75](https://github.com/bogadana/ravanched-patcher/issues/75)) ([123ad54](123ad54))
* close stream when closing `DomFileEditor` ([77604d4](77604d4))
* compare any methods parameters ([ReVanced#101](https://github.com/bogadana/ravanched-patcher/issues/101)) ([085a3a4](085a3a4))
* current must be calculated after increment ([5f12bab](5f12bab))
* dexlib must be propagated ([b738dcd](b738dcd))
* DomFileEditor opening in- and output streams on the same file ([83187c9](83187c9))
* enforce aapt v2 ([b68b0bf](b68b0bf))
* failing tests temporarily ([fc05fe7](fc05fe7))
* fallback to patch class name instead of `java.lang.Class` class name ([4164cb0](4164cb0))
* **fingerprint:** do not throw on `MethodFingerprint.result` getter ([2f7e62e](2f7e62e))
* fix classes having multiple instances of fields ([7cc8a7d](7cc8a7d))
* fix classes having multiple method instances ([398239d](398239d))
* Fixed writer & signature resolver, improved tests & speed, minor refactoring ([e6c2501](e6c2501))
* fuzzy resolver warning params were turned around ([e5bea06](e5bea06))
* give ClassWriter a ClassReader for symtable ([41749ba](41749ba))
* goodbye security ([8f3ac77](8f3ac77))
* **gradle:** publish source and javadocs ([c236ebe](c236ebe))
* handle null properly ([ReVanced#64](https://github.com/bogadana/ravanched-patcher/issues/64)) ([482af78](482af78))
* handle option types and nulls properly ([aff4968](aff4968))
* handle private companion objects ([ad3d332](ad3d332))
* incorrect pattern offset ([f3b5f67](f3b5f67))
* invalid type propagation in options ([b873228](b873228)), closes [ReVanced#98](https://github.com/bogadana/ravanched-patcher/issues/98)
* invalid types for example options ([79f91e0](79f91e0))
* invert fingerprint resolution condition of `customFingerprint` ([e2faf4c](e2faf4c))
* **Io:** fix finding classes by name ([b957501](b957501))
* **Io:** JAR loading and saving ([ReVanced#8](https://github.com/bogadana/ravanched-patcher/issues/8)) ([310a7c4](310a7c4))
* make `methodMetadata` nullable in `MethodSignatureMetadata` ([4e56652](4e56652))
* make patcher version public ([76c45dd](76c45dd))
* make warnings nullable instead of lateinit ([8f1a629](8f1a629))
* match to correct signature method parameters ([1ee2e4b](1ee2e4b))
* **MethodResolver:** fix cd57a8c ([cbd8df2](cbd8df2))
* **MethodResolver:** strip labels and line numbers so opcode patterns match ([699c730](699c730))
* **MethodResolver:** strip labels nodes so opcode patterns match ([82c5306](82c5306))
* MethodSignature#resolved throwing an exception ([c612676](c612676))
* missing additional items [skip ci] ([0ebab8b](0ebab8b))
* more useful error message ([4b2e323](4b2e323))
* Move proxy package out of cache package ([ce21bd6](ce21bd6))
* mutability of local variable `modified` ([0e87ef5](0e87ef5))
* null check causing an exception ([338bd9f](338bd9f))
* nullable signature members ([ReVanced#10](https://github.com/bogadana/ravanched-patcher/issues/10)) ([674461f](674461f))
* only run list option check if not null ([4055939](4055939))
* Patch should have access to the Cache ([4dd820f](4dd820f))
* Patcher not writing resolved methods ([fac44a5](fac44a5))
* Patcher setting BuildOptions too late ([6a5c873](6a5c873))
* PathOption should be open, not sealed ([a562e47](a562e47))
* publicize types when merging files if necessary ([ReVanced#137](https://github.com/bogadana/ravanched-patcher/issues/137)) ([9ec720e](9ec720e))
* qualifying `Element` with wrong package ([024fa86](024fa86))
* reaching all constructors not possible ([c459beb](c459beb))
* reformat (trigger release) ([bf48945](bf48945))
* remove broken code ([0e72a6e](0e72a6e))
* remove default param from Package.versions ([4b81318](4b81318))
* remove dependency to fork of Apktool ([11abc67](11abc67))
* remove javadoc jar (also trigger release) ([56f6ca3](56f6ca3))
* remove leftover debug code ([0f30eac](0f30eac))
* remove repeatable from PatchDeprecated ([6e73631](6e73631))
* remove requirement for solution [skip ci] ([ReVanced#80](https://github.com/bogadana/ravanched-patcher/issues/80)) ([9a4d30e](9a4d30e))
* remove unnecessary dummy nop instructions ([ReVanced#111](https://github.com/bogadana/ravanched-patcher/issues/111)) ([f9bc95f](f9bc95f))
* resource patcher ([31815ca](31815ca))
* return mutable set of classes ([66a9b76](66a9b76))
* return resourceFile to caller ([1f75777](1f75777))
* returning failure on success ([48c4ea2](48c4ea2))
* revert soft dependencies ([7b2d058](7b2d058))
* Search method map for existing class proxy ([a1e909b](a1e909b))
* set index for insertAt to 0 by default ([d5b4c99](d5b4c99))
* set marklimit to Integer.MAX_VALUE ([e6e468f](e6e468f))
* show error message if cause is null ([f9da2ad](f9da2ad))
* show error message instead of `null` ([8d95b14](8d95b14))
* string signature in `SignatureResolver` ([e5ae970](e5ae970))
* Suppress unused for addFiles ([3d6a1d3](3d6a1d3))
* **tests:** access `patternScanResult` through `scanResult` ([76676fb](76676fb))
* throwing in case the opcode patterns do not match ([3144ec8](3144ec8))
* typo in ListOption ([3921648](3921648))
* update apktool ([ab866bb](ab866bb))
* update apktool ([051afd9](051afd9))
* update apktool to fork ([566ecef](566ecef))
* use `Exception` instead of `MethodNotFoundException` ([2fc4ec4](2fc4ec4))
* use `MethodUtil.methodSignaturesMatch` instead of `Method.softCompareTo` ([bd053b7](bd053b7))
* use Array instead of Iterable for methodParameters ([dfac8f0](dfac8f0))
* use instruction index instead of strings list index for `StringMatch` ([843e62a](843e62a))
* using old instance of `Androlib` when saving ([a4d8be2](a4d8be2))
* version not working with apktool due to cache ([03f5ee0](03f5ee0))
* workflow on dev branch ([428f7f4](428f7f4))
* write all classes ([f068fc8](f068fc8))
* wrong value for iterator in PatchOptions ([e31ac1f](e31ac1f))

### Code Refactoring

* bump multidexlib2 to 2.5.2.r2 ([a6c6b49](a6c6b49))
* Change all references from Array to Iterable ([72f3cad](72f3cad))
* convert Patch to abstract class ([cb9b1b9](cb9b1b9))
* Improve Patch Options ([6b909c1](6b909c1))
* improve structuring of classes and their implementations ([4aa14bb](4aa14bb))
* migrate from `Signature` to `Fingerprint` ([efa8ea1](efa8ea1))
* Optimize Signature class ([ReVanced#11](https://github.com/bogadana/ravanched-patcher/issues/11)) ([7faa001](7faa001))
* Rename `net.revanced` to `app.revanced` ([7087230](7087230))

* refactor!: move utility methods from `MethodFingerprintUtils` `MethodFingerprint` ([d802ef8](d802ef8))
* feat(fingerprint)!: `StringsScanResult` for `MethodFingerprint` ([3813e28](3813e28))

### Features

* `Closeable` patches ([bbd40bf](bbd40bf))
* `Dependencies` annotation ([893d4c6](893d4c6))
* `parametersCount` for `InlineSmaliCompiler` instead of `parameters` ([ad6c5c8](ad6c5c8))
* `PatchLoader` ([ec9fd15](ec9fd15))
* Add `findParentMethod` utility method ([ReVanced#4](https://github.com/bogadana/ravanched-patcher/issues/4)) ([bbb2c54](bbb2c54))
* add `MethodWalker` ([7755bbc](7755bbc))
* add `p` naming scheme to smali compiler ([79909cf](79909cf))
* add extensions for cloning methods ([01bfbd6](01bfbd6))
* add findClass method with className ([4087f49](4087f49))
* Add first tests ([544bcf7](544bcf7))
* add fuzzy resolver ([7a56dca](7a56dca))
* add getValue & setValue for PatchOption ([2572cd0](2572cd0))
* add immutableMethod ([c63b20f](c63b20f))
* add inline smali compiler ([bfe4e3e](bfe4e3e))
* add missing test for fields ([6b8b057](6b8b057))
* add or extension for AccessFlags ([00c85b5](00c85b5))
* Add patch metadata ([642e903](642e903)), closes [ReVancedTeam/revanced-patches#1](https://github.com/ReVancedTeam/revanced-patches/issues/1)
* add Patch#dependsOn extension ([523f67b](523f67b))
* add PathOption back ([172655b](172655b))
* add replace and remove extensions ([ReVanced#50](https://github.com/bogadana/ravanched-patcher/issues/50)) ([92ac5e4](92ac5e4))
* add SafeClassWriter ([6626014](6626014))
* Add warnings for Fuzzy resolver ([715a2ad](715a2ad))
* allow classes to be overwritten in addFiles and resolve signatures when applyPatches is called ([1db735b](1db735b))
* allow custom aapt path to be specified ([8eb4a8f](8eb4a8f))
* allow custom framework path to be specified ([d3a580e](d3a580e))
* Allow unknown opcodes using `null` ([0e5f4ba](0e5f4ba))
* apply changes from ReVanced Patcher ([ba9d998](ba9d998))
* default value for `Package.versions` annotation parameter ([131dedd](131dedd))
* deprecation for patches ([80c2e80](80c2e80))
* exclusive mutable access to files ([814ce0b](814ce0b))
* feature request issue template ([1b39278](1b39278))
* Finish first patcher test ([0d8d19e](0d8d19e))
* Improve `SignatureResolver` ([139a23b](139a23b))
* improve logging ([c20dfe1](c20dfe1))
* Improve Smali Compiler ([6bfe571](6bfe571))
* improved Patch Options ([e722e3f](e722e3f))
* issue templates [skip ci] ([112bc99](112bc99))
* log failed patches due to failed dependencies ([a467fbb](a467fbb))
* logging class ([caf2745](caf2745))
* merge classes on addition ([ReVanced#127](https://github.com/bogadana/ravanched-patcher/issues/127)) ([a925650](a925650))
* migrate logger to `slf4j` ([8f66f9f](8f66f9f))
* migrate to `DexPatchBundle` and `JarPatchBundle` ([8615798](8615798))
* migrate to dexlib ([3651981](3651981))
* Minor refactor and return proxy, if class has been proxied already ([4b26305](4b26305))
* nullability for `BytecodePatch` constructor ([ReVanced#59](https://github.com/bogadana/ravanched-patcher/issues/59)) ([4ea030d](4ea030d))
* nullable parameters ([7882a8d](7882a8d))
* optional `forStaticMethod` parameter for `InlineSmaliCompiler.compileMethodInstructions` ([41e8860](41e8860))
* patch dependencies annotation and `PatcherOptions` ([6c65952](6c65952))
* patch options ([ReVanced#81](https://github.com/bogadana/ravanched-patcher/issues/81)) ([fbb09f3](fbb09f3))
* PatchOptions#nullify to nullify an option ([371f0c4](371f0c4))
* properly manage `ClassProxy` & add `ProxyBackedClassList` ([6cb1fdf](6cb1fdf))
* registry for patch options ([2431785](2431785))
* remaining mutable `EncodedValue` classes ([3f97cc8](3f97cc8))
* remove deprecated functions ([ada5a03](ada5a03))
* remove unused annotation `DirectPatternScanMethod` ([538b2a8](538b2a8))
* remove unused annotation `SincePatcher` ([4ae9ad0](4ae9ad0))
* remove unused extension `dependsOn` ([797286b](797286b))
* remove unused patch extensions ([5583904](5583904))
* return a `File` instance instead of `ExtFile` ([68174bb](68174bb))
* RwLock for opening files in `DomFileEditor` ([db4348c](db4348c))
* section `acknowledgements` for issue templates ([a0cb449](a0cb449))
* simplify adding instructions ([e47b67d](e47b67d))
* SincePatcher annotation ([25f74dc](25f74dc))
* Soft Dependencies for Patches ([8c12f8d](8c12f8d))
* sort patches in lexicographical order ([a306561](a306561)), closes [ReVanced#125](https://github.com/bogadana/ravanched-patcher/issues/125)
* streams overload for `XmlFileHolder` ([6f72c4c](6f72c4c))
* string signature ([ReVanced#22](https://github.com/bogadana/ravanched-patcher/issues/22)) ([612515a](612515a))
* use annotations instead of metadata objects ([d20f7fd](d20f7fd))
* use streams to write the dex files ([64bae88](64bae88))
* utility functions to get metadata of patch & sigs ([54511a4](54511a4))
* validator for patch options ([4e2e772](4e2e772))
* yield the patch result ([dde5385](dde5385))

### Performance Improvements

* check type instead of class ([c7ef264](c7ef264))
* decode manifest only when not using resource patcher ([4f60bea](4f60bea))
* decode resources only when necessary ([3ba4be2](3ba4be2))
* depend on `androlib` instead of `ApkDecoder` ([cc9416d](cc9416d))
* do not resolve empty signatures list ([b1eebc9](b1eebc9))
* **fingerprint:** do not resolve already resolved fingerprints ([4bfd7eb](4bfd7eb))
* lazy-ify all mutable clones ([d18a3b6](d18a3b6))
* make exception an object ([75d2be8](75d2be8))
* optimize indexOf call away ([9991f39](9991f39))
* use Set instead of List since there are no dupes ([e65ebd2](e65ebd2))
* use String List and compare instead of any lambda ([5bd416b](5bd416b))

### Reverts

* "fix: enforce aapt v1" ([dfd8a24](dfd8a24))
* AccessFlag extensions not working with IDE ([0bfb92a](0bfb92a))
* previous commits check for dupes in dexFile, not cache ([e810197](e810197))
* propagate dependencies ([365e1d7](365e1d7))
* revert breaking changes ([ReVanced#106](https://github.com/bogadana/ravanched-patcher/issues/106)) ([124332f](124332f))

### BREAKING CHANGES

* various changes in which packages classes previously where and their implementation
* These extensions do not exist anymore and any use should be removed
* The extension does not exist anymore and any use should be removed
* The annotation does not exist anymore and any use should be removed
* Imports will have to be updated from `MethodFingerprintUtils` to `MethodFingerprint.Companion`.

Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
* `MethodFingerprint` now has a field for `MethodFingerprintScanResult`. `MethodFingerprintScanResult` now holds the previous field `MethodFingerprint.patternScanResult`.

Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
* Options has been moved from Patch to a new interface called OptionsContainer and are now handled entirely different. Make sure to check the examples to understand how it works.
* Patch options now use the PatchOptions registry class instead of an Iterable. This change requires modifications to existing patches using this API.
* Not backwards compatible, since a lot of classes where renamed.
* arrayOf has to be changed to listOf.
* Method signature of Patcher#save() was changed to comply with the changes of multidexlib2.
* Removed usage of ASM library
* Array<Int> was changed to IntArray. This breaks existing patches.
* Package name was changed from "net.revanced" to "app.revanced"
* Method signature of execute() was changed to include the cache, this will break existing implementations of the Patch class.
* Patch class is now an abstract class. You must implement it. You can use anonymous implements, like done in the tests.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant