Compare commits

...

20 Commits

Author SHA1 Message Date
semantic-release-bot
e52a6ce734 chore(release): 1.19.4-dev.1 [skip ci]
## [1.19.4-dev.1](https://github.com/ReVanced/revanced-manager/compare/v1.19.3...v1.19.4-dev.1) (2024-03-17)

### Bug Fixes

* Pre-releases changelog being shown ([#1767](https://github.com/ReVanced/revanced-manager/issues/1767)) ([add49e1](add49e14fb))
2024-03-17 17:22:14 +00:00
aAbed
add49e14fb fix: Pre-releases changelog being shown (#1767) 2024-03-17 10:14:22 -07:00
Pun Butrach
ab13895196 docs(Security): Improve badges' accessibility
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
2024-03-11 15:05:40 +07:00
Pun Butrach
846afb420b ci(PR Sync): Use revanced-bot acount
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
2024-03-11 14:59:29 +07:00
Pun Butrach
dca8a1dab6 ci(Crowdin): Add workflow change to trigger event
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
2024-03-11 14:49:46 +07:00
Pun Butrach
d1c36c1bcc ci(Crowdin): Improve configuration of the workflow
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
2024-03-11 14:49:13 +07:00
semantic-release-bot
c209c32613 chore(release): 1.19.3 [skip ci]
## [1.19.3](https://github.com/ReVanced/revanced-manager/compare/v1.19.2...v1.19.3) (2024-03-09)

### Bug Fixes

* Copy APK to working directory before trying to write to it ([5cd1cba](5cd1cba668))
2024-03-09 09:16:08 +00:00
oSumAtrIX
9e5e89ac95 chore: Merge branch dev to main (#1756) 2024-03-09 10:09:13 +01:00
semantic-release-bot
7cc6b88e4e chore(release): 1.19.3-dev.1 [skip ci]
## [1.19.3-dev.1](https://github.com/ReVanced/revanced-manager/compare/v1.19.2...v1.19.3-dev.1) (2024-03-09)

### Bug Fixes

* Copy APK to working directory before trying to write to it ([5cd1cba](5cd1cba668))
2024-03-09 09:09:02 +00:00
oSumAtrIX
5cd1cba668 fix: Copy APK to working directory before trying to write to it 2024-03-09 10:01:36 +01:00
oSumAtrIX
ca365bac6e build: Bump dependencies to fix generating keystore 2024-03-09 09:58:41 +01:00
semantic-release-bot
f1fc48ce5a chore(release): 1.19.2 [skip ci]
## [1.19.2](https://github.com/ReVanced/revanced-manager/compare/v1.19.1...v1.19.2) (2024-03-09)

### Bug Fixes

* App list is empty if all apps are installed ([#1750](https://github.com/ReVanced/revanced-manager/issues/1750)) ([1f5461f](1f5461fbe5))
* Fix white-screen when trying to install conflicting apps ([4acd738](4acd738353))
2024-03-09 03:55:35 +00:00
oSumAtrIX
316e440d0d chore: Merge branch dev to main (#1739) 2024-03-09 04:48:12 +01:00
oSumAtrIX
95018814a7 ci: Bump dependencies to fix release workflow 2024-03-09 04:44:38 +01:00
oSumAtrIX
b52e49d90a build: Bump dependencies to fix signing issues 2024-03-09 04:39:58 +01:00
oSumAtrIX
4acd738353 fix: Fix white-screen when trying to install conflicting apps
When you tried to install a patched app, but it conflicted with an existing installation, the screen would go blank. This was caused by trying to use an argument on a translation with no arguments.
2024-03-09 04:39:58 +01:00
semantic-release-bot
982249f974 chore(release): 1.19.2-dev.1 [skip ci]
## [1.19.2-dev.1](https://github.com/ReVanced/revanced-manager/compare/v1.19.1...v1.19.2-dev.1) (2024-03-08)

### Bug Fixes

* App list is empty if all apps are installed ([#1750](https://github.com/ReVanced/revanced-manager/issues/1750)) ([1f5461f](1f5461fbe5))
2024-03-08 14:49:35 +00:00
Nikita
1f5461fbe5 fix: App list is empty if all apps are installed (#1750)
Co-authored-by: Nikita <n.petrjakov@niitp.in>
2024-03-08 21:41:16 +07:00
oSumAtrIX
adb7e5663a docs: Fix small mistakes [skip ci] 2024-03-05 14:58:11 +01:00
Benjamin
ffc14f2146 chore: Upgrade dependencies (#1734) 2024-03-05 14:09:02 +07:00
16 changed files with 67 additions and 55 deletions

View File

@@ -107,7 +107,7 @@ jobs:
- App flavor: ${{ inputs.app-flavour }} - App flavor: ${{ inputs.app-flavour }}
- name: Upload - name: Upload
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v4
with: with:
if-no-files-found: error if-no-files-found: error
name: revanced-manager-(${{ env.COMMIT_HASH }}-${{ inputs.pr-number }}-${{ inputs.app-flavour }}) name: revanced-manager-(${{ env.COMMIT_HASH }}-${{ inputs.pr-number }}-${{ inputs.app-flavour }})

View File

@@ -25,3 +25,4 @@ jobs:
pr_body: | pr_body: |
This pull request will ${{ env.MESSAGE }}. This pull request will ${{ env.MESSAGE }}.
pr_draft: true pr_draft: true
github_token: ${{ secrets.REPOSITORY_PUSH_ACCESS }}

View File

@@ -2,9 +2,13 @@ name: Sync Crowdin
on: on:
workflow_dispatch: workflow_dispatch:
schedule:
- cron: 00 12 * * 1
push: push:
branches: paths:
- dev - assets/i18n/*.json
- assets/i18n/*.dart
- .github/workflows/sync_crowdin.yml
jobs: jobs:
sync: sync:
@@ -16,7 +20,7 @@ jobs:
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Set up Dart - name: Setup Dart
uses: dart-lang/setup-dart@v1 uses: dart-lang/setup-dart@v1
- name: Sync translations from Crowdin - name: Sync translations from Crowdin
@@ -32,15 +36,17 @@ jobs:
pull_request_body: "Sync translations from [crowdin.com/project/revanced](https://crowdin.com/project/revanced)" pull_request_body: "Sync translations from [crowdin.com/project/revanced](https://crowdin.com/project/revanced)"
pull_request_base_branch_name: "dev" pull_request_base_branch_name: "dev"
commit_message: "chore: Sync translations" commit_message: "chore: Sync translations"
github_user_name: revanced-bot
github_user_email: github@revanced.app
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.REPOSITORY_PUSH_ACCESS }}
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
- name: Remove empty values from JSON - name: Remove empty values from JSON
run: | run: |
cd assets/i18n cd assets/i18n
sudo chmod 777 * sudo chmod 777 *.json
dart nuke.dart >> $GITHUB_STEP_SUMMARY dart nuke.dart >> $GITHUB_STEP_SUMMARY
- name: Commit translations - name: Commit translations
@@ -51,5 +57,3 @@ jobs:
git add assets/i18n/*.json git add assets/i18n/*.json
git commit -m "chore: Remove empty values from JSON" assets/i18n/*.json git commit -m "chore: Remove empty values from JSON" assets/i18n/*.json
git push origin HEAD:feat/translations git push origin HEAD:feat/translations
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -11,7 +11,7 @@ jobs:
name: Dispatch event to documentation repository name: Dispatch event to documentation repository
if: github.ref == 'refs/heads/main' if: github.ref == 'refs/heads/main'
steps: steps:
- uses: peter-evans/repository-dispatch@v2 - uses: peter-evans/repository-dispatch@v3
with: with:
token: ${{ secrets.DOCUMENTATION_REPO_ACCESS_TOKEN }} token: ${{ secrets.DOCUMENTATION_REPO_ACCESS_TOKEN }}
repository: revanced/revanced-documentation repository: revanced/revanced-documentation

View File

@@ -70,8 +70,8 @@ If a vulnerability is confirmed and accepted, you can join our [Discord](https:/
### ⏳ Supported Versions ### ⏳ Supported Versions
| Version | Branch | Supported | | Version | Branch | Supported |
| -------------------------------------------------------------------------------------------------------- | ----------- | ------------------ | | --------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ------------------ |
| ![GitHub Release](https://img.shields.io/github/v/release/ReVanced/revanced-manager?style=for-the-badge) | main | :white_check_mark: | | ![Latest stable release](https://img.shields.io/github/v/release/ReVanced/revanced-manager?style=for-the-badge "Latest stable release") | main | :white_check_mark: |
| ![Static Badge](https://img.shields.io/badge/version-latest-brightgreen?style=for-the-badge) | dev | :white_check_mark: | | ![Latest version](https://img.shields.io/badge/version-latest-brightgreen?style=for-the-badge "Latest version") | dev | :white_check_mark: |
| ![Static Badge](https://img.shields.io/badge/version-latest-brightgreen?style=for-the-badge) | compose-dev | :white_check_mark: | | ![Latest version](https://img.shields.io/badge/version-latest-brightgreen?style=for-the-badge "Latest version") | compose-dev | :white_check_mark: |

View File

@@ -113,9 +113,8 @@ flutter {
} }
dependencies { dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.22" implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.22")
// ReVanced implementation("app.revanced:revanced-patcher:19.3.1")
implementation "app.revanced:revanced-patcher:19.3.1" implementation("app.revanced:revanced-library:2.2.1")
implementation "app.revanced:revanced-library:2.1.0"
} }

View File

@@ -9,7 +9,6 @@ import android.os.Handler
import android.os.Looper import android.os.Looper
import app.revanced.library.ApkUtils import app.revanced.library.ApkUtils
import app.revanced.library.ApkUtils.applyTo import app.revanced.library.ApkUtils.applyTo
import app.revanced.library.ApkUtils.sign
import app.revanced.manager.flutter.utils.Aapt import app.revanced.manager.flutter.utils.Aapt
import app.revanced.manager.flutter.utils.packageInstaller.InstallerReceiver import app.revanced.manager.flutter.utils.packageInstaller.InstallerReceiver
import app.revanced.manager.flutter.utils.packageInstaller.UninstallerReceiver import app.revanced.manager.flutter.utils.packageInstaller.UninstallerReceiver
@@ -339,16 +338,15 @@ class MainActivity : FlutterActivity() {
patcher.get() patcher.get()
} }
inFile.copyTo(outFile) if (cancel(patcher::close)) return@Thread
patcherResult.applyTo(inFile)
if (cancel(patcher::close)) return@Thread if (cancel(patcher::close)) return@Thread
patcherResult.applyTo(outFile) ApkUtils.sign(
inFile,
if (cancel(patcher::close)) return@Thread outFile,
updateProgress(0.8, "Signing...", "")
outFile.sign(
ApkUtils.SigningOptions( ApkUtils.SigningOptions(
keyStoreFile, keyStoreFile,
keystorePassword, keystorePassword,

View File

@@ -9,32 +9,32 @@ Learn how to configure ReVanced Manager.
By default, you can not change the patch selection and the default selection is used. Enabling this will allow you to change the patch selection. By default, you can not change the patch selection and the default selection is used. Enabling this will allow you to change the patch selection.
> ⚠️ Warning > ⚠️ Warning
> Changing the selection may cause cause unexpected issues. Unless you know what you are doing, it is recommended to keep this disabled. > Changing the selection may cause unexpected issues. Unless you know what you are doing, it is recommended to keep this disabled.
- ### 📦 Require suggested app version - ### 📦 Require suggested app version
By default, ReVanced Manager allows you to patch an app if the suggested version to patch matches the app you selected. Disabling this will allow you to patch an app even if the suggested version does not match the app you selected. By default, ReVanced Manager allows you to patch an app if the suggested version to patch matches the version of the app you selected. Disabling this will allow you to patch an app even if the suggested version does not match the version of the app you selected.
> ⚠️ Warning > ⚠️ Warning
> Patches are more likely to fail on versions that are not suggested by ReVanced Manager. Unless you know what you are doing, it is recommended to keep this enabled. > Patches are more likely to fail on versions that are not suggested by ReVanced Manager. Unless you know what you are doing, it is recommended to keep this enabled.
- ### ✅ Version compatibility check - ### ✅ Version compatibility check
By default, ReVanced Manager allows you to select patches that are not compatible with the version of the app you selected. Disabling this will allow you to select patches that are not compatible with the app version you selected. By default, ReVanced Manager does not allow you to select patches that are not compatible with the version of the app you selected. Disabling this will allow you to select patches that are not compatible with the version of the app you selected.
> ⚠️ Warning > ⚠️ Warning
> Patches are more likely to fail on versions they are not compatible with. Unless you know what you are doing, it is recommended to keep this enabled. > Patches are more likely to fail on versions they are not compatible with. Unless you know what you are doing, it is recommended to keep this enabled.
- ### 🧑‍🔬 Show universal patches - ### 🧑‍🔬 Show universal patches
By default, ReVanced Manager only shows patches that are compatible with specifc apps. Enabling this will show patches that are intended to work on all apps. By default, ReVanced Manager only shows patches that are compatible with specific apps. Enabling this will show patches that are intended to work on all apps.
> ⚠️ Warning > ⚠️ Warning
> Patches that are intended to work on all apps may not work on all apps. Unless you know what you are doing, it is recommended to keep this disabled. > Patches that are intended to may not work on all apps. Unless you know what you are doing, it is recommended to keep this disabled.
- ### 🔗 API URL - ### 🔗 API URL
Configure the API URL to use. The API is used to download updates and patches. Configure the API URL to use. The API is used to download patches and updates.
- ### 🧬 Use alternative source - ### 🧬 Use alternative source

View File

@@ -85,6 +85,9 @@ class GithubAPI {
updates++; updates++;
} }
for (int i = 1; i < updates; i++) { for (int i = 1; i < updates; i++) {
if (response.data[i]['prerelease']) {
continue;
}
releases.update( releases.update(
'body', 'body',
(value) => (value) =>

View File

@@ -171,7 +171,10 @@ class PatcherAPI {
if (integrationsFile != null) { if (integrationsFile != null) {
_dataDir.createSync(); _dataDir.createSync();
_tmpDir.createSync(); _tmpDir.createSync();
final Directory workDir = _tmpDir.createTempSync('tmp-'); final Directory workDir = await _tmpDir.createTemp('tmp-');
final File inApkFile = File('${workDir.path}/in.apk');
await File(apkFilePath).copy(inApkFile.path);
outFile = File('${workDir.path}/out.apk'); outFile = File('${workDir.path}/out.apk');
@@ -182,7 +185,7 @@ class PatcherAPI {
await patcherChannel.invokeMethod( await patcherChannel.invokeMethod(
'runPatcher', 'runPatcher',
{ {
'inFilePath': apkFilePath, 'inFilePath': inApkFile.path,
'outFilePath': outFile!.path, 'outFilePath': outFile!.path,
'integrationsPath': integrationsFile.path, 'integrationsPath': integrationsFile.path,
'selectedPatches': selectedPatches.map((p) => p.name).toList(), 'selectedPatches': selectedPatches.map((p) => p.name).toList(),
@@ -297,6 +300,18 @@ class PatcherAPI {
); );
bool cleanInstall = false; bool cleanInstall = false;
final bool isFixable = statusCode == 4 || statusCode == 5; final bool isFixable = statusCode == 4 || statusCode == 5;
var description = t['installErrorDialog.${statusValue}_description'];
if (statusCode == 2) {
description = description(
packageName: statusCode == 2
? {
'packageName': status['otherPackageName'],
}
: null,
);
}
await showDialog( await showDialog(
context: _managerAPI.ctx!, context: _managerAPI.ctx!,
builder: (context) => AlertDialog( builder: (context) => AlertDialog(
@@ -306,15 +321,7 @@ class PatcherAPI {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Text( Text(description),
t['installErrorDialog.${statusValue}_description'](
packageName: statusCode == 2
? {
'packageName': status['otherPackageName'],
}
: null,
),
),
], ],
), ),
actions: (status == null) actions: (status == null)

View File

@@ -78,7 +78,7 @@ class _AppSelectorViewState extends State<AppSelectorView> {
), ),
), ),
) )
: model.allApps.isEmpty : model.allApps.isEmpty && model.apps.isEmpty
? const AppSkeletonLoader() ? const AppSkeletonLoader()
: Padding( : Padding(
padding: const EdgeInsets.symmetric(horizontal: 12.0) padding: const EdgeInsets.symmetric(horizontal: 12.0)

View File

@@ -54,7 +54,7 @@ class AppSelectorViewModel extends BaseViewModel {
.toSet() .toSet()
.where((name) => !apps.any((app) => app.packageName == name)) .where((name) => !apps.any((app) => app.packageName == name))
.toList(); .toList();
noApps = allApps.isEmpty; noApps = allApps.isEmpty && apps.isEmpty;
return allApps; return allApps;
} }

8
package-lock.json generated
View File

@@ -5,7 +5,7 @@
"packages": { "packages": {
"": { "": {
"devDependencies": { "devDependencies": {
"@droidsolutions-oss/semantic-release-update-file": "^1.3.2", "@droidsolutions-oss/semantic-release-update-file": "^1.4.0-beta.1",
"@saithodev/semantic-release-backmerge": "^4.0.1", "@saithodev/semantic-release-backmerge": "^4.0.1",
"@semantic-release/changelog": "^6.0.3", "@semantic-release/changelog": "^6.0.3",
"@semantic-release/exec": "^6.0.3", "@semantic-release/exec": "^6.0.3",
@@ -60,9 +60,9 @@
} }
}, },
"node_modules/@droidsolutions-oss/semantic-release-update-file": { "node_modules/@droidsolutions-oss/semantic-release-update-file": {
"version": "1.3.2", "version": "1.4.0-beta.1",
"resolved": "https://registry.npmjs.org/@droidsolutions-oss/semantic-release-update-file/-/semantic-release-update-file-1.3.2.tgz", "resolved": "https://registry.npmjs.org/@droidsolutions-oss/semantic-release-update-file/-/semantic-release-update-file-1.4.0-beta.1.tgz",
"integrity": "sha512-ahV0OWiEUf20e7lLH3gnBLF1SfRNPN99MeaLVaFX6jT3DegTLzkVPeY2CZWa+K4tAXBALc29Bq/kzjv8PAXFGw==", "integrity": "sha512-CdqG3vIceWFBmwz0qcY0NdqaE+TGNuhhbgFXHIj/M1fYAD1lQ4QyGEaoD3d4F4ZHYsBqR0HrHNMTG4bycBRKNw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"aggregate-error": "^3.1.0", "aggregate-error": "^3.1.0",

View File

@@ -1,6 +1,6 @@
{ {
"devDependencies": { "devDependencies": {
"@droidsolutions-oss/semantic-release-update-file": "^1.3.2", "@droidsolutions-oss/semantic-release-update-file": "^1.4.0-beta.1",
"@saithodev/semantic-release-backmerge": "^4.0.1", "@saithodev/semantic-release-backmerge": "^4.0.1",
"@semantic-release/changelog": "^6.0.3", "@semantic-release/changelog": "^6.0.3",
"@semantic-release/exec": "^6.0.3", "@semantic-release/exec": "^6.0.3",

View File

@@ -459,10 +459,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: google_fonts name: google_fonts
sha256: "5b1726fee554d1cc9db1baef8061b126567ff0a1140a03ed7de936e62f2ab98b" sha256: b1ac0fe2832c9cc95e5e88b57d627c5e68c223b9657f4b96e1487aa9098c7b82
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "6.2.0" version: "6.2.1"
graphs: graphs:
dependency: transitive dependency: transitive
description: description:
@@ -1361,4 +1361,4 @@ packages:
version: "3.1.2" version: "3.1.2"
sdks: sdks:
dart: ">=3.3.0 <4.0.0" dart: ">=3.3.0 <4.0.0"
flutter: ">=3.19.0" flutter: ">=3.19.2"

View File

@@ -4,7 +4,7 @@ homepage: https://github.com/ReVanced/revanced-manager
publish_to: 'none' publish_to: 'none'
version: 1.19.1+101800002 version: 1.19.4-dev.1+101800007
environment: environment:
sdk: '>=3.0.0 <4.0.0' sdk: '>=3.0.0 <4.0.0'
@@ -37,7 +37,7 @@ dependencies:
flutter_markdown: ^0.6.14 flutter_markdown: ^0.6.14
fluttertoast: ^8.2.4 fluttertoast: ^8.2.4
font_awesome_flutter: ^10.4.0 font_awesome_flutter: ^10.4.0
google_fonts: ^6.1.0 google_fonts: ^6.2.1
injectable: ^2.1.1 injectable: ^2.1.1
intl: ^0.18.0 intl: ^0.18.0
json_annotation: ^4.8.1 json_annotation: ^4.8.1