From 0c59bbb7be87de30071a2c51d2b9005c3da26ab6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 1 Feb 2025 10:23:30 +0700 Subject: [PATCH 1/9] build(deps-dev): bump the npm group with 2 updates (#2404) --- package-lock.json | 143 +++++++++++++++++++++++++++++++++++++++------- package.json | 4 +- 2 files changed, 123 insertions(+), 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index 211a8e66a3..9e75025636 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,10 +10,49 @@ "@semantic-release/changelog": "^6.0.3", "@semantic-release/exec": "^6.0.3", "@semantic-release/git": "^10.0.1", - "semantic-release": "^24.2.0", - "semantic-release-pub": "^0.9.3" + "semantic-release": "^24.2.1", + "semantic-release-pub": "^0.10.1" } }, + "node_modules/@actions/core": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.11.1.tgz", + "integrity": "sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@actions/exec": "^1.1.1", + "@actions/http-client": "^2.0.1" + } + }, + "node_modules/@actions/exec": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz", + "integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@actions/io": "^1.0.1" + } + }, + "node_modules/@actions/http-client": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz", + "integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tunnel": "^0.0.6", + "undici": "^5.25.4" + } + }, + "node_modules/@actions/io": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.3.tgz", + "integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==", + "dev": true, + "license": "MIT" + }, "node_modules/@babel/code-frame": { "version": "7.24.6", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.6.tgz", @@ -74,6 +113,16 @@ "node": ">= 14.0.0" } }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -3025,13 +3074,14 @@ } }, "node_modules/gcp-metadata": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", - "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.1.tgz", + "integrity": "sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "gaxios": "^6.0.0", + "gaxios": "^6.1.1", + "google-logging-utils": "^0.0.2", "json-bigint": "^1.0.0" }, "engines": { @@ -3179,9 +3229,9 @@ } }, "node_modules/google-auth-library": { - "version": "9.15.0", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.15.0.tgz", - "integrity": "sha512-7ccSEJFDFO7exFbO6NRyC+xH8/mZ1GZGG2xxx9iHxZWcjUjJpjWxIMw3cofAKcueZ6DATiukmmprD7yavQHOyQ==", + "version": "9.15.1", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.15.1.tgz", + "integrity": "sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3196,6 +3246,16 @@ "node": ">=14" } }, + "node_modules/google-logging-utils": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-0.0.2.tgz", + "integrity": "sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -7511,9 +7571,9 @@ } }, "node_modules/semantic-release": { - "version": "24.2.0", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-24.2.0.tgz", - "integrity": "sha512-fQfn6e/aYToRtVJYKqneFM1Rg3KP2gh3wSWtpYsLlz6uaPKlISrTzvYAFn+mYWo07F0X1Cz5ucU89AVE8X1mbg==", + "version": "24.2.1", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-24.2.1.tgz", + "integrity": "sha512-z0/3cutKNkLQ4Oy0HTi3lubnjTsdjjgOqmxdPjeYWe6lhFqUPfwslZxRHv3HDZlN4MhnZitb9SLihDkZNxOXfQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7533,7 +7593,7 @@ "git-log-parser": "^1.2.0", "hook-std": "^3.0.0", "hosted-git-info": "^8.0.0", - "import-from-esm": "^1.3.1", + "import-from-esm": "^2.0.0", "lodash-es": "^4.17.21", "marked": "^12.0.0", "marked-terminal": "^7.0.0", @@ -7555,19 +7615,21 @@ } }, "node_modules/semantic-release-pub": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/semantic-release-pub/-/semantic-release-pub-0.9.3.tgz", - "integrity": "sha512-NNrGxqaGSFDpNZ6mBR3JQ86fqobRlRFWMPKhhVMyG2daiRj2vpiNZ9P76suvgJT92zG5aQwcACkKi6oNWTvFUw==", + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/semantic-release-pub/-/semantic-release-pub-0.10.1.tgz", + "integrity": "sha512-5JSAzLWyokTcZN9b1Vfz1lz30pgM6codGqmSbOxWsWWg+eWKtB13xA7RZBayLq50q/wLctNBjsQMKFZQKNAlJQ==", "dev": true, + "license": "MIT", "dependencies": { + "@actions/core": "^1.11.1", "@semantic-release/error": "^4.0.0", "execa": "^9.5.2", - "google-auth-library": "^9.15.0", - "yaml": "^2.6.1", + "google-auth-library": "^9.15.1", + "yaml": "^2.7.0", "zod": "^3.24.1" }, "engines": { - "node": ">=22.12.0" + "node": ">=22.13.1" } }, "node_modules/semantic-release-pub/node_modules/@semantic-release/error": { @@ -7845,6 +7907,20 @@ "node": ">=18.18.0" } }, + "node_modules/semantic-release/node_modules/import-from-esm": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-from-esm/-/import-from-esm-2.0.0.tgz", + "integrity": "sha512-YVt14UZCgsX1vZQ3gKjkWVdBdHQ6eu3MPU1TBgL1H5orXe2+jWD006WCPPtOuwlQm10NuzOW5WawiF1Q9veW8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "import-meta-resolve": "^4.0.0" + }, + "engines": { + "node": ">=18.20" + } + }, "node_modules/semantic-release/node_modules/indent-string": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", @@ -8488,6 +8564,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, "node_modules/type-fest": { "version": "4.18.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.18.3.tgz", @@ -8621,6 +8707,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/undici": { + "version": "5.28.5", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.5.tgz", + "integrity": "sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, "node_modules/unicode-emoji-modifier-base": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", @@ -8860,9 +8959,9 @@ } }, "node_modules/yaml": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", - "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", "dev": true, "license": "ISC", "bin": { diff --git a/package.json b/package.json index 4cf7a5184c..fc1a62b801 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "@semantic-release/changelog": "^6.0.3", "@semantic-release/exec": "^6.0.3", "@semantic-release/git": "^10.0.1", - "semantic-release": "^24.2.0", - "semantic-release-pub": "^0.9.3" + "semantic-release": "^24.2.1", + "semantic-release-pub": "^0.10.1" } } From 3e8862ea5aec519b0fdf84158528d127bd535ffd Mon Sep 17 00:00:00 2001 From: Pun Butrach Date: Mon, 10 Feb 2025 19:34:12 +0700 Subject: [PATCH 2/9] ci: Generate release artifact provenance (#2315) --- .github/workflows/release.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4513330e57..540a931a0c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,7 +17,9 @@ jobs: release: name: Release permissions: - contents: write + id-token: write + contents: write + attestations: write runs-on: ubuntu-latest steps: - name: Checkout @@ -63,3 +65,8 @@ jobs: KEYSTORE_ENTRY_PASSWORD: ${{ secrets.KEYSTORE_ENTRY_PASSWORD }} run: | npx semantic-release + + - name: Generate artifact attestation + uses: actions/attest-build-provenance@v1 + with: + subject-path: build/app/outputs/apk/release/revanced-manager-*.apk From d3036105bbc9810c4db896196965d1d34fa47fd7 Mon Sep 17 00:00:00 2001 From: Pun Butrach Date: Tue, 11 Feb 2025 19:54:39 +0700 Subject: [PATCH 3/9] ci: Make attestation runs on every release (stable) Sometimes build will not be made due to CI Configuration --- .github/workflows/release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 540a931a0c..969f139417 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -67,6 +67,7 @@ jobs: npx semantic-release - name: Generate artifact attestation + if: github.ref == 'refs/heads/main' uses: actions/attest-build-provenance@v1 with: subject-path: build/app/outputs/apk/release/revanced-manager-*.apk From 89ad88c0ef90e233892832a92593a68e99222767 Mon Sep 17 00:00:00 2001 From: Pun Butrach Date: Fri, 14 Feb 2025 21:06:18 +0700 Subject: [PATCH 4/9] ci: Improve build pull request v3 --- .github/workflows/build_pull_request.yml | 109 ++++++++++++----------- 1 file changed, 56 insertions(+), 53 deletions(-) diff --git a/.github/workflows/build_pull_request.yml b/.github/workflows/build_pull_request.yml index a0cc8d082d..7e8423b37d 100644 --- a/.github/workflows/build_pull_request.yml +++ b/.github/workflows/build_pull_request.yml @@ -3,29 +3,42 @@ name: Build pull request on: workflow_dispatch: inputs: - # Enable or disable cache - flutter-cache: - description: Cache - type: boolean - default: true - - # Select app flavour - app-flavour: - description: App flavour + # Select pull request + pr-number: + description: PR number (Without hashtag) + required: true + # Select app flavor + app-flavor: + description: App flavor default: 'release' type: choice options: - release - debug - profile - - # Select pull request - pr-number: - description: PR number (Without hashtag) - required: true -run-name: "Build pull request ${{ inputs.pr-number }}" + # Flutter Configurations, + # it's recommended to be set when you have problem regarding with flutter itself + # For most part you do not need to change this. + + # Flutter version to use, note that the version had to exist in whether channel + # to grab + # Try using exact version or particular version on a specific branch instead of "any" + flutter-channel: + description: Flutter channel + default: 'stable' + type: choice + options: + - stable + - beta + - dev + - any + flutter-version: + description: Flutter version + default: '3.29.x' +run-name: "Build pull request ${{ inputs.pr-number }}" + jobs: build: name: Build @@ -34,35 +47,23 @@ jobs: contents: read pull-requests: write steps: - - name: Setup pull request - env: - GH_TOKEN: ${{ github.token }} - run: | - gh repo clone "${{ github.repository }}" - cd revanced-manager - gh repo set-default "${{ github.repository }}" - gh pr checkout "${{ inputs.pr-number }}" - - echo "COMMIT_HASH=$(git rev-parse --short HEAD)" >> $GITHUB_ENV - - - name: Checkout + - name: Checkout PR uses: actions/checkout@v4 with: - persist-credentials: false + ref: refs/pull/${{ inputs.pr-number }}/merge fetch-depth: 0 - - name: Cache Gradle - uses: burrunan/gradle-cache-action@v2 - - name: Setup Java - run: echo "JAVA_HOME=$JAVA_HOME_17_X64" >> $GITHUB_ENV + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '17' - name: Set up Flutter uses: subosito/flutter-action@v2 with: - channel: "stable" - flutter-version: 3.24.x - cache: ${{ inputs.flutter-cache }} + channel: ${{ inputs.flutter-channel }} + flutter-version: ${{ inputs.flutter-version }} - name: Get dependencies run: flutter pub get @@ -76,42 +77,44 @@ jobs: - name: Build continue-on-error: true id: flutter-build - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - flutter build apk --"${{ inputs.app-flavour }}"; + run: flutter build apk --${{ inputs.app-flavor }} - name: Prepare comment run: | + COMMIT_HASH=$(git rev-parse --short HEAD) if [[ "${{ steps.flutter-build.outcome }}" == "success" ]]; then - echo "MESSAGE=โœ… Succeeded build on ${{ env.COMMIT_HASH }}." >> $GITHUB_ENV + MESSAGE="โœ… Succeeded build on $COMMIT_HASH." else - echo "MESSAGE=๐Ÿšซ Failed build on ${{ env.COMMIT_HASH }}." >> $GITHUB_ENV + MESSAGE="๐Ÿšซ Failed build on $COMMIT_HASH." fi + echo "MESSAGE=$MESSAGE" >> $GITHUB_OUTPUT - name: "Comment on pull request #${{ inputs.pr-number }}" - uses: thollander/actions-comment-pull-request@v2 + uses: thollander/actions-comment-pull-request@v3 with: - GITHUB_TOKEN: ${{ github.token }} - pr_number: ${{ inputs.pr-number }} + github-token: ${{ github.token }} + pr-number: ${{ inputs.pr-number }} mode: recreate + comment-tag: execution message: | ## โš’๏ธ Build status - - ${{ env.MESSAGE }} - - Details: [${{ github.run_id }}](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})! + + ๐Ÿงช Workflow triggered by: ${{ github.actor }} + + ${{ steps.prepare-comment.outputs.MESSAGE }} + + Details: [_execution **${{ github.run_id }}** / attempt **${{ github.run_attempt }}**_](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})! ### โš™๏ธ Workflow run configuration - - Flutter cache: ${{ inputs.flutter-cache }} - - App flavor: ${{ inputs.app-flavour }} + - App flavor: ${{ inputs.app-flavor }} + - Flutter version: ${{ inputs.flutter-version }} (${{ inputs.flutter-channel }}) - - name: Upload + - name: Upload Artifact + if: steps.flutter-build.outcome == 'success' uses: actions/upload-artifact@v4 with: - if-no-files-found: error - name: revanced-manager-(${{ env.COMMIT_HASH }}-${{ inputs.pr-number }}-${{ inputs.app-flavour }}) + name: revanced-manager-(${{ steps.prepare-comment.outputs.COMMIT_HASH }}-${{ inputs.pr-number }}-${{ inputs.app-flavor }}-${{ inputs.flutter-version }}) path: | build/app/outputs/flutter-apk/app-${{ inputs.app-flavour }}.apk build/app/outputs/flutter-apk/app-${{ inputs.app-flavour }}.apk.sha1 From 5c58f624de315d73345b37cfc54c7b3657cb0744 Mon Sep 17 00:00:00 2001 From: Pun Butrach Date: Fri, 14 Feb 2025 21:20:47 +0700 Subject: [PATCH 5/9] ci: Cover before build failure and registry authentication --- .github/workflows/build_pull_request.yml | 32 ++++++++++++++++++------ 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build_pull_request.yml b/.github/workflows/build_pull_request.yml index 7e8423b37d..cea31f9cb0 100644 --- a/.github/workflows/build_pull_request.yml +++ b/.github/workflows/build_pull_request.yml @@ -12,16 +12,16 @@ on: description: App flavor default: 'release' type: choice - options: + options: - release - debug - profile - # Flutter Configurations, + # Flutter Configurations, # it's recommended to be set when you have problem regarding with flutter itself # For most part you do not need to change this. - # Flutter version to use, note that the version had to exist in whether channel + # Flutter version to use, note that the version had to exist in whether channel # to grab # Try using exact version or particular version on a specific branch instead of "any" flutter-channel: @@ -36,7 +36,7 @@ on: flutter-version: description: Flutter version default: '3.29.x' - + run-name: "Build pull request ${{ inputs.pr-number }}" jobs: @@ -66,20 +66,26 @@ jobs: flutter-version: ${{ inputs.flutter-version }} - name: Get dependencies + continue-on-error: true run: flutter pub get - name: Generate translations + continue-on-error: true run: dart run slang - name: Generate code files + continue-on-error: true run: dart run build_runner build --delete-conflicting-outputs - name: Build continue-on-error: true id: flutter-build run: flutter build apk --${{ inputs.app-flavor }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Prepare comment + id: prepare-comment # Added ID for accessing outputs run: | COMMIT_HASH=$(git rev-parse --short HEAD) if [[ "${{ steps.flutter-build.outcome }}" == "success" ]]; then @@ -105,10 +111,22 @@ jobs: Details: [_execution **${{ github.run_id }}** / attempt **${{ github.run_attempt }}**_](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})! - ### โš™๏ธ Workflow run configuration + ### โš™๏ธ Workflow Steps + + | Step | Status | + | ------------------------- | :------------------------------------------------------- | + | **Get dependencies** | ${{ steps.get-dependencies.outcome || job.status }} | + | **Generate translations** | ${{ steps.generate-translations.outcome || job.status }} | + | **Generate code files** | ${{ steps.generate-code-files.outcome || job.status }} | + | **Build** | ${{ steps.flutter-build.outcome }} | + + ### โš™๏ธ Workflow Configuration - - App flavor: ${{ inputs.app-flavor }} - - Flutter version: ${{ inputs.flutter-version }} (${{ inputs.flutter-channel }}) + | Parameter | Value | + | :--------------- | :--------------------------------------- | + | App flavor | ${{ inputs.app-flavor }} | + | Flutter version | ${{ inputs.flutter-version }} | + | Flutter channel | ${{ inputs.flutter-channel }} | - name: Upload Artifact if: steps.flutter-build.outcome == 'success' From b4e5c66f9cd96a94b6d008a629375c5c739562dd Mon Sep 17 00:00:00 2001 From: Pun Butrach Date: Fri, 14 Feb 2025 21:22:42 +0700 Subject: [PATCH 6/9] ci: Fix commit hash related issues --- .github/workflows/build_pull_request.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/build_pull_request.yml b/.github/workflows/build_pull_request.yml index cea31f9cb0..49d269c9f5 100644 --- a/.github/workflows/build_pull_request.yml +++ b/.github/workflows/build_pull_request.yml @@ -85,7 +85,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Prepare comment - id: prepare-comment # Added ID for accessing outputs + id: prepare-comment # This should work now? run: | COMMIT_HASH=$(git rev-parse --short HEAD) if [[ "${{ steps.flutter-build.outcome }}" == "success" ]]; then @@ -93,7 +93,6 @@ jobs: else MESSAGE="๐Ÿšซ Failed build on $COMMIT_HASH." fi - echo "MESSAGE=$MESSAGE" >> $GITHUB_OUTPUT - name: "Comment on pull request #${{ inputs.pr-number }}" uses: thollander/actions-comment-pull-request@v3 From 235489dcdf99508afcf7284f478d090e8cb5376c Mon Sep 17 00:00:00 2001 From: Pun Butrach Date: Fri, 14 Feb 2025 21:35:19 +0700 Subject: [PATCH 7/9] ci: Use american spelling ReVanced uses US EN spelling. --- .github/workflows/build_pull_request.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_pull_request.yml b/.github/workflows/build_pull_request.yml index 49d269c9f5..8f42bf70ef 100644 --- a/.github/workflows/build_pull_request.yml +++ b/.github/workflows/build_pull_request.yml @@ -133,5 +133,5 @@ jobs: with: name: revanced-manager-(${{ steps.prepare-comment.outputs.COMMIT_HASH }}-${{ inputs.pr-number }}-${{ inputs.app-flavor }}-${{ inputs.flutter-version }}) path: | - build/app/outputs/flutter-apk/app-${{ inputs.app-flavour }}.apk - build/app/outputs/flutter-apk/app-${{ inputs.app-flavour }}.apk.sha1 + build/app/outputs/flutter-apk/app-${{ inputs.app-flavor }}.apk + build/app/outputs/flutter-apk/app-${{ inputs.app-flavor }}.apk.sha1 From 5b6426c4531d04ed15ec426321b05087818ef30c Mon Sep 17 00:00:00 2001 From: Pun Butrach Date: Sat, 15 Feb 2025 13:54:57 +0700 Subject: [PATCH 8/9] fix: Change duplicated app suffix and allow profile variant compilation --- android/app/build.gradle.kts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 09ff84d25d..50fe0be513 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -8,7 +8,6 @@ plugins { android { namespace = "app.revanced.manager.flutter" compileSdk = 35 - ndkVersion = "27.0.12077973" compileOptions { isCoreLibraryDesugaringEnabled = true @@ -64,11 +63,11 @@ android { resValue("string", "app_name", "ReVanced Manager") } else { - applicationIdSuffix = ".debug" + applicationIdSuffix = ".development" signingConfig = signingConfigs["debug"] - resValue("string", "app_name", "ReVanced Manager (Debug signed)") + resValue("string", "app_name", "ReVanced Manager (Development)") } } @@ -77,6 +76,13 @@ android { resValue("string", "app_name", "ReVanced Manager (Debug)") } + + profile { + applicationIdSuffix = ".profile" + + resValue("string", "app_name", "ReVanced Manager (Profile)") + applicationIdSuffix = ".debug" + } } packaging { From 4b7b05ac0f822c2599c722a065191149121e79ec Mon Sep 17 00:00:00 2001 From: validcube Date: Sat, 15 Feb 2025 17:25:29 +0700 Subject: [PATCH 9/9] fix: Slight tweak and use Flutter suggested config Signed-off-by: validcube --- .github/workflows/build_pull_request.yml | 10 +-- .github/workflows/sync_crowdin.yml | 5 +- analysis_options.yaml | 1 - android/app/build.gradle.kts | 14 +--- android/gradle/libs.versions.toml | 4 +- .../gradle/wrapper/gradle-wrapper.properties | 4 +- android/settings.gradle.kts | 4 +- lib/ui/widgets/settingsView/about_widget.dart | 2 +- pubspec.lock | 74 +++++++++---------- 9 files changed, 55 insertions(+), 63 deletions(-) diff --git a/.github/workflows/build_pull_request.yml b/.github/workflows/build_pull_request.yml index 8f42bf70ef..448d2a73a0 100644 --- a/.github/workflows/build_pull_request.yml +++ b/.github/workflows/build_pull_request.yml @@ -87,7 +87,7 @@ jobs: - name: Prepare comment id: prepare-comment # This should work now? run: | - COMMIT_HASH=$(git rev-parse --short HEAD) + echo "COMMIT_HASH=$(git rev-parse --short HEAD)" >> $GITHUB_ENV if [[ "${{ steps.flutter-build.outcome }}" == "success" ]]; then MESSAGE="โœ… Succeeded build on $COMMIT_HASH." else @@ -108,12 +108,12 @@ jobs: ${{ steps.prepare-comment.outputs.MESSAGE }} - Details: [_execution **${{ github.run_id }}** / attempt **${{ github.run_attempt }}**_](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})! + Details: [_Job execution **${{ github.run_id }}** / attempt **${{ github.run_attempt }}**_](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})! ### โš™๏ธ Workflow Steps | Step | Status | - | ------------------------- | :------------------------------------------------------- | + | :------------------------ | :------------------------------------------------------- | | **Get dependencies** | ${{ steps.get-dependencies.outcome || job.status }} | | **Generate translations** | ${{ steps.generate-translations.outcome || job.status }} | | **Generate code files** | ${{ steps.generate-code-files.outcome || job.status }} | @@ -123,7 +123,7 @@ jobs: | Parameter | Value | | :--------------- | :--------------------------------------- | - | App flavor | ${{ inputs.app-flavor }} | + | App flavor | ${{ inputs.app-flavor }} | | Flutter version | ${{ inputs.flutter-version }} | | Flutter channel | ${{ inputs.flutter-channel }} | @@ -131,7 +131,7 @@ jobs: if: steps.flutter-build.outcome == 'success' uses: actions/upload-artifact@v4 with: - name: revanced-manager-(${{ steps.prepare-comment.outputs.COMMIT_HASH }}-${{ inputs.pr-number }}-${{ inputs.app-flavor }}-${{ inputs.flutter-version }}) + name: revanced-manager-(${{ env.COMMIT_HASH }}-${{ inputs.pr-number }}-${{ inputs.app-flavor }}-${{ inputs.flutter-version }}) path: | build/app/outputs/flutter-apk/app-${{ inputs.app-flavor }}.apk build/app/outputs/flutter-apk/app-${{ inputs.app-flavor }}.apk.sha1 diff --git a/.github/workflows/sync_crowdin.yml b/.github/workflows/sync_crowdin.yml index 96146c1fe2..41f3b35ca8 100644 --- a/.github/workflows/sync_crowdin.yml +++ b/.github/workflows/sync_crowdin.yml @@ -25,7 +25,6 @@ jobs: uses: subosito/flutter-action@v2 with: cache: true - flutter-version: 3.27.x - name: Sync translations from Crowdin uses: crowdin/github-action@v2 @@ -59,13 +58,13 @@ jobs: dart run slang analyze dart run slang clean dart run slang normalize + + dart run slang cd assets/i18n dart nuke.dart >> $GITHUB_STEP_SUMMARY cd ../.. - dart run slang - flutter analyze lib/gen/strings.g.dart --no-fatal-infos --no-fatal-warnings - name: Commit translations diff --git a/analysis_options.yaml b/analysis_options.yaml index f26f3dc49d..efd09a41ad 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -139,7 +139,6 @@ linter: - unnecessary_string_interpolations - unnecessary_this - unrelated_type_equality_checks - - unsafe_html - use_build_context_synchronously - use_full_hex_values_for_flutter_colors - use_function_type_syntax_for_parameters diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 50fe0be513..289feb1c3a 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -45,7 +45,7 @@ android { signingConfig = signingConfigs["debug"] - ndk.abiFilters += setOf("armeabi-v7a", "arm64-v8a", "x86_64") + ndk.abiFilters += listOf("armeabi-v7a", "arm64-v8a", "x86_64") } release { @@ -64,24 +64,20 @@ android { resValue("string", "app_name", "ReVanced Manager") } else { applicationIdSuffix = ".development" - - signingConfig = signingConfigs["debug"] - resValue("string", "app_name", "ReVanced Manager (Development)") + signingConfig = signingConfigs["debug"] } } debug { applicationIdSuffix = ".debug" - resValue("string", "app_name", "ReVanced Manager (Debug)") } - profile { + named("profile") { + initWith(getByName("debug")) applicationIdSuffix = ".profile" - resValue("string", "app_name", "ReVanced Manager (Profile)") - applicationIdSuffix = ".debug" } } @@ -97,7 +93,6 @@ android { } } - flutter { source = "../.." } @@ -107,4 +102,3 @@ dependencies { implementation(libs.revanced.patcher) implementation(libs.revanced.library) } - diff --git a/android/gradle/libs.versions.toml b/android/gradle/libs.versions.toml index 352a5400be..acac669cd5 100644 --- a/android/gradle/libs.versions.toml +++ b/android/gradle/libs.versions.toml @@ -1,7 +1,7 @@ [versions] revanced-patcher = "21.0.0" -revanced-library = "3.0.2" -desugar_jdk_libs = "2.1.3" +revanced-library = "3.1.0" +desugar_jdk_libs = "2.1.4" [libraries] revanced-patcher = { module = "app.revanced:revanced-patcher", version.ref = "revanced-patcher" } diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 2b189974c2..d71047787f 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=5b9c5eb3f9fc2c94abaea57d90bd78747ca117ddbbf96c859d3741181a12bf2a -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip +distributionSha256Sum=8d97a97984f6cbd2b85fe4c60a743440a347544bf18818048e611f5288d46c94 +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/android/settings.gradle.kts b/android/settings.gradle.kts index 3a247b837c..680cab23e3 100644 --- a/android/settings.gradle.kts +++ b/android/settings.gradle.kts @@ -17,8 +17,8 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.2" apply false - id("org.jetbrains.kotlin.android") version "2.0.20" apply false + id("com.android.application") version "8.8.0" apply false + id("org.jetbrains.kotlin.android") version "2.1.10" apply false } include(":app") diff --git a/lib/ui/widgets/settingsView/about_widget.dart b/lib/ui/widgets/settingsView/about_widget.dart index 1b087d5a1b..a3a9640466 100644 --- a/lib/ui/widgets/settingsView/about_widget.dart +++ b/lib/ui/widgets/settingsView/about_widget.dart @@ -28,7 +28,7 @@ class _AboutWidgetState extends State { ClipboardData( text: 'Version: ${snapshot.data!['version']}\n' 'Model: ${snapshot.data!['model']}\n' - 'Android Version: ${snapshot.data!['androidVersion']}\n' + 'Android version: ${snapshot.data!['androidVersion']}\n' '${snapshot.data!['supportedArch'].length > 1 ? 'Supported Archs' : 'Supported Arch'}: ${snapshot.data!['supportedArch'].join(", ")}\n', ), ); diff --git a/pubspec.lock b/pubspec.lock index e5dc9af55f..3085bc9a9a 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -42,18 +42,18 @@ packages: dependency: transitive description: name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63 url: "https://pub.dev" source: hosted - version: "2.11.0" + version: "2.12.0" boolean_selector: dependency: transitive description: name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" build: dependency: transitive description: @@ -122,10 +122,10 @@ packages: dependency: transitive description: name: characters - sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.0" checked_yaml: dependency: transitive description: @@ -138,10 +138,10 @@ packages: dependency: transitive description: name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" code_builder: dependency: transitive description: @@ -154,10 +154,10 @@ packages: dependency: "direct main" description: name: collection - sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" url: "https://pub.dev" source: hosted - version: "1.19.0" + version: "1.19.1" connectivity_plus: dependency: "direct main" description: @@ -299,10 +299,10 @@ packages: dependency: transitive description: name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc" url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.2" ffi: dependency: transitive description: @@ -599,18 +599,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" + sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec url: "https://pub.dev" source: hosted - version: "10.0.7" + version: "10.0.8" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 url: "https://pub.dev" source: hosted - version: "3.0.8" + version: "3.0.9" leak_tracker_testing: dependency: transitive description: @@ -672,10 +672,10 @@ packages: dependency: transitive description: name: matcher - sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 url: "https://pub.dev" source: hosted - version: "0.12.16+1" + version: "0.12.17" material_color_utilities: dependency: transitive description: @@ -688,10 +688,10 @@ packages: dependency: transitive description: name: meta - sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.16.0" mime: dependency: transitive description: @@ -744,10 +744,10 @@ packages: dependency: transitive description: name: path - sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.1" path_provider: dependency: "direct main" description: @@ -1072,10 +1072,10 @@ packages: dependency: transitive description: name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.10.1" sprintf: dependency: transitive description: @@ -1128,10 +1128,10 @@ packages: dependency: transitive description: name: stack_trace - sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" url: "https://pub.dev" source: hosted - version: "1.12.0" + version: "1.12.1" stacked: dependency: "direct main" description: @@ -1168,10 +1168,10 @@ packages: dependency: transitive description: name: stream_channel - sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" stream_transform: dependency: transitive description: @@ -1184,10 +1184,10 @@ packages: dependency: transitive description: name: string_scanner - sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.1" synchronized: dependency: "direct main" description: @@ -1200,18 +1200,18 @@ packages: dependency: transitive description: name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" test_api: dependency: transitive description: name: test_api - sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd url: "https://pub.dev" source: hosted - version: "0.7.3" + version: "0.7.4" timeago: dependency: "direct main" description: @@ -1336,10 +1336,10 @@ packages: dependency: transitive description: name: vm_service - sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b + sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14" url: "https://pub.dev" source: hosted - version: "14.3.0" + version: "14.3.1" wakelock_plus: dependency: "direct main" description: @@ -1429,5 +1429,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.6.0 <4.0.0" + dart: ">=3.7.0-0 <4.0.0" flutter: ">=3.24.0"