Compare commits

151 Commits
v2.1 ... v2.7

Author SHA1 Message Date
KOWX712
a2b2da27f8 v2.7 release 2024-12-07 17:59:57 +08:00
KOWX712
b3282816cb handle tmpdir in Magisk 2024-12-07 17:47:40 +08:00
KOWX712
15f975ee67 increase prompt priority 2024-12-07 17:33:59 +08:00
KOWX712
11d3b34657 remove residue changing from invisible to visible 2024-12-07 17:28:08 +08:00
KOWX712
ad905cb6e0 fix invisible ksu residue 2024-12-07 17:02:42 +08:00
KOWX712
5b966f5626 fix visible broken logic 2024-12-07 16:40:14 +08:00
KOWX712
c500e7476a Update customize.sh 2024-12-07 16:32:13 +08:00
KOWX712
1b2a1701f4 Invisible module update method, more
New update card for invisible module, refine module visibility logic (better adapt with MMRL). Add active class.
2024-12-07 16:10:13 +08:00
KOWX712
4563a3399d Update A-translate.md 2024-12-07 03:47:22 +08:00
KOWX712
873354b11c Adapt with MMRL 2024-12-07 03:47:15 +08:00
KOWX712
3d8ca67a6a Update more-excldue.json 2024-12-06 12:22:20 +08:00
KOWX712
f13e4ecca5 Update install_func.sh 2024-12-05 11:15:02 +08:00
KOWX712
878a5faacf Simplify the translation process 2024-12-05 01:27:40 +08:00
KOWX712
504918a289 Fix some possible issue may happen in future 2024-12-05 01:24:53 +08:00
KOWX712
6f9d4482a7 Update .extra 2024-12-05 00:39:25 +08:00
KOWX712
765444fcd5 Update .extra 2024-12-04 21:18:57 +08:00
KOWX712
7905ebcca5 Merge branch 'main' of https://github.com/KOWX712/Tricky-Addon-Update-Target-List 2024-12-04 10:33:56 +08:00
KOWX712
030f48f8ce Update .extra 2024-12-04 10:33:48 +08:00
KOWX712
27b932ed82 Update README.md 2024-12-04 02:36:49 +08:00
KOWX712
d839e3ea4d Update .extra 2024-12-04 01:12:51 +08:00
KOWX712
119e0aa2cf Cleanup, rearrange code 2024-12-03 22:03:30 +08:00
KOWX712
d17ca1d7ef prevent mistouch 2024-12-03 21:10:52 +08:00
KOWX712
3f5832608e add missing folder 2024-12-03 20:19:46 +08:00
KOWX712
b06ffda6bf Remove module if tricky store uninstalled 2024-12-03 19:59:04 +08:00
KOWX712
8f6dc6523d adjust again 2024-12-03 19:37:10 +08:00
KOWX712
552758a01f Update README.md 2024-12-03 19:14:08 +08:00
KOWX712
6a21702f25 slightly adjust ui on large screen display 2024-12-03 19:13:36 +08:00
KOWX712
31a229e52b save button style 2024-12-03 02:24:15 +08:00
KOWX712
c7fa970158 add manually run workflow 2024-12-03 02:22:59 +08:00
KOWX712
9e569421cd Update README.md 2024-12-03 01:19:59 +08:00
KOWX712
13f020ebd0 test canary 2024-12-03 01:00:24 +08:00
KOWX712
f1ca044c4f merge workflow 2024-12-03 00:59:11 +08:00
KOWX712
227cbeeb5b Revert "change path"
This reverts commit ba2e699ca5.
2024-12-03 00:58:29 +08:00
KOWX712
951ae11bcd add prerelease detect 2024-12-02 21:00:16 +08:00
KOWX712
410576094a Update .extra 2024-12-02 19:28:36 +08:00
KOWX712
20747caa66 Update README.md 2024-12-02 16:38:18 +08:00
KOWX712
879735e33a Update README.md 2024-12-02 16:13:10 +08:00
KOWX712
a44941d482 Wait for next 2024-12-02 14:16:29 +08:00
KOWX712
3504ec15ce fix typo 2024-12-02 00:37:41 +08:00
KOWX712
ba2e699ca5 change path 2024-12-02 00:24:56 +08:00
KOWX712
785250d748 update translation 2024-12-02 00:12:53 +08:00
KOWX712
b227ad990c Update changelog.md 2024-12-01 23:52:14 +08:00
KOWX712
cb2d8c0192 Update README.md 2024-12-01 23:49:34 +08:00
KOWX712
f12fe49d17 Update README.md 2024-12-01 23:47:54 +08:00
KOWX712
a0b0c5ca15 webui: improve ui 2024-12-01 22:58:39 +08:00
KOWX712
69198fa458 translation: update string 2024-12-01 22:58:16 +08:00
KOWX712
2198313a4a cleanup: abandon UpdateTargetList.sh 2024-12-01 22:57:55 +08:00
KOWX712
85998d76fe service: abandon UpdateTargetList.sh 2024-12-01 22:57:45 +08:00
KOWX712
a399c4a69a action: abandon UpdateTargetList.sh 2024-12-01 22:57:34 +08:00
KOWX712
18e3048028 installation: abandon UpdateTargetList.sh 2024-12-01 22:57:22 +08:00
KOWX712
9b5293f7b0 webui: abandon UpdateTargetList.sh 2024-12-01 22:56:44 +08:00
KOWX712
375af46292 Update canary.yml 2024-12-01 17:25:21 +08:00
KOWX712
017491b652 Squashed commit of the following:
commit 1562a97de621efe514274962826bc2601f694441
Author: KOWX712 <leecc0503@gmail.com>
Date:   Sun Dec 1 00:02:36 2024 +0800

    update translation guide
2024-12-01 00:03:47 +08:00
KOWX712
aea3e9fff3 push v2.6 2024-11-30 21:10:12 +08:00
KOWX712
84b7bd9f4e release v2.6 2024-11-30 21:08:04 +08:00
KOWX712
9fa022bad6 workflow fix 4 2024-11-30 21:06:46 +08:00
KOWX712
ec024a2936 workflow fix 3 2024-11-30 21:02:45 +08:00
KOWX712
72d505dec5 fix release workflow 2024-11-30 20:58:48 +08:00
KOWX712
0e06ea4902 Update module.prop 2024-11-30 20:53:26 +08:00
KOWX712
45657574d2 test run workflow 2024-11-30 20:51:41 +08:00
KOWX712
315f254123 fix multiple zip 2024-11-30 20:51:14 +08:00
KOWX712
4772755965 workflow test 2024-11-30 20:48:45 +08:00
KOWX712
18968a4fcb fix workflow 2 2024-11-30 20:42:16 +08:00
KOWX712
457c771cfa fix workflow 2024-11-30 20:37:12 +08:00
KOWX712
c5804fabdc revert 2024-11-30 20:33:11 +08:00
KOWX712
60ae2e42f9 limit to module folder only 2024-11-30 20:24:40 +08:00
KOWX712
04394ca65d Update README.md 2024-11-30 20:18:34 +08:00
KOWX712
3f8ef22b83 Update update.json 2024-11-30 20:16:43 +08:00
KOWX712
71e6d7ec8b Update module.prop 2024-11-30 20:14:50 +08:00
KOWX712
01300c9524 Update changelog.md 2024-11-30 20:14:08 +08:00
KOWX712
8747df3969 v2.6 changelog 2024-11-30 20:12:18 +08:00
KOWX712
792e5a15a1 push v2.6 stable 2024-11-30 20:12:09 +08:00
KOWX712
df7167dc55 workflow test 2024-11-30 20:09:11 +08:00
KOWX712
ffa0aa461d migrate to main 2024-11-30 04:08:19 +08:00
KOWX712
3926980b28 Update README.md 2024-11-30 03:57:56 +08:00
KOWX712
a92928838b Update README.md 2024-11-28 19:19:20 +08:00
KOWX712
fd837d41e8 beta3 2024-11-28 19:17:50 +08:00
KOWX712
ce2164b6c2 add back missing string 2024-11-28 18:46:40 +08:00
KOWX712
1c1333d0c8 Update A-translate.md 2024-11-28 18:35:19 +08:00
KOWX712
561de52bf7 fix typo 2024-11-28 18:31:44 +08:00
KOWX712
6fe8d30ccf Update translate template 2024-11-28 18:29:43 +08:00
KOWX712
101bb6abd0 update prompt
translation update
2024-11-28 18:15:08 +08:00
KOWX712
b7341c80bc support for invisible module update function 2024-11-28 18:03:26 +08:00
KOWX712
5460a2fa5d Add update method for invisible module
optimize uninstall process
2024-11-28 18:02:56 +08:00
KOWX712
d6d890ef10 make invisible module optional
add choices for invisible module on installation
2024-11-28 18:01:49 +08:00
KOWX712
8801513684 Update uninstall.sh
logic change
2024-11-27 21:21:07 +08:00
KOWX712
db6e591010 Fix WebUI standalone app freeze in Magisk 2024-11-27 21:20:41 +08:00
KOWX712
ad5e2ca551 Fix prompt animation missing
fix prompt bounce out animation missing
2024-11-27 21:14:20 +08:00
KOWX712
7f431f13f3 fix 2024-11-26 23:51:31 +08:00
KOWX712
ed379dfde5 found 2024-11-26 22:33:02 +08:00
KOWX712
3dd007882b wait for next 2024-11-26 22:16:20 +08:00
KOWX712
0607f2d223 Header UI adjust 2024-11-26 01:41:09 +08:00
KOWX712
6a5fb6c717 hotfix 2024-11-26 01:00:47 +08:00
KOWX712
6561ea861b Update changelog.md 2024-11-26 00:51:42 +08:00
KOWX712
f4085f8cf0 Invisible + UI fix
integrate module action.sh and WebUI into tricky store, module now is not visible root manager, Thanks for ideaa from @backslashxx . Add uninstall button in the bottom of WebUI. Fix some UI bug.
2024-11-26 00:42:57 +08:00
KOWX712
336efb8d3e Minor ui fix 2024-11-24 23:01:29 +08:00
KOWX712
9e57c81a66 Update changelog.md
Fix syntax error
2024-11-24 22:43:16 +08:00
KOWX712
cfa17eea26 v2.6-beta.1 pre-release 2024-11-24 22:36:45 +08:00
KOWX712
dbed7f9f90 Fix an issue that may happen in Apatch
and update translation guide
2024-11-24 22:25:27 +08:00
KOWX712
5352e8604e Add translation guide and translation template 2024-11-24 21:47:48 +08:00
KOWX712
ff18585543 Initial support for multiple language, add save boot hash in WebUI
Language available: en-US, ru-RU, tl-PH, zh-CN, zh-TW. Add feature to save verifiedBootHash in WebUI
2024-11-24 21:46:49 +08:00
KOWX712
b50e9aa086 Optimize loading time x2
Reduce load time by preload skiplist in service.sh.
2024-11-24 20:33:09 +08:00
KOWX712
213c4a2f13 Optimize + set verified boot hash in WebUI
Reduce load time by preload applist in service.sh. New function in WebUI: set verified boot hash in WebUI
2024-11-23 21:22:23 +08:00
KOWX712
f4860d1a00 Improve xposed detection logic
Detect Xposed module from AndroidMainfest.xml instead of relying on LSPosed module repository since not all Xposed module will available in the repo.
2024-11-22 17:02:30 +08:00
KOWX712
e192fcc916 v2.5 2024-11-22 00:23:08 +08:00
KOWX712
7a2c87b365 minor ui change x2 2024-11-22 00:15:51 +08:00
KOWX712
a1f4d8fc72 minor layout change 2024-11-21 23:51:26 +08:00
KOWX712
7f7c124b25 Add more detail x2 2024-11-21 23:24:38 +08:00
KOWX712
90696c5c5d Update update.json 2024-11-21 23:09:01 +08:00
KOWX712
9cbb73bab0 Add more detail
Add more detail in help menu and clarity keybox operation prompt.
2024-11-21 23:04:38 +08:00
KOWX712
d9eb97cb3c fix webui installation skip
Magisk action.sh: On next installation, prompt webui again if rejected.
2024-11-21 23:04:13 +08:00
KOWX712
e848da327b change kb logic 2024-11-20 15:05:37 +08:00
KOWX712
67581ae941 Update .extra 2024-11-20 13:56:15 +08:00
KOWX712
91dea027ce Create .extra 2024-11-20 13:40:27 +08:00
KOWX712
5806ab16d7 v2.4 2024-11-20 00:52:21 +08:00
KOWX712
0736f4ea38 Add app name display
try to display app name in webui
2024-11-20 00:44:28 +08:00
KOWX712
ff8a768a00 Add aapt bianry
prepare for app name feature
2024-11-19 23:26:27 +08:00
KOWX712
af3f8b88c0 Update changelog.md 2024-11-18 22:02:31 +08:00
KOWX712
40f1e8d69e v2.3 2024-11-18 21:59:17 +08:00
KOWX712
82d803c2db v2.3 2024-11-18 21:37:46 +08:00
KOWX712
68158796dc v2.3
update boot_hash path
2024-11-18 21:17:23 +08:00
KOWX712
3015fd44ba finalize 2024-11-18 21:04:30 +08:00
KOWX712
605a4c8c90 Update more-excldue.json 2024-11-18 20:59:09 +08:00
KOWX712
439ae0332a Update UpdateTargetList.sh 2024-11-18 20:54:28 +08:00
KOWX712
6f7108543f cleanup residue
cleanup residue during remove module
2024-11-18 20:33:37 +08:00
KOWX712
596c92ba18 Read app from DenlyList
For Magisk only
2024-11-18 20:19:40 +08:00
KOWX712
1f3c1e960a Migrate boot hash to /data/adb
prevent ksu/apatch overwrite
2024-11-18 18:56:07 +08:00
KOWX712
383a7eeb5f Update action button
Abandon action.sh in KernelSU and Apatch. Magisk: redirect to WebUI with action button if installed KSU WebUI. Add KSU WebUI standalone automated installation script (optional).
2024-11-18 18:36:51 +08:00
KOWX712
2e71b6512b Update more-excldue.json 2024-11-17 00:14:21 +08:00
KOWX712
bcfb8c12ad remove curl binary
use busybox wget binary instead of curl binary to fetch exclude-list
2024-11-14 21:44:31 +08:00
KOWX712
e9346303ac prevent tspa overwrite 2024-11-14 21:37:32 +08:00
KOWX712
cc77b95f5c v2.2 2024-11-13 01:18:25 +08:00
KOWX712
685a6b89ef v2.2
update description, changelog and version code
2024-11-13 00:34:17 +08:00
KOWX712
face2fe644 ui change
no connection prompt, help menu overlay transition. Better readability installation script.
2024-11-13 00:15:38 +08:00
KOWX712
584ad2f2df spacing format 2024-11-10 01:22:32 +08:00
KOWX712
47e383bf69 Update more-excldue.json
add link
2024-11-10 01:19:29 +08:00
KOWX712
a02ed06557 Update index.js
Better unsuccessful prompt
2024-11-10 01:06:55 +08:00
KOWX712
eb8666f79e Update more-excldue.json 2024-11-10 00:57:01 +08:00
KOWX712
9883922927 Add help menu 2024-11-10 00:50:06 +08:00
KOWX712
fcfa723052 better logic
now can show app that excluded by keyword as deselected.
2024-11-09 03:22:48 +08:00
KOWX712
c347392792 fix typo 2024-11-09 02:53:58 +08:00
KOWX712
cfa795034e exclude more than only xposed
added option to exclude more root related app other than xposed module
2024-11-09 02:40:25 +08:00
KOWX712
d16611ddc1 minor UI enhance, new exclude list
introduce new exclude list to exclude unnecessary app from tricky store target.
2024-11-09 02:15:03 +08:00
KOWX712
b1f75d012e Create more-excldue.json
for more exclude package name
2024-11-08 02:10:31 +08:00
KOWX712
3f19e0bee5 Update README.md 2024-11-08 01:34:02 +08:00
KOWX712
bd38e1a615 Update README.md 2024-11-08 01:33:35 +08:00
KOWX712
bfb4c3293e Merge branch 'master' of https://github.com/KOWX712/Tricky-Addon-Update-Target-List 2024-11-08 01:30:08 +08:00
KOWX712
5591a3ed14 Minor UI change
change icon, enhanced UI experience
2024-11-08 01:30:05 +08:00
KOWX712
9d0d1c7e46 Update changelog.md 2024-11-06 20:29:51 +08:00
KOWX712
6bab7df285 Update index.js 2024-11-06 20:24:55 +08:00
KOWX712
5d14680bb9 Update update.json 2024-11-06 20:21:38 +08:00
41 changed files with 2543 additions and 664 deletions

1
.extra Normal file

File diff suppressed because one or more lines are too long

124
.github/workflows/build.yml vendored Normal file
View File

@@ -0,0 +1,124 @@
name: build
on:
push:
branches:
- main
paths:
- 'module/**'
workflow_dispatch:
jobs:
build:
name: build
runs-on: ubuntu-latest
outputs:
version_tag_exists: ${{ steps.check_tag.outputs.version_tag_exists }}
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 2
fetch-tags: true
- name: Extract Module Info
id: extract_info
run: |
MODULE_VERSION=$(grep -oP '^version=\K.*' module/module.prop)
BUILD_COUNT=$((1000 + ${{ github.run_number }}))
ARTIFACT_NAME="TrickyAddonModule-${MODULE_VERSION}-canary-${BUILD_COUNT}"
echo "MODULE_VERSION=${MODULE_VERSION}" >> $GITHUB_ENV
echo "ARTIFACT_NAME=${ARTIFACT_NAME}" >> $GITHUB_ENV
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.ARTIFACT_NAME }}
path: module/
include-hidden-files: true
- name: Check if valid to release
id: check_tag
run: |
VERSION=$(grep '^version=' module/module.prop | sed 's/version=//')
git fetch --tags
if git tag | grep -qx "^$VERSION"; then
echo "version_tag_exists=true" >> $GITHUB_OUTPUT
else
echo "version_tag_exists=false" >> $GITHUB_OUTPUT
fi
release:
name: release
runs-on: ubuntu-latest
needs: build
if: ${{ needs.build.outputs.version_tag_exists == 'false' }}
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 2
- name: Configure Git user
run: |
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
- name: Create a new tag
run: |
VERSION=$(grep '^version=' module/module.prop | sed 's/version=//')
git tag -a "$VERSION" -m "Release version $VERSION"
git push origin "$VERSION"
- name: Set release variables
id: set_release_variables
run: |
VERSION=$(grep '^version=' module/module.prop | sed 's/version=//')
CURRENT_TAG="$VERSION"
RELEASE_NOTES=$(awk -v tag="### $CURRENT_TAG" '
$0 == tag {flag=1; next}
/^###/ && flag {exit}
flag {print}
' changelog.md)
if [[ "$VERSION" == *"beta"* ]]; then
PRERELEASE=true
FORMATTED_RELEASE_NOTES=$(echo -e "- Due to extensive code refactoring, you might encounter unexpected bugs in this version, feedback in [Telegram](https://t.me/kowchannel) or [create issue](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/issues) if you found any issues.\n---\n### Tricky Addon module\n$RELEASE_NOTES")
FILES="TrickyAddonModule-${VERSION}.zip"
else
PRERELEASE=false
FORMATTED_RELEASE_NOTES=$(echo -e "### Tricky Addon module\n$RELEASE_NOTES\n---\n### Tricky Addon Lite - script only\n- Check on [changelog](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/tree/main/lite-script_only#tricky-addon-lite-update-target-list-script)")
FILES="TrickyAddonModule-${VERSION}.zip,TrickyAddonLite_ScriptOnly_Extract-${VERSION}.zip"
fi
echo "CURRENT_TAG=$CURRENT_TAG" >> $GITHUB_ENV
echo "ZIP_NAME=TrickyAddonModule-${VERSION}.zip" >> $GITHUB_ENV
echo "LITE_SCRIPT_ONLY_ZIP_NAME=TrickyAddonLite_ScriptOnly_Extract-${VERSION}.zip" >> $GITHUB_ENV
echo "RELEASE_NOTES<<EOF" >> $GITHUB_ENV
echo "$FORMATTED_RELEASE_NOTES" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
echo "FILES=$FILES" >> $GITHUB_ENV
echo "PRERELEASE=$PRERELEASE" >> $GITHUB_ENV
- name: Compress module folder
run: |
cd module && zip -r "../${{ env.ZIP_NAME }}" ./*
echo "Created zip file: ${{ env.ZIP_NAME }}"
- name: Compress lite-script_only folder
if: ${{ env.PRERELEASE == 'false' }}
run: |
cd lite-script_only && zip -r "../${{ env.LITE_SCRIPT_ONLY_ZIP_NAME }}" ./*
echo "Created zip file: ${{ env.LITE_SCRIPT_ONLY_ZIP_NAME }}"
- name: Create release
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
files: ${{ env.FILES }}
tag_name: ${{ env.CURRENT_TAG }}
name: ${{ env.CURRENT_TAG }}
body: ${{ env.RELEASE_NOTES }}
draft: false
prerelease: ${{ env.PRERELEASE }}

View File

@@ -1,37 +1,42 @@
# **Tricky Addon - Update Target List**
An addon module for tricky store
# Tricky Addon - Update Target List
Configure Tricky Store target.txt with KSU WebUI.
---
## Description
- Automated script to update tricky store target list.
- System app excluded by default
- This is **not** a necessary module for root hide but for those who lazy to do it manually
> [!NOTE]
> _This module is **not** a part of the Tricky Store module. DO NOT report any issues to Tricky Store if encountered._
## Requirements
- [Tricky store](https://github.com/5ec1cff/TrickyStore) module installed
## Custom Configuration
- ADDITION and EXCLUDE in `/data/adb/tricky_store/target_list_config`
- EXCLUDE for removing unnecessary apps
- ADDITION for adding back system app excluded by default
- Configuration list with **KSU WebUI** (KernelSU & Apatch, For Magisk users: [KSU WebUI standalone](https://github.com/5ec1cff/KsuWebUIStandalone))
## Instructions
### Automatic update
- On boot
### KernelSU & Apatch
- KSU WebUI
### Manually update
**Action button method**
- Use action button to update tricky store target list.
- Available for Magisk 27008+, KernelSU 11981+, Apatch 10927+
### Magisk
- Action button to open WebUI
- Support KSUWebUIStandalone and latest MMRL
- Automatic install [KSUWebUIStandalone](https://github.com/5ec1cff/KsuWebUIStandalone) if none of them are installed.
**Manual script method**
- Run `UpdateTargetList.sh` under `/data/adb/tricky_store` manually.
- MT manager is recommened for this method
### Module Visibility
| Visibility | Behavior|
| :--- | :--- |
| Invisible | <li>Action/WebUI on the Tricky Store module card.</li><li>Uninstall by pressing the uninstall button at the bottom part of WebUI.</li> |
| Visible | <li>For those who having trouble with KSUWebUIStandalone, such as</li><ul><li>using an old version of Magisk that lacks the action button</li><li>KSU built-in WebUI freeze</li></ul> |
## More
**Support to pass abnormal boot state**
- Put Verfied Boot Hash to `boot_hash` in `/data/adb/modules/TA_utl`, reboot.
### What Can This Module Do
| Feature | Status |
|:---|:---:|
| Configure target.txt with app name display | ✅ |
| Select apps from Magisk DenyList (optional) | ✅ |
| Set verifiedBootHash (optional) | ✅ |
| Provide AOSP Keybox (optional) | ✅ |
| Valid Keybox (not guaranteed) | ❌ |
| Shamiko Whitelist switch ([Why?](https://github.com/rushizgithub/shamiko?tab=readme-ov-file#whitelist)) | ❌ |
| Add `!` or `?` to the target ([Not needed](https://github.com/5ec1cff/TrickyStore/releases/tag/1.1.0)) | ❌ |
| Periodically update target and add new apps | ❌ |
| Add system apps (GMS added by default) | ❌ |
## Translation
- Read [Translation Guide](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/blob/main/module/webroot/locales/A-translate.md)
## Acknowledgement
- [j-hc/zygisk-detach](https://github.com/j-hc/zygisk-detach) - KSU WebUI template
@@ -39,4 +44,6 @@ An addon module for tricky store
## Links
Download: [GitHub release](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases)
Update history: Read [Changelog](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/blob/main/changelog.md)
Telegram channel: [KOW's Little World](https://t.me/kowchannel)

View File

@@ -1,19 +1,70 @@
### Tricky Addon: Update Target List
Automated script to update tricky store target.txt
A **KSU WebUI** to configure tricky store target.txt
Requirement: Tricky Store module installed
Manually add VerifiedBootHash to /data/adb/modules/TA_utl/boot_hash (optional)
*This module is **not** a part of the Tricky Store module. DO NOT report any issues to Tricky Store if encountered.*
GitHub release: [Tricky Addon: Update Target List](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/latest)
Telegram channel: [KOW's Little World](https://t.me/kowchannel)
## Changelog
### v2.7
- Abandoned `UpdateTargetList.sh`; No longer automatically update target on boot.
- Adapted with MMRL, Magisk user can uninstall KSUWebUIStandalone if you have latest MMRL installed, action button will redirect to MMRL if KSUWebUIStandalone not found.
- New update card for invisible module.
- Improved UI.
- Press any position of app card to select/deselct.
### v2.6
- Invisible module, intergrate action button & webui on tricky store card. You can stil use visible option if you found any issue with invisble module. Thanks for idea from @backslashxx.
- To uninstall invisble module, scroll down to the bottom of WebUI and press Uninstall WebUI.
- Add update prompt if found new version in webui, and show module if found an update. (invisible)
- Reduced WebUI loading time
- Added feature to save verifiedBootHash
- New way to detect Xposed module, now can catch all Xposed module apk package name in Deselect Unnecessary option, feedback in [Telegram](https://t.me/kowchannel) or [create issue](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/issues) if missed any.
- **Initial support for multiple languages**
- Language available: **en-US**, **ru-RU**, **tl-PH**, **zh-CN**, **zh-TW**
- Add language or fix translation error? [Read here](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/tree/master/module/webroot/locales/A-translate.md).
### v2.6-beta.3
- Check in [release notes](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/tag/v2.6-beta.3).
### v2.6-beta.2
- Check in [release notes](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/tag/v2.6-beta.2).
### v2.6-beta.1
- Check in [release notes](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/tag/v2.6-beta.1).
### v2.5
- Remove kb prompt on installation, moved into WebUI
- Restore to AOSP keybox during uninstallation
### v2.4
- Added aapt binary for app name display
- **KSU WebUI:**
- Added app name display
### v2.3
- Removed curl binary
- Moved boot_hash to /data/adb to prevent overwrite
- Stop TSP-A auto target to prevent overwrite
- Abandoned action button in KernelSU and Apatch
- Magisk action button: open WebUI, automatic download if not installed (optional)
- **KSU WebUI:**
- Option to select app from DenyList (Magisk)
### v2.2
- **KSU WebUI:**
- Added help menu
- Added extra [unnecessary app](https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/more-excldue.json) exclude option
- Added no Internet connection prompt
### v2.1
- Added curl binary to fetch Xposed module package name from LSPosed webside
**KSU WebUI**
- **KSU WebUI:**
- Added feature to exclude Xposed module package name
- Fixed abnormal color in dark mode
- Combined save config and update target.txt button

View File

@@ -4,7 +4,10 @@
- Recommend to run with MT manager
## Changelog
### v2.0, v2.1
### v2.1, v2.2, v2.3, v2.4, v2.5, v2.6
- Remain same with v2.0
### v2.0
- More clarify remark in code
- Remove useless code

View File

@@ -1,6 +1,6 @@
#!/bin/sh
# Tricky Addon Lite: Update Target List Script v2.1
# Tricky Addon Lite: Update Target List Script v2.5
# GitHub Repository: https://github.com/KOWX712/Tricky-Addon-Update-Target-List/blob/master/lite-script_only/README.md
# Telegram channel: https://t.me/kowchannel
@@ -14,6 +14,7 @@
EXCLUDE="
oneplus
coloros
miui
com.android.patch
me.bmax.apatch
me.garfieldhan.apatch.next"

View File

@@ -1,18 +1,20 @@
###########################################
## This file is NOT a part of Tricky Store
###########################################
MODPATH="/data/adb/modules/.TA_utl"
COMPATH="$MODPATH/common"
SCRIPT_DIR="/data/adb/tricky_store"
echo "**********************************************"
echo "- Staring script..."
echo " "
. "$COMPATH/util_func.sh"
if [ ! -f "$SCRIPT_DIR/UpdateTargetList.sh" ]; then
echo "! Script missing, please install module again"
echo "**********************************************"
exit 1
if pm list packages | grep -q "$PACKAGE_NAME"; then
echo "- Launching KSU WebUI..."
am start -n "${PACKAGE_NAME}/.WebUIActivity" -e id "$MODID"
elif pm list packages | grep -q "com.dergoogler.mmrl"; then
echo "- Launching KSU WebUI..."
am start -n "com.dergoogler.mmrl/.ui.activity.webui.WebUIActivity" -e MOD_ID "$MODID"
else
. "$SCRIPT_DIR/UpdateTargetList.sh"
fi
echo "**********************************************"
echo "\(__All set!__)/"
echo "Exiting in 2 seconds..."
sleep 2
echo "- Installing KSU WebUI..."
. "$COMPATH/get_WebUI.sh"
fi

BIN
module/bin/arm64-v8a/aapt Normal file

Binary file not shown.

Binary file not shown.

BIN
module/bin/armeabi-v7a/aapt Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -1,8 +0,0 @@
# This is the list of additional apps to include in the target file
# DO NOT remove the default app here
# You can add your custom addition app's package name here
# Each app package name should be on a new line
com.google.android.gms
io.github.vvb2060.keyattestation
io.github.vvb2060.mahoshojo
icu.nullptr.nativetest

View File

@@ -1,9 +0,0 @@
# This is the list of apps to exclude from the target file
# DO NOT remove the default app here
# You can add your custom exclusion app here
# Each app package name should be on a new line
oneplus
coloros
com.android.patch
me.bmax.apatch
me.garfieldhan.apatch.next

View File

@@ -1,40 +0,0 @@
#!/bin/sh
# This script will put all non-system app into /data/adb/tricky_store/target.txt
CONFIG_DIR="/data/adb/tricky_store/target_list_config"
echo "- Checking config files..."
echo " "
if [ ! -f "$CONFIG_DIR/EXCLUDE" ]; then
echo "! Exclude list is missing, please install module again"
exit 1
else
echo "- Exclude config file found"
echo " "
fi
if [ ! -f "$CONFIG_DIR/ADDITION" ]; then
echo "! Addition list is missing, please install module again"
exit 1
else
echo "- Addition config file found"
echo " "
fi
EXCLUDE=$(grep -vE '^[[:space:]]*#|^[[:space:]]*$' "$CONFIG_DIR/EXCLUDE" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' | tr '\n' '|' | sed 's/|$//')
ADDITION=$(grep -vE '^[[:space:]]*#|^[[:space:]]*$' "$CONFIG_DIR/ADDITION")
echo "- Adding apps into /data/adb/tricky_store/target.txt..."
echo " "
su -c pm list packages -3 </dev/null 2>&1 | cat | awk -F: '{print $2}' | grep -Ev "$EXCLUDE" > /data/adb/tricky_store/target.txt
echo "- Adding addition app... "
echo " "
for app in $ADDITION; do
app=$(echo "$app" | tr -d '[:space:]')
if ! grep -Fq "$app" /data/adb/tricky_store/target.txt; then
echo "$app" >> /data/adb/tricky_store/target.txt
fi
done
echo "- target.txt updated successfully"
echo " "

View File

@@ -0,0 +1,27 @@
URL="https://github.com/5ec1cff/KsuWebUIStandalone/releases/download/v1.0/KsuWebUI-1.0-34-release.apk"
APK_DIR="$COMPATH"
find_busybox
check_wget
echo "- Downloading the WebUI apk..."
download_webui
echo "- Download complete."
APK_PATH=$(find "$APK_DIR" -type f -name "*.apk" | head -n 1)
if [ -z "$APK_PATH" ]; then
echo "Error: No APK file found in $APK_DIR."
exit 1
fi
echo "- Installing..."
install_webui
echo "- Done."
rm -f "$APK_PATH"
echo "- Launching..."
am start -n "${PACKAGE_NAME}/.WebUIActivity" -e id "$MODID" </dev/null 2>&1 | cat
if [ $? -ne 0 ]; then
echo "Error: Failed to start application."
exit 1
fi
echo "- Application launched successfully."

View File

@@ -0,0 +1,49 @@
#!/system/bin/sh
MODPATH=${0%/*}
SKIPLIST="$MODPATH/skiplist"
OUTPUT="$MODPATH/exclude-list"
KBOUTPUT="$MODPATH/.extra"
. $MODPATH/util_func.sh
find_busybox
check_wget
# Fetch additional package names
wget --no-check-certificate -q -O - "https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/more-excldue.json" 2>/dev/null | \
grep -o '"package-name": *"[^"]*"' | \
awk -F'"' '{print $4}' > "$OUTPUT"
if [ ! -s "$OUTPUT" ]; then
rm -f "$KBOUTPUT"
skipfetch=true
fi
# Find xposed package name
pm list packages -3 </dev/null 2>&1 | cat | awk -F: '{print $2}' | while read -r PACKAGE; do
if ! grep -Fq "$PACKAGE" "$SKIPLIST"; then
pm path "$PACKAGE" | grep "base.apk" | awk -F: '{print $2}' | tr -d '\r' | while read -r APK_PATH; do
aapt dump xmltree "$APK_PATH" AndroidManifest.xml 2>/dev/null | grep -qE "xposed.category|xposeddescription" && echo "$PACKAGE" >> "$OUTPUT"
done
fi
done
if [ "$skipfetch" != "true" ]; then
wget --no-check-certificate -qO "$KBOUTPUT" "https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/.extra"
if [ ! -s "$KBOUTPUT" ]; then
rm -f "$KBOUTPUT"
fi
if [ -d "$MODPATH/temp" ]; then
JSON=$(wget --no-check-certificate -q -O - "https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/update.json")
REMOTE_VERSION=$(echo "$JSON" | grep -o '"versionCode": *[0-9]*' | awk -F: '{print $2}' | tr -d ' ')
LOCAL_VERSION=$(grep -o 'versionCode=[0-9]*' "$MODPATH/temp/module.prop" | awk -F= '{print $2}')
if [ "$REMOTE_VERSION" -gt "$LOCAL_VERSION" ]; then
echo "update"
fi
fi
else
exit 1
fi

View File

@@ -1,9 +0,0 @@
#!/system/bin/sh
# Get all xposed app package name
MODPATH=${0%/*}
OUTPUT="$MODPATH/xposed-list"
curl -s "https://modules.lsposed.org/modules.json" | \
grep -o '"name":"[^"]*","description":' | \
awk -F'"' '{print $4}' > "$OUTPUT"

View File

@@ -0,0 +1,3 @@
MODPATH=${0%/*}
rm -rf "$MODPATH"

View File

@@ -0,0 +1,46 @@
PACKAGE_NAME="io.github.a13e300.ksuwebui"
MODID="set-id"
BBPATH="/data/adb/modules/busybox-ndk/system/*/busybox \
/data/adb/magisk/busybox \
/data/adb/ksu/bin/busybox \
/data/adb/ap/bin/busybox"
find_busybox() {
for path in $BBPATH; do
if [ -f "$path" ]; then
BUSYBOX="$path"
return 0
fi
done
return 1
}
check_wget() {
if ! command -v wget >/dev/null || grep -q "wget-curl" "$(command -v wget)"; then
if find_busybox; then
wget() { "$BUSYBOX" wget "$@"; }
else
echo "Error: busybox not found." > "$OUTPUT"
exit 1
fi
fi
}
aapt() { "$MODPATH/aapt" "$@"; }
download_webui() {
wget --no-check-certificate -P "$APK_DIR" "$URL"
if [ $? -ne 0 ]; then
echo "Error: APK download failed."
exit 1
fi
}
install_webui() {
pm install -r "$APK_PATH" </dev/null 2>&1 | cat
if [ $? -ne 0 ]; then
echo "Error: APK installation failed."
rm -f "$APK_PATH"
exit 1
fi
}

View File

@@ -1,11 +1,20 @@
SKIPUNZIP=0
DEBUG=false
COMPATH="$MODPATH/common"
TS="/data/adb/modules/tricky_store"
SCRIPT_DIR="/data/adb/tricky_store"
CONFIG_DIR="$SCRIPT_DIR/target_list_config"
MODID=`grep_prop id $TMPDIR/module.prop`
NEW_MODID=".TA_utl"
kb="$COMPATH/.default"
ui_print " ";
if [ "$APATCH" ]; then
ui_print "- APatch:$APATCH_VER$APATCH_VER_CODE"
ACTION=false
elif [ "$KSU" ]; then
ui_print "- KSU:$KSU_KERNEL_VER_CODE$KSU_VER_CODE"
ACTION=false
elif [ "$MAGISK_VER_CODE" ]; then
ui_print "- Magisk:$MAGISK_VER$MAGISK_VER_CODE"
else
@@ -14,145 +23,21 @@ else
abort " ";
fi
COMPATH="$MODPATH/common"
TS="/data/adb/modules/tricky_store"
SCRIPT_DIR="/data/adb/tricky_store"
CONFIG_DIR="$SCRIPT_DIR/target_list_config"
MODNAME=$(grep '^id=' "$MODPATH/module.prop" | awk -F= '{print $2}' | xargs)
ORG_DIR="/data/adb/modules/$MODNAME"
kb="$COMPATH/.default"
if [ -d "$TS" ]; then
ui_print "- Tricky store module installed"
else
if [ ! -d "$TS" ]; then
ui_print "! Tricky store module is not installed"
abort " "
abort
fi
key_check() {
while true; do
key_check=$(/system/bin/getevent -qlc 1)
key_event=$(echo "$key_check" | awk '{ print $3 }' | grep 'KEY_')
key_status=$(echo "$key_check" | awk '{ print $4 }')
if [[ "$key_event" == *"KEY_"* && "$key_status" == "DOWN" ]]; then
keycheck="$key_event"
break
fi
done
while true; do
key_check=$(/system/bin/getevent -qlc 1)
key_event=$(echo "$key_check" | awk '{ print $3 }' | grep 'KEY_')
key_status=$(echo "$key_check" | awk '{ print $4 }')
if [[ "$key_event" == *"KEY_"* && "$key_status" == "UP" ]]; then
break
fi
done
}
add_exclude() {
EXCLUDE=$(grep -vE '^[[:space:]]*#|^[[:space:]]*$' "$CONFIG_DIR/EXCLUDE")
for app in $EXCLUDE; do
app=$(echo "$app" | tr -d '[:space:]')
if ! grep -Fq "$app" $COMPATH/EXCLUDE; then
echo "$app" >> $COMPATH/EXCLUDE
fi
done
mv "$COMPATH/EXCLUDE" "$CONFIG_DIR/EXCLUDE"
}
add_addition() {
ADDITION=$(grep -vE '^[[:space:]]*#|^[[:space:]]*$' "$CONFIG_DIR/ADDITION")
for app in $ADDITION; do
app=$(echo "$app" | tr -d '[:space:]')
if ! grep -Fq "$app" $COMPATH/ADDITION; then
echo "$app" >> $COMPATH/ADDITION
fi
done
mv "$COMPATH/ADDITION" "$CONFIG_DIR/ADDITION"
}
. "$MODPATH/install_func.sh"
ui_print "- Installing..."
initialize
if [ -f "$SCRIPT_DIR/UpdateTargetList.sh" ]; then
rm -f "$SCRIPT_DIR/UpdateTargetList.sh"
fi
cp "$MODPATH/module.prop" "$COMPATH/module.prop.orig"
mv "$COMPATH/UpdateTargetList.sh" "$SCRIPT_DIR/UpdateTargetList.sh"
ui_print "- Creating config directory..."
find_config
migrate_old_boot_hash
sed -i "s|\"set-path\"|\"/data/adb/modules/$MODNAME/common/\"|" "$MODPATH/webroot/index.js" || ui_print "! fail to replace path"
# Curl binary is used to fetch xposed module package name list from https://modules.lsposed.org/modules.json
if [ ! -f "/system/bin/curl" ]; then
mkdir -p "$MODPATH/system/bin"
mv "$MODPATH/bin/$(getprop ro.product.cpu.abi)/curl" "$MODPATH/system/bin/curl"
set_perm "$MODPATH/system/bin/curl" 0 2000 0777
fi
rm -rf "$MODPATH/bin"
set_perm $SCRIPT_DIR/UpdateTargetList.sh 0 2000 0755
set_perm $COMPATH/get_xposed.sh 0 2000 0755
if [ -d "$CONFIG_DIR" ]; then
if [ ! -f "$CONFIG_DIR/EXCLUDE" ] && [ ! -f "$CONFIG_DIR/ADDITION" ]; then
mv "$COMPATH/EXCLUDE" "$CONFIG_DIR/EXCLUDE"
mv "$COMPATH/ADDITION" "$CONFIG_DIR/ADDITION"
elif [ ! -f "$CONFIG_DIR/ADDITION" ]; then
mv "$COMPATH/ADDITION" "$CONFIG_DIR/ADDITION"
add_exclude
elif [ ! -f "$CONFIG_DIR/EXCLUDE" ]; then
mv "$COMPATH/EXCLUDE" "$CONFIG_DIR/EXCLUDE"
add_addition
else
add_exclude
add_addition
fi
ui_print "- Migrating old config data"
else
ui_print "- Creating config folder $CONFIG_DIR"
mkdir -p "$CONFIG_DIR"
mv "$COMPATH/EXCLUDE" "$CONFIG_DIR/EXCLUDE"
mv "$COMPATH/ADDITION" "$CONFIG_DIR/ADDITION"
fi
if [ ! -f "$ORG_DIR/boot_hash" ]; then
mv "$COMPATH/boot_hash" "$MODPATH/boot_hash"
else
rm -f "$COMPATH/boot_hash"
mv "$ORG_DIR/boot_hash" "$MODPATH/boot_hash"
fi
# Migrate from old version setup
if [ -f "$ORG_DIR/system.prop" ]; then
hash_value=$(sed -n 's/^ro.boot.vbmeta.digest=//p' "$ORG_DIR/system.prop")
if [ -n "$hash_value" ]; then
echo -e "\n$hash_value" >> "$MODPATH/boot_hash"
fi
fi
ui_print "*********************************************"
ui_print "- Do you want to replace tricky store keybox?"
ui_print " VOL [+]: YES"
ui_print " VOL [-]: NO"
ui_print "*********************************************"
key_check
if [[ "$keycheck" == "KEY_VOLUMEUP" ]]; then
ui_print "*********************************************"
ui_print "- Backing up original keybox..."
ui_print "- Replacing keybox..."
ui_print "*********************************************"
if [ -f "$ORG_DIR/common/origkeybox" ]; then
mv "$ORG_DIR/common/origkeybox" "$COMPATH/origkeybox"
else
mv "$SCRIPT_DIR/keybox.xml" "$COMPATH/origkeybox"
fi
mv "$kb" "$SCRIPT_DIR/keybox.xml"
else
if [ -f "$ORG_DIR/common/origkeybox" ]; then
mv "$ORG_DIR/common/origkeybox" "$COMPATH/origkeybox"
else
rm -f "$kb"
fi
fi
rm -f "$MODPATH/install_func.sh"
ui_print "- Installation completed successfully! "
ui_print " "
ui_print " "

85
module/install_func.sh Normal file
View File

@@ -0,0 +1,85 @@
initialize() {
if [ -f "$SCRIPT_DIR/UpdateTargetList.sh" ]; then
rm -f "$SCRIPT_DIR/UpdateTargetList.sh"
fi
if [ -d "/data/adb/modules/$NEW_MODID" ]; then
rm -rf "/data/adb/modules/$NEW_MODID"
fi
set_perm $COMPATH/get_extra.sh 0 2000 0755
set_perm $COMPATH/get_WebUI.sh 0 2000 0755
if [ "$ACTION" = "false" ]; then
rm -f "$MODPATH/action.sh"
rm -f "$COMPATH/get_WebUI.sh"
echo "**********************************************"
echo "- Tricky Addon's visibility in root manager?"
echo " VOL [+]: Visible"
echo " VOL [-]: Invisible (default)"
echo "**********************************************"
key_check
if [[ "$keycheck" == "KEY_VOLUMEUP" ]]; then
echo "- Setting to visible..."
rm -rf "$COMPATH/temp"
NEW_MODID="$MODID"
else
tmp_dir
fi
else
tmp_dir
fi
sed -i "s|\"set-path\"|\"/data/adb/modules/$NEW_MODID/\"|" "$MODPATH/webroot/index.js" || {
ui_print "! Failed to set path"
abort
}
sed -i "s|\"set-id\"|\"$NEW_MODID\"|" "$COMPATH/util_func.sh" || {
ui_print "! Failed to set id"
abort
}
mv "$MODPATH/bin/$(getprop ro.product.cpu.abi)/aapt" "$COMPATH/aapt"
set_perm $COMPATH/aapt 0 2000 0755
rm -rf "$MODPATH/bin"
}
tmp_dir() {
mkdir -p "$COMPATH/temp/common"
cp "$COMPATH/.default" "$COMPATH/temp/common/.default"
cp "$MODPATH/module.prop" "$COMPATH/temp/module.prop"
cp "$MODPATH/uninstall.sh" "$COMPATH/temp/uninstall.sh"
}
find_config() {
if [ -d "$CONFIG_DIR" ]; then
rm -rf "$CONFIG_DIR"
fi
}
migrate_old_boot_hash() {
if [ ! -f "/data/adb/boot_hash" ]; then
mv "$COMPATH/boot_hash" "/data/adb/boot_hash"
else
rm -f "$COMPATH/boot_hash"
fi
}
key_check() {
while true; do
key_check=$(/system/bin/getevent -qlc 1)
key_event=$(echo "$key_check" | awk '{ print $3 }' | grep 'KEY_')
key_status=$(echo "$key_check" | awk '{ print $4 }')
if [[ "$key_event" == *"KEY_"* && "$key_status" == "DOWN" ]]; then
keycheck="$key_event"
break
fi
done
while true; do
key_check=$(/system/bin/getevent -qlc 1)
key_event=$(echo "$key_check" | awk '{ print $3 }' | grep 'KEY_')
key_status=$(echo "$key_check" | awk '{ print $4 }')
if [[ "$key_event" == *"KEY_"* && "$key_status" == "UP" ]]; then
break
fi
done
}

View File

@@ -1,7 +1,7 @@
id=TA_utl
name=Tricky Addon - Update Target List
version=v2.1
versionCode=210
version=v2.7
versionCode=270
author=KOWX712
description=Update tricky store target.txt. Custom config: ADDITION and EXCLUDE in /data/adb/tricky_store/target_list_config
updateJson=https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/master/update.json
description=A WebUI to conifgure tricky store target.txt
updateJson=https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/update.json

24
module/post-fs-data.sh Normal file
View File

@@ -0,0 +1,24 @@
MODPATH=${0%/*}
TS="/data/adb/modules/tricky_store"
while [ -z "$(ls -A /data/adb/modules/)" ]; do
sleep 1
done
if [ ! -d "$TS" ] || [ -f "$TS/remove" ]; then
if [ -d "$MODPATH/common/temp" ]; then
mkdir -p "/data/adb/modules/TA_utl"
cp -rf "$MODPATH/common/temp"/* "/data/adb/modules/TA_utl/"
touch "/data/adb/modules/TA_utl/remove"
else
touch "$MODPATH/remove"
fi
exit 1
fi
if [ ! -d "$MODPATH/common/temp" ]; then
rm -rf "/data/adb/modules/.TA_utl"
fi
rm -f "$TS/action.sh"
rm -rf "$TS/webroot"

View File

@@ -1,31 +1,57 @@
MODPATH=${0%/*}
HIDE_DIR="/data/adb/modules/.TA_utl"
TS="/data/adb/modules/tricky_store"
SCRIPT_DIR="/data/adb/tricky_store"
TSPA="/data/adb/modules/tsupport-advance"
hash_value=$(grep -v '^#' "$MODPATH/boot_hash" | tr -d '[:space:]')
aapt() { "$MODPATH/common/aapt" "$@"; }
hash_value=$(grep -v '^#' "/data/adb/boot_hash" | tr -d '[:space:]')
if [ -n "$hash_value" ]; then
resetprop -n ro.boot.vbmeta.digest "$hash_value"
fi
if [ ! -f "$MODPATH/common/module.prop.orig" ]; then
sed -i 's/^description=.*/description=Module is corrupted, please reinstall module./' "$MODPATH/module.prop"
touch "$MODPATH/disable"
exit 1
# Disable TSupport-A auto update target to prevent overwrite
if [ -d "$TSPA" ]; then
touch "/storage/emulated/0/stop-tspa-auto-target"
elif [ ! -d "$TSPA" ] && [ -f "/storage/emulated/0/stop-tspa-auto-target" ]; then
rm -f "/storage/emulated/0/stop-tspa-auto-target"
fi
if [ ! -d "$TS" ]; then
sed -i 's/^description=.*/description=Tricky store is not installed/' "$MODPATH/module.prop"
touch "$MODPATH/disable"
elif [ -f "$TS/disable" ]; then
sed -i 's/^description=.*/description=Tricky store is disabled/' "$MODPATH/module.prop"
touch "$MODPATH/disable"
elif [ ! -f "$SCRIPT_DIR/UpdateTargetList.sh" ]; then
sed -i 's/^description=.*/description=Script missing, please install module again/' "$MODPATH/module.prop"
touch "$MODPATH/disable"
else
cat "$MODPATH/common/module.prop.orig" > "$MODPATH/module.prop"
until [ "$(getprop sys.boot_completed)" = "1" ]; do
sleep 1
done
. "$SCRIPT_DIR/UpdateTargetList.sh"
fi
if [ -d "$MODPATH/common/temp" ]; then
if [ "$KSU" ] || [ "$APATCH" ]; then
rm -f "$MODPATH/module.prop"
fi
if [ ! -d "$HIDE_DIR" ]; then
mv "$MODPATH" "$HIDE_DIR"
elif [[ "$MODPATH" != "$HIDE_DIR" ]]; then
rm -rf "$MODPATH"
exit 0
fi
MODPATH="$HIDE_DIR"
if [ -f "$MODPATH/action.sh" ]; then
ln -s "$MODPATH/action.sh" "$TS/action.sh"
fi
ln -s "$MODPATH/webroot" "$TS/webroot"
fi
OUTPUT_APP="$MODPATH/common/applist"
OUTPUT_SKIP="$MODPATH/common/skiplist"
until [ "$(getprop sys.boot_completed)" = "1" ]; do
sleep 1
done
echo "# This file is generated from service.sh to speed up load time" > "$OUTPUT_APP"
echo "# This file is generated from service.sh to speed up load time" > "$OUTPUT_SKIP"
pm list packages -3 </dev/null 2>&1 | cat | awk -F: '{print $2}' | while read -r PACKAGE; do
APK_PATH=$(pm path "$PACKAGE" </dev/null 2>&1 | cat | grep "base.apk" | awk -F: '{print $2}' | tr -d '\r')
if [ -n "$APK_PATH" ]; then
APP_NAME=$(aapt dump badging "$APK_PATH" </dev/null 2>&1 | cat | grep "application-label:" | sed "s/application-label://g; s/'//g")
echo "app-name: $APP_NAME, package-name: $PACKAGE" >> "$OUTPUT_APP"
else
echo "app-name: Unknown App package-name: $PACKAGE" >> "$OUTPUT_APP"
fi
if ! aapt dump xmltree "$APK_PATH" AndroidManifest.xml </dev/null 2>&1 | cat | grep -qE "xposed.category|xposeddescription"; then
echo "$PACKAGE" >> "$OUTPUT_SKIP"
fi
done

View File

@@ -1,10 +1,20 @@
MODPATH=${0%/*}
TS="/data/adb/modules/tricky_store"
SCRIPT_DIR="/data/adb/tricky_store"
# Remove residue and restore original keybox.
rm -rf "$SCRIPT_DIR/target_list_config"
rm -f "$SCRIPT_DIR/UpdateTargetList.sh"
if [ -f "$MODPATH/common/origkeybox" ]; then
rm -f "$SCRIPT_DIR/keybox.xml"
mv "$MODPATH/common/origkeybox" "$SCRIPT_DIR/keybox.xml"
fi
# Enable back TSupport-A auto update
if [ -f "/storage/emulated/0/stop-tspa-auto-target" ]; then
rm -f "/storage/emulated/0/stop-tspa-auto-target"
fi
# Remove residue and restore aosp keybox.
rm -rf "/data/adb/modules/.TA_utl"
rm -f "/data/adb/boot_hash"
if [ -d "$TS" ]; then
if [ -f "$TS/action.sh" ]; then
rm -f "$TS/action.sh"
else
rm -rf "$TS/webroot"
fi
fi
xxd -r -p "$MODPATH/common/.default" | base64 -d > "$SCRIPT_DIR/keybox.xml"

View File

@@ -1,46 +1,154 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<title data-i18n="title">Document</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="/styles.css" type="text/css">
<link rel="stylesheet" type="text/css" href="/mmrl/insets.css" />
<script type="module" crossorigin src="/index.js"></script>
</head>
<body>
<div id="title">Tricky Addon - Update Target List</div>
<div class="search-card">
<input type="text" class="search-input" id="search" placeholder="Search">
<button class="clear-btn" id="clear-btn">&#x2715;</button>
</div>
<div class="menu">
<input type="checkbox" id="menu-toggle" class="menu-toggle" style="display: none;">
<label for="menu-toggle" id="menu-button">
<span class="menu-icon">&#9776;</span>
</label>
<div id="menu-options" class="menu-options">
<ul>
<li id="refresh">Refresh</li>
<li id="select-all">Select All</li>
<li id="deselect-all">Deselect All</li>
<li id="deselect-xposed">Deselect Xposed</li>
</ul>
<!-- Header -->
<div class="header-block"></div>
<div class="header">
<div id="title" data-i18n="title"></div>
<button id="help-button" class="help-button"><i class="fa fa-question-circle"></i></button>
<div class="no-connection">
<img src="wifi-slash.svg" alt="No Connection Icon" class="wifi-icon">
</div>
<div class="language-dropdown">
<button class="language-button">
<i class="fa fa-compass"></i>
</button>
<div class="language-menu">
<button class="language-option" data-lang="en-US">English</button>
<button class="language-option" data-lang="ru-RU">Русский</button>
<button class="language-option" data-lang="tl-PH">Tagalog</button>
<button class="language-option" data-lang="zh-CN">中文(简体)</button>
<button class="language-option" data-lang="zh-TW">中文(繁体)</button>
</div>
<div id="language-overlay" class="language-overlay"></div>
</div>
</div>
<div id="apps-list"></div>
<!-- Loading Element -->
<div class="loading" data-i18n="loading"></div>
<!-- Prompt Element -->
<div id="prompt" class="prompt"></div>
<!-- Floating Button Element -->
<div class="floating-card">
<button class="floating-btn" id="save">Save and Update</button>
</div>
<button class="floating-btn" id="save" data-i18n="save_and_update_button"></button>
</div>
<!-- Menu Options -->
<div class="search-menu-container">
<div class="search-card">
<span class="search-icon"><i class="fa fa-search"></i></span>
<input type="text" class="search-input" id="search" placeholder="Search" data-i18n="search_placeholder">
<button class="clear-btn" id="clear-btn">&#x2715;</button>
</div>
<div class="menu">
<input type="checkbox" id="menu-toggle" class="menu-toggle">
<label for="menu-toggle" id="menu-button">
<span class="menu-icon"><i class="fa fa-bars"></i></span>
</label>
<div id="menu-options" class="menu-options">
<ul>
<li id="refresh" data-i18n="refresh"></li>
<li id="select-all" data-i18n="select_all"></li>
<li id="deselect-all" data-i18n="deselect_all"></li>
<li id="select-denylist" data-i18n="select_denylist"></li>
<li id="deselect-unnecessary" data-i18n="deselect_unnecessary"></li>
<li id="aospkb" data-i18n="set_aosp_keybox"></li>
<li id="extrakb" data-i18n="set_valid_keybox"></li>
<li id="boot-hash" data-i18n="set_verified_boot_hash"></li>
<li id="about" data-i18n="about"></li>
</ul>
</div>
</div>
<div id="menu-overlay" class="menu-overlay"></div>
</div>
<!-- Applist Display -->
<div id="apps-list"></div>
<div class="update-card" id="update-card">
<p id="update-available" data-i18n="update_available"></p>
<p id="redirect-to-release" data-i18n="redirect_to_release"></p>
</div>
<template id="app-template">
<div class="card" onclick="toggleCheckbox(event)">
<div class="content">
<p class="name"></p>
<input type="checkbox" class="checkbox" checked>
<div class="card-box">
<div class="card">
<div class="content" data-package="">
<p class="name"></p>
<input type="checkbox" class="checkbox">
</div>
</div>
</div>
</template>
<div class="loading">Loading...</div>
<div class="acknowledgment">Credit to j-hc/zygisk-detach WebUI</div>
<div id="prompt" class="prompt"></div>
<!-- Help Overlay -->
<div id="help-overlay" class="help-overlay">
<div class="help-menu">
<button id="close-help" class="close-help">&#x2715;</button>
<div class="help-content">
<p data-i18n="help_instructions"></p>
<ul id="help-list"></ul>
</div>
</div>
</div>
<!-- BootHash Input Overlay -->
<div id="boot-hash-overlay" class="boot-hash-overlay"></div>
<div id="boot-hash-card" class="boot-hash-card">
<textarea id="boot-hash-input" class="input-box" placeholder="Paste your verified Boot Hash here"
data-i18n="boot_hash_input_placeholder"></textarea>
<div class="button-container">
<button id="boot-hash-save-button" class="boot-hash-save-button" data-i18n="boot_hash_save_button"></button>
</div>
</div>
<!-- About Overlay -->
<div id="about-overlay" class="about-overlay">
<div id="about-menu" class="about-menu">
<button id="close-about" class="close-about">&#x2715;</button>
<div class="about-content">
<p data-i18n="module_name_line1"></p>
<p data-i18n="module_name_line2"></p>
<p><span data-i18n="by"></span>KOWX712</p>
<br>
<p data-i18n="disclaimer"></p>
<br>
<p>
<span data-i18n="telegram_channel"></span>
<br>
<span>t.me/kowchannel</span>
</p>
<br>
<p>
<span data-i18n="github"></span>
<br>
<span>github.com/KOWX712/Tricky-Addon-Update-Target-List</span>
</p>
<br>
<p data-i18n="acknowledgment"></p>
<p>j-hc/zygisk-detach: WebUI template</p>
</div>
</div>
</div>
<!-- Footer -->
<div class="footer">
<div class="uninstall-container hidden-uninstall">
<i class="fa fa-trash"></i>
<span data-i18n="uninstall_webui"></span>
</div>
</div>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,54 @@
{
"title": "Tricky Addon - Update Target List",
"search_placeholder": "Search",
"save_and_update_button": "Save",
"boot_hash_save_button": "Save",
"loading": "Loading...",
"boot_hash_input_placeholder": "Paste your verified Boot Hash here",
"uninstall_webui": "Uninstall WebUI",
"update_available": "A new version is ready",
"redirect_to_release": "tap to download the latest version",
"refresh": "Refresh",
"select_all": "Select All",
"deselect_all": "Deselect All",
"select_denylist": "Select From DenyList",
"deselect_unnecessary": "Deselect Unnecessary",
"set_aosp_keybox": "Set AOSP Keybox",
"set_valid_keybox": "Set Valid Keybox",
"set_verified_boot_hash": "Set Verified Boot Hash",
"about": "About",
"help_instructions": "Instructions",
"save_and_update_description": "Save current configure to target.txt.",
"refresh_description": "Refresh app list and exclude list.",
"select_deselect": "Select & Deselect All",
"select_description": "Select or deselect all apps in the current interface.",
"select_denylist_description": "Available in Magisk only, select apps that are in the DenyList. Recommended.",
"deselect_unnecessary_description": "Unnecessary category: Xposed module, root manager, root-related apps, and general apps that never check bootloader status. This option requires an Internet connection.",
"set_keybox": "Set AOSP & Valid Keybox",
"set_aosp_keybox_description": "Replace tricky store keybox.xml. AOSP keybox will be replaced if there's no more valid keybox. Valid keybox option requires Internet connection.",
"set_verified_boot_hash_description": "Get verifiedBootHash value from Key Attestation Demo. Fix abnormal boot state by resetting ro.boot.vbmeta.digest.",
"module_name_line1": "Tricky Addon",
"module_name_line2": "Update Target List",
"by": "by ",
"telegram_channel": "Telegram Channel",
"github": "GitHub",
"disclaimer": "This module is not a part of the Tricky Store module. DO NOT report any issues to Tricky Store if encountered.",
"acknowledgment": "Acknowledgment",
"no_internet": "Please check your Internet connection",
"aosp_key_set": "AOSP keybox set successfully",
"key_set_error": "Failed to update keybox",
"valid_key_set": "Valid keybox set successfully",
"no_valid_fallback": "No valid keybox found, replaced with AOSP keybox.",
"boot_hash_set": "Verified Boot Hash saved successfully",
"boot_hash_set_error": "Failed to update Verified Boot Hash",
"saved_target": "Config saved to target.txt",
"save_error": "Failed to save config",
"uninstall_prompt": "WebUI will be removed after reboot",
"uninstall_failed": "Failed to uninstall WebUI",
"new_update": "A new update is available!"
}

View File

@@ -0,0 +1,31 @@
# Translation Guide
## Fix Translation Error
1. Fork this repository.
2. Find your language string file in `/module/webroot/locales/`.
3. Edit the string value with translated incorrectly.
4. Create a Pull Request.
---
## Add a New Language
### Simple
- Contact me in Telegram to add a new translation langauge for you.
### Advanced
1. Fork this repository.
2. Make a copy of `/module/webroot/locales/A-template.json`
3. Rename it to `language_code-COUNTRY_CODE.json`, e.g., `en-US.json`.
4. Translate the string value inside.
5. Add `langauge-option` into `/module/webroot/index.html`.
Format:
```xml
<button class="language-option" data-lang="language_code-COUNTRY_CODE">languageName</button>
```
Example:
```xml
<div class="language-menu">
<button class="language-option" data-lang="en-US">English</button>
</div>
```
Finally, Create a Pull Request.

View File

@@ -0,0 +1,54 @@
{
"title": "Tricky Addon - Update Target List",
"search_placeholder": "Search",
"save_and_update_button": "Save",
"boot_hash_save_button": "Save",
"loading": "Loading...",
"boot_hash_input_placeholder": "Paste your verified Boot Hash here",
"uninstall_webui": "Uninstall WebUI",
"update_available": "A new version is ready",
"redirect_to_release": "tap to download the latest version",
"refresh": "Refresh",
"select_all": "Select All",
"deselect_all": "Deselect All",
"select_denylist": "Select From DenyList",
"deselect_unnecessary": "Deselect Unnecessary",
"set_aosp_keybox": "Set AOSP Keybox",
"set_valid_keybox": "Set Valid Keybox",
"set_verified_boot_hash": "Set Verified Boot Hash",
"about": "About",
"help_instructions": "Instructions",
"save_and_update_description": "Save current configure to target.txt.",
"refresh_description": "Refresh app list and exclude list.",
"select_deselect": "Select & Deselect All",
"select_description": "Select or deselect all apps in the current interface.",
"select_denylist_description": "Available in Magisk only, select apps that are in the DenyList. Recommended.",
"deselect_unnecessary_description": "Unnecessary category: Xposed module, root manager, root-related apps, and general apps that never check bootloader status. This option requires an Internet connection.",
"set_keybox": "Set AOSP & Valid Keybox",
"set_aosp_keybox_description": "Replace tricky store keybox.xml. AOSP keybox will be replaced if there's no more valid keybox. Valid keybox option requires Internet connection.",
"set_verified_boot_hash_description": "Get verifiedBootHash value from Key Attestation Demo. Fix abnormal boot state by resetting ro.boot.vbmeta.digest.",
"module_name_line1": "Tricky Addon",
"module_name_line2": "Update Target List",
"by": "by ",
"telegram_channel": "Telegram Channel",
"github": "GitHub",
"disclaimer": "This module is not a part of the Tricky Store module. DO NOT report any issues to Tricky Store if encountered.",
"acknowledgment": "Acknowledgment",
"no_internet": "Please check your Internet connection",
"aosp_key_set": "AOSP keybox set successfully",
"key_set_error": "Failed to update keybox",
"valid_key_set": "Valid keybox set successfully",
"no_valid_fallback": "No valid keybox found, replaced with AOSP keybox.",
"boot_hash_set": "Verified Boot Hash saved successfully",
"boot_hash_set_error": "Failed to update Verified Boot Hash",
"saved_target": "Config saved to target.txt",
"save_error": "Failed to save config",
"uninstall_prompt": "WebUI will be removed after reboot",
"uninstall_failed": "Failed to uninstall WebUI",
"new_update": "A new update is available!"
}

View File

@@ -0,0 +1,54 @@
{
"title": "Tricky Addon - Обновить список целей",
"search_placeholder": "Поиск",
"save_and_update_button": "Сохранить",
"boot_hash_save_button": "Сохранить",
"loading": "Загрузка...",
"boot_hash_input_placeholder": "Вставьте свой проверенный Boot Hash сюда",
"uninstall_webui": "Удалить WebUI",
"update_available": "Доступна новая версия",
"redirect_to_release": "нажмите, чтобы скачать последнюю версию",
"refresh": "Обновить",
"select_all": "Выбрать все",
"deselect_all": "Отменить выбор всех",
"select_denylist": "Выбрать из DenyList",
"deselect_unnecessary": "Отменить выбор ненужных",
"set_aosp_keybox": "Установить AOSP Keybox",
"set_valid_keybox": "Установить действующий Keybox",
"set_verified_boot_hash": "Установить Verified Boot Hash",
"about": "О программе",
"help_instructions": "Инструкции",
"save_and_update_description": "Сохранить текущую конфигурацию в target.txt.",
"refresh_description": "Обновить список приложений и список исключений.",
"select_deselect": "Выбрать и отменить выбор всех",
"select_description": "Выбрать или отменить выбор всех приложений в текущем интерфейсе.",
"select_denylist_description": "Доступно только в Magisk, выберите приложения, которые находятся в DenyList. Рекомендуется.",
"deselect_unnecessary_description": "Ненужные категории: модули Xposed, менеджеры root, приложения, связанные с root, и общие приложения, которые никогда не проверяют статус загрузчика. Этот параметр требует подключения к интернету.",
"set_keybox": "Установить AOSP и действующий Keybox",
"set_aosp_keybox_description": "Замените tricky store keybox.xml. AOSP keybox будет заменен, если не будет найден действующий keybox. Опция с действующим keybox требует подключения к интернету.",
"set_verified_boot_hash_description": "Получите значение verifiedBootHash из Key Attestation Demo. Исправьте аномальное состояние загрузки, сбросив ro.boot.vbmeta.digest.",
"module_name_line1": "Tricky Addon",
"module_name_line2": "Обновить список целей",
"by": "от ",
"telegram_channel": "Канал в Telegram",
"github": "GitHub",
"disclaimer": "Этот WebUI не является частью Tricky Store, НЕ сообщайте автору Tricky Store о любых возникающих проблемах.",
"acknowledgment": "Благодарности",
"no_internet": "Пожалуйста, проверьте ваше подключение к интернету",
"aosp_key_set": "AOSP keybox успешно установлен",
"key_set_error": "Не удалось обновить keybox",
"valid_key_set": "Действующий keybox успешно установлен",
"no_valid_fallback": "Не найден действующий keybox, заменен на AOSP keybox.",
"boot_hash_set": "Verified Boot Hash успешно сохранен",
"boot_hash_set_error": "Не удалось обновить Verified Boot Hash",
"saved_target": "Конфигурация сохранена в target.txt",
"save_error": "Не удалось сохранить конфигурацию",
"uninstall_prompt": "WebUI будет удален после перезагрузки",
"uninstall_failed": "Не удалось удалить WebUI",
"new_update": "Доступно новое обновление!"
}

View File

@@ -0,0 +1,54 @@
{
"title": "Tricky Addon - I-update ang Target List",
"search_placeholder": "Maghanap",
"save_and_update_button": "I-save",
"boot_hash_save_button": "I-save",
"loading": "Naglo-load...",
"boot_hash_input_placeholder": "I-paste ang iyong verified Boot Hash dito",
"uninstall_webui": "I-uninstall ang WebUI",
"update_available": "Handa na ang bagong bersyon",
"redirect_to_release": "i-tap para i-download ang pinakabagong bersyon",
"refresh": "I-refresh",
"select_all": "Piliin Lahat",
"deselect_all": "Huwag Pumili ng Lahat",
"select_denylist": "Piliin mula sa DenyList",
"deselect_unnecessary": "Huwag Pumili ng Hindi Kinakailangan",
"set_aosp_keybox": "I-set ang AOSP Keybox",
"set_valid_keybox": "I-set ang Valid Keybox",
"set_verified_boot_hash": "I-set ang Verified Boot Hash",
"about": "Tungkol",
"help_instructions": "Mga Tagubilin",
"save_and_update_description": "I-save ang kasalukuyang configuration sa target.txt.",
"refresh_description": "I-refresh ang listahan ng apps at exclude list.",
"select_deselect": "Piliin & Huwag Pumili ng Lahat",
"select_description": "Piliin o huwag piliin ang lahat ng apps sa kasalukuyang interface.",
"select_denylist_description": "Available lang sa Magisk, piliin ang mga app na nasa DenyList. Inirerekomenda.",
"deselect_unnecessary_description": "Hindi kinakailangang kategorya: Xposed module, root manager, root-related apps, at mga karaniwang apps na hindi kailanman nire-refresh ang bootloader status. Nangangailangan ng koneksyon sa internet.",
"set_keybox": "I-set ang AOSP at Valid Keybox",
"set_aosp_keybox_description": "Palitan ang tricky store keybox.xml. Palitan ang AOSP keybox kung walang valid keybox. Nangangailangan ng koneksyon sa internet ang valid keybox option.",
"set_verified_boot_hash_description": "Kunin ang verifiedBootHash mula sa Key Attestation Demo. Ayusin ang abnormal na boot state sa pamamagitan ng pag-reset ng ro.boot.vbmeta.digest.",
"module_name_line1": "Tricky Addon",
"module_name_line2": "I-update ang Target List",
"by": "ni ",
"telegram_channel": "Telegram Channel",
"github": "GitHub",
"disclaimer": "Ang WebUI na ito ay hindi bahagi ng Tricky Store, HUWAG i-report sa may-akda ng Tricky Store kung makaranas ka ng anumang isyu.",
"acknowledgment": "Pagkilala",
"no_internet": "Pakitingnan ang iyong koneksyon sa Internet",
"aosp_key_set": "Matagumpay na na-set ang AOSP Keybox",
"key_set_error": "Nabigong i-update ang keybox",
"valid_key_set": "Matagumpay na na-set ang Valid Keybox",
"no_valid_fallback": "Walang valid na keybox na natagpuan, pinalitan ng AOSP keybox.",
"boot_hash_set": "Matagumpay na na-save ang Verified Boot Hash",
"boot_hash_set_error": "Nabigong i-update ang Verified Boot Hash",
"saved_target": "Na-save ang configuration sa target.txt",
"save_error": "Nabigong i-save ang config",
"uninstall_prompt": "Mawawala ang WebUI pagkatapos ng reboot",
"uninstall_failed": "Nabigong i-uninstall ang WebUI",
"new_update": "May bagong update na available!"
}

View File

@@ -0,0 +1,54 @@
{
"title": "TS插件 - 更新目标列表",
"search_placeholder": "搜索",
"save_and_update_button": "保存",
"boot_hash_save_button": "保存",
"loading": "加载中...",
"boot_hash_input_placeholder": "在此粘贴您的哈希值",
"uninstall_webui": "卸载 WebUI",
"update_available": "发现新的版本",
"redirect_to_release": "点击跳转 GitHub 下载最新版本",
"refresh": "刷新",
"select_all": "全选",
"deselect_all": "取消全选",
"select_denylist": "从排除列表中选择",
"deselect_unnecessary": "取消选择非必应用",
"set_aosp_keybox": "设置 AOSP 密钥",
"set_valid_keybox": "设置有效密钥",
"set_verified_boot_hash": "设置哈希值",
"about": "关于",
"help_instructions": "使用指南",
"save_and_update_description": "保存当前配置到目标列表target.txt。",
"refresh_description": "刷新应用列表和排除列表。",
"select_deselect": "全选 & 取消全选",
"select_description": "选择或取消选择当前界面中的所有应用。",
"select_denylist_description": "仅适用于 Magisk选择在排除列表中的应用。推荐使用。",
"deselect_unnecessary_description": "非必要分类Xposed 模块、root 管理器、与 root 相关的应用,以及从不检查 bootloader 状态的通用应用。此功能需连网使用。",
"set_keybox": "设置 AOSP & 有效密钥",
"set_aosp_keybox_description": "替换 Tricky Store 的密钥keybox.xml。如果没有有效密钥将替换为 AOSP 密钥。有效密钥选项需连网使用。",
"set_verified_boot_hash_description": "从 Key Attestation Demo 获取 verifiedBootHash哈希值。通过重置 ro.boot.vbmeta.digest 修复异常 boot 状态。",
"module_name_line1": "TS插件",
"module_name_line2": "更新目标列表",
"by": "作者:",
"telegram_channel": "TG频道",
"github": "GitHub",
"disclaimer": "此 WebUI 不是 Tricky Store 的一部分,遇到任何问题请勿向 Tricky Store 作者反馈。",
"acknowledgment": "特别鸣谢",
"no_internet": "请检查您的网络连接",
"aosp_key_set": "成功设置 AOSP 密钥",
"key_set_error": "更新密钥失败",
"valid_key_set": "成功设置有效密钥",
"no_valid_fallback": "未找到有效密钥,已替换为 AOSP 密钥。",
"boot_hash_set": "哈希值重置成功",
"boot_hash_set_error": "哈希值重置失败",
"saved_target": "成功保存配置",
"save_error": "保存配置失败",
"uninstall_prompt": "WebUI 将在重启后被移除",
"uninstall_failed": "卸载 WebUI 失败",
"new_update": "发现新的版本!"
}

View File

@@ -0,0 +1,54 @@
{
"title": "TS插件 - 更新目標列表",
"search_placeholder": "搜尋",
"save_and_update_button": "保存",
"boot_hash_save_button": "保存",
"loading": "加載中...",
"boot_hash_input_placeholder": "在此粘貼您的哈希值",
"uninstall_webui": "卸載 WebUI",
"update_available": "發現新的版本",
"redirect_to_release": "點擊跳轉至 GitHub 下載最新版本",
"refresh": "刷新",
"select_all": "全選",
"deselect_all": "取消全選",
"select_denylist": "從排除列表中選擇",
"deselect_unnecessary": "取消選擇非必應用",
"set_aosp_keybox": "設置 AOSP 密鑰",
"set_valid_keybox": "設置有效密鑰",
"set_verified_boot_hash": "設置哈希值",
"about": "關於",
"help_instructions": "使用指南",
"save_and_update_description": "保存當前配置到目標列表target.txt。",
"refresh_description": "刷新應用列表和排除列表。",
"select_deselect": "全選 & 取消全選",
"select_description": "選擇或取消選擇當前界面中的所有應用。",
"select_denylist_description": "僅適用於 Magisk選擇在排除列表中的應用。推薦使用。",
"deselect_unnecessary_description": "非必要分類Xposed 模塊、root 管理器、與 root 相關的應用,以及從不檢查 bootloader 狀態的通用應用。此功能需連網使用。",
"set_keybox": "設置 AOSP & 有效密鑰",
"set_aosp_keybox_description": "替換 Tricky Store 的密鑰keybox.xml。如果沒有有效密鑰將替換為 AOSP 密鑰。有效密鑰選項需連網使用。",
"set_verified_boot_hash_description": "從 Key Attestation Demo 獲取 verifiedBootHash哈希值。通過重置 ro.boot.vbmeta.digest 修復異常 boot 狀態。",
"module_name_line1": "TS插件",
"module_name_line2": "更新目標列表",
"by": "作者:",
"telegram_channel": "TG頻道",
"github": "GitHub",
"disclaimer": "此 WebUI 不是 Tricky Store 的一部分,遇到任何問題請勿向 Tricky Store 作者反饋。",
"acknowledgment": "特別鳴謝",
"no_internet": "請檢查您的網路連接",
"aosp_key_set": "成功設置 AOSP 密鑰",
"key_set_error": "更新密鑰失敗",
"valid_key_set": "成功設置有效密鑰",
"no_valid_fallback": "未找到有效密鑰,已替換為 AOSP 密鑰。",
"boot_hash_set": "哈希值重置成功",
"boot_hash_set_error": "哈希值重置失敗",
"saved_target": "成功保存配置",
"save_error": "保存配置失敗",
"uninstall_prompt": "WebUI 將在重啟後被移除",
"uninstall_failed": "卸載 WebUI 失敗",
"new_update": "發現新的版本!"
}

View File

@@ -1,58 +1,426 @@
body {
background-color: #F5F5F5;
padding-top: var(--window-inset-top);
padding-bottom: var(--window-inset-bottom);
}
.no-scroll {
overflow: hidden;
}
.header {
display: flex;
align-items: center;
justify-content: space-between;
position: fixed;
top: 0;
height: 40px;
width: calc(100% - 10px);
max-width: 1100px;
background-color: #F5F5F5;
transition: transform 0.3s ease;
z-index: 1100;
margin-left: auto;
margin-right: auto;
left: 0;
right: 0;
}
.header-block {
background-color: #F5F5F5;
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
z-index: 1100;
transition: transform 0.3s ease;
height: var(--window-inset-top);
}
#title {
background-color: #F5F5F5;
border: none;
font-size: 18px;
padding-left: 5px;
font-size: 16.5px;
font-weight: bold;
left: 0;
padding: 10px 25px;
position: fixed;
text-align: left;
top: 0;
transition: transform 0.3s ease;
width: 100%;
z-index: 1000;
}
#apps-list {
margin-top: 100px;
.no-connection {
padding-bottom: 2px;
display: none;
position: relative;
margin-right: 0px;
color: #7E7E7E;
}
.no-connection .wifi-icon {
width: 22px;
height: 22px;
filter: invert(0.6) sepia(0) saturate(0) hue-rotate(180deg) brightness(0.8) contrast(1);
}
.language-dropdown {
position: relative;
display: inline-block;
}
.language-button {
background: none;
border: none;
font-size: 23px;
color: #333;
}
.language-menu {
display: flex;
padding: 3px 10px;
flex-direction: column;
position: absolute;
right: 0;
background-color: #fff;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
z-index: 1800;
border: 1px solid #ccc;
border-radius: 8px;
opacity: 0;
visibility: hidden;
max-height: calc(100vh - 50px);
overflow-y: auto;
transform: translateY(-10px);
transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s ease;
}
.language-menu.show {
display: block;
opacity: 1;
visibility: visible;
transform: translateY(0);
}
.language-option {
padding: 8px 5px;
text-align: left;
background: none;
border: none;
font-size: 16px;
color: #333;
width: 100%;
white-space: nowrap;
border-bottom: 1px solid #ccc;
transition: background-color 0.2s ease;
}
.language-option:last-child {
border-bottom: none;
}
.language-overlay {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
background-color: none;
z-index: 1100;
display: none;
}
.help-button {
margin-right: auto;
background: none;
border: none;
font-size: 22px;
align-items: center;
justify-content: center;
}
.help-overlay {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
background-color: rgba(0, 0, 0, 0.5);
z-index: 2000;
justify-content: center;
align-items: center;
opacity: 0;
transition: opacity 0.2s ease;
}
.help-overlay.show {
display: flex;
opacity: 1;
}
.help-overlay.hide {
opacity: 0;
}
.help-menu {
position: relative;
width: 75vw;
max-width: 800px;
background-color: white;
padding: 0 10px;
border-radius: 15px;
text-align: left;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
}
.close-help {
position: absolute;
top: 15px;
right: 12px;
background: none;
border: none;
font-size: 20px;
color: #ccc;
}
.help-content {
max-height: 85vh;
padding: 0 20px;
overflow-y: auto;
}
.help-content p {
font-size: 26px;
}
.help-content ul {
padding-left: 0;
list-style-type: none;
}
.help-content ul li {
font-weight: bold;
font-size: 18px;
}
.help-content ul ul li {
font-weight: normal;
font-size: 16px;
}
.help-content ul ul ul li {
color: #777777;
font-weight: normal;
font-size: 14px;
}
.help-content ul ul ul li a {
color: inherit;
}
.boot-hash-overlay {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
background-color: rgba(0, 0, 0, 0.5);
z-index: 1200;
justify-content: center;
align-items: center;
opacity: 0;
visibility: hidden;
transition: opacity 0.2s ease, visibility 0.2s ease;
}
.boot-hash-card {
position: fixed;
top: 30%;
left: 50%;
transform: translate(-50%, -50%);
width: 80vw;
max-width: 600px;
background-color: #fff;
border-radius: 18px;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.2);
z-index: 1200;
padding: 20px;
display: none;
flex-direction: column;
gap: 15px;
opacity: 0;
transition: opacity 0.2s ease;
}
.boot-hash-overlay.show {
visibility: visible;
opacity: 1;
}
.boot-hash-card.show {
display: flex;
opacity: 1;
}
.input-box {
width: calc(100% - 20px);
height: 100px;
resize: none;
padding: 9px;
font-size: 16px;
background-color: #FFF;
border: 1px solid #ccc;
border-radius: 10px;
}
.button-container {
display: flex;
justify-content: flex-start;
}
.boot-hash-save-button {
padding: 10px 20px;
border: none;
border-radius: 38px;
font-size: 18px;
font-weight: bold;
background-color: #007bff;
color: white;
margin-left: auto;
transition: background-color 0.2s ease;
}
.about-overlay {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
background-color: rgba(0, 0, 0, 0.5);
z-index: 1100;
display: none;
justify-content: center;
align-items: center;
opacity: 0;
transition: opacity 0.2s ease;
}
.about-menu {
position: fixed;
top: 50%;
left: 50%;
width: 75vw;
max-width: 800px;
transform: translate(-50%, -50%);
background: #fff;
border-radius: 8px;
padding: 25px 30px;
z-index: 1200;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.2);
z-index: 1200;
opacity: 0;
display: flex;
flex-direction: column;
gap: 15px;
transition: opacity 0.2s ease;
}
.close-about {
position: absolute;
top: 15px;
right: 12px;
background: none;
border: none;
font-size: 18px;
color: #ccc;
}
.about-content p {
margin: 0;
font-size: 16px;
text-align: left;
}
.about-content p[data-i18n="module_name_line1"] {
font-size: 26px;
}
.about-content p[data-i18n="module_name_line2"] {
font-size: 22px;
}
.about-content p span[data-i18n="by"] {
font-size: 14px;
}
.about-content p span[data-i18n="telegram_channel"] {
font-weight: bold;
}
.about-content p span[data-i18n="github"] {
font-weight: bold;
}
.about-content p[data-i18n="disclaimer"] {
font-style: italic;
}
.about-content p[data-i18n="acknowledgment"] {
font-weight: bold;
font-size: 18px;
}
.about-content p:not([data-i18n]) {
font-size: 16px;
}
.search-menu-container {
display: flex;
position: fixed;
top: 40px;
height: 50px;
width: calc(100% - 20px);
max-width: 1100px;
z-index: 1000;
transition: transform 0.3s ease;
margin-left: auto;
margin-right: auto;
left: 0;
right: 0;
}
.search-card {
background-color: white;
border: 1px solid #ccc;
border-radius: 25px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
display: flex;
align-items: center;
padding: 10px;
position: fixed;
top: 40px;
transition: transform 0.3s ease;
width: calc(100% - 100px);
border-radius: 50px;
left: 0;
height: calc(100% - 2px);
width: calc(100% - 60px);
position: absolute;
}
.search-icon {
position: absolute;
left: 18px;
font-size: 15px;
z-index: 1000;
}
.search-input {
background-color: #fff;
position: absolute;
border: none;
box-sizing: border-box;
font-size: 14px;
font-size: 17px;
outline: none;
padding: 5px 15px;
text-align: left;
width: 100%;
left: 10px;
padding: 0 30px;
width: calc(100% - 10);
}
.clear-btn {
position: absolute;
color: #ccc;
padding-bottom: 3px;
right: 10px;
border: none;
background: none;
color: #ccc;
font-size: 18px;
cursor: pointer;
display: none;
@@ -61,11 +429,9 @@ body {
.menu {
display: flex;
position: fixed;
top: 40px;
right: 10px;
z-index: 1000;
transition: transform 0.3s ease;
right: 0;
position: absolute;
height: 100%;
}
.menu-toggle {
@@ -75,17 +441,17 @@ body {
#menu-button {
background-color: white;
border: 1px solid #ccc;
border-radius: 25px;
border-radius: 50%;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
padding: 13px 17px;
text-align: center;
position: relative;
z-index: 1000;
width: 48px;
display: flex;
justify-content: center;
align-items: center;
}
.menu-icon {
display: inline-block;
transition: transform 0.3s ease;
transition: transform 0.2s ease;
}
.menu-icon.menu-open {
@@ -103,14 +469,22 @@ body {
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
display: none;
position: absolute;
padding: 5px 12px;
top: 110%;
right: 0;
z-index: 1200;
transform: translateX(120%);
transition: transform 0.3s ease;
transition: transform 0.2s ease;
width: auto;
max-height: calc(100vh - 120px);
overflow-y: auto;
white-space: nowrap;
}
#select-denylist {
display: none;
}
.menu-options.visible {
display: block;
transform: translateX(0);
@@ -127,18 +501,79 @@ body {
}
.menu-options li {
cursor: pointer;
padding: 15px 18px;
cursor: default;
padding: 12px 4px;
text-align: left;
border-bottom: 1px solid #ccc;
transition: background-color 0.2s ease;
}
.menu-options li:last-child {
border-bottom: none;
}
.menu-overlay {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
background-color: none;
z-index: 1000;
display: none;
}
.card-box {
display: flex;
justify-content: center;
align-items: center;
}
#apps-list {
margin-top: 100px;
flex-direction: column;
}
.update-card {
display: none;
flex-direction: column;
justify-content: space-between;
align-items: center;
background-color: #DCDCDC;
border: none;
border-radius: 10px;
margin: 0 auto;
margin-bottom: 10px;
outline: none;
padding: 12px;
width: calc(100% - 30px);
max-width: 900px;
transition: background-color 0.2s ease;
}
#update-available {
font-size: 20px;
font-weight: bold;
margin-top: 15px;
margin-bottom: 0;
}
#redirect-to-release {
margin-top: 5px;
margin-bottom: 15px;
}
.card {
background-color: white;
border: none;
border-radius: 8px;
border-radius: 10px;
margin: 0 auto;
margin-bottom: 10px;
outline: none;
padding: 15px;
padding: 12px;
width: calc(100% - 30px);
max-width: 900px;
transition: background-color 0.2s ease;
}
.content {
@@ -150,6 +585,7 @@ body {
.name {
display: inline-block;
margin: 0;
font-size: 15.5px;
max-width: calc(100% - 30px);
overflow-wrap: break-word;
word-break: break-word;
@@ -157,6 +593,7 @@ body {
.checkbox {
margin-left: auto;
transform: scale(1.15);
}
.prompt {
@@ -169,7 +606,7 @@ body {
color: white;
font-size: 15px;
padding: 5px 15px;
z-index: 1000;
z-index: 2000;
transform: translateY(100%);
transition: transform 0.5s ease;
white-space: nowrap;
@@ -191,9 +628,11 @@ body {
0% {
transform: translateY(100%);
}
50% {
transform: translateY(-80%);
}
100% {
transform: translateY(-60%);
}
@@ -203,9 +642,11 @@ body {
0% {
transform: translateY(-60%);
}
50% {
transform: translateY(-80%);
}
100% {
transform: translateY(100%);
}
@@ -215,40 +656,101 @@ body {
display: flex;
justify-content: center;
position: fixed;
bottom: -50px;
bottom: -70px;
left: 50%;
transform: translateX(-50%);
z-index: 3;
}
.floating-btn {
flex-shrink: 0;
background-color: #007bff;
border: none;
border-radius: 24px;
box-shadow: 0 4px 8px #0003;
color: #fff;
display: flex;
justify-content: center;
align-items: center;
padding: 10px 20px;
font-size: 16px;
transition: transform 0.3s ease-in-out;
font-size: 20px;
font-weight: bold;
transition: transform 0.3s ease-in-out, background-color 0.2s ease;
border-top-left-radius: 50px;
border-top-right-radius: 50px;
border-bottom-left-radius: 50px;
border-bottom-right-radius: 50px;
}
.loading {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
color: #6E6E6E;
display: flex;
justify-content: center;
align-items: center;
height: calc(100vh - 164px);
font-size: 24px;
z-index: 1000;
}
.acknowledgment {
color: #6E6E6E;
padding: 20px;
text-align: center;
font-size: 14px;
.footer {
display: flex;
justify-content: space-between;
align-items: center;
width: calc(100% - 10px);
max-width: 1100px;
padding: 25px 0;
position: relative;
margin-left: auto;
margin-right: auto;
}
.uninstall-container {
padding: 10px 10px;
position: absolute;
right: 0;
top: 50%;
transform: translateY(-50%);
display: flex;
align-items: center;
border-radius: 8px;
background-color: #CE0000;
white-space: nowrap;
transition: background-color 0.2s ease;
}
.uninstall-container i {
margin-right: 5px;
font-size: 18px;
color: #fff;
}
.uninstall-container span {
font-size: 16px;
font-weight: bold;
color: #fff;
}
.uninstall-container.hidden-uninstall {
display: none;
}
.language-option:active,
.menu-options li:active,
.card:active,
.update-card:active {
background-color: #C8C8C8;
}
.boot-hash-save-button:active,
.floating-btn:active {
background-color: #003d80;
}
.uninstall-container:active {
background-color: #830000;
}
@media (prefers-color-scheme: dark) {
@@ -256,28 +758,57 @@ body {
background-color: #121212;
color: #eee;
}
#title {
.header-block,
.header {
background-color: #121212;
}
.language-button,
.language-option,
.input-box,
.help-button {
color: #fff;
}
.help-menu,
.about-menu,
.boot-hash-card,
.card,
.search-input,
.search-card {
background-color: #343434;
}
.update-card {
background-color: #4D4D4D;
}
.search-card {
border: 1px solid #6E6E6E;
}
.search-input{
.search-input {
color: white;
}
.language-menu,
.input-box,
.menu-options,
#menu-button {
background-color: #343434;
border: 1px solid #6E6E6E;
}
.language-option,
.menu-options li {
border-bottom: 1px solid #6E6E6E;
}
.language-option:active,
.menu-options li:active,
.card:active,
.update-card:active {
background-color: #616161;
}
}

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M6.92,5.51h0L3.71,2.29A1,1,0,0,0,2.29,3.71L4.56,6A15.21,15.21,0,0,0,1.4,8.39a1,1,0,0,0,0,1.41,1,1,0,0,0,.71.3,1,1,0,0,0,.7-.29A13.07,13.07,0,0,1,6.05,7.46L7.54,9a10.78,10.78,0,0,0-3.32,2.27,1,1,0,1,0,1.42,1.4,8.8,8.8,0,0,1,3.45-2.12l1.62,1.61a7.07,7.07,0,0,0-3.66,1.94,1,1,0,1,0,1.42,1.4A5,5,0,0,1,12,14a4.13,4.13,0,0,1,.63.05l7.66,7.66a1,1,0,0,0,1.42,0,1,1,0,0,0,0-1.42ZM12,16a3,3,0,1,0,3,3A3,3,0,0,0,12,16Zm0,4a1,1,0,1,1,1-1A1,1,0,0,1,12,20ZM22.61,8.39A15,15,0,0,0,10.29,4.1a1,1,0,1,0,.22,2A13.07,13.07,0,0,1,21.2,9.81a1,1,0,0,0,1.41-1.42Zm-4.25,4.24a1,1,0,0,0,1.42-1.4,10.75,10.75,0,0,0-4.84-2.82,1,1,0,1,0-.52,1.92A8.94,8.94,0,0,1,18.36,12.63Z"/></svg>

After

Width:  |  Height:  |  Size: 725 B

132
more-excldue.json Normal file
View File

@@ -0,0 +1,132 @@
{
"description": "Unnecessary app list",
"repo-link": "https://github.com/KOWX712/Tricky-Addon-Update-Target-List",
"json-link": "https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/more-excldue.json",
"data": [
{
"info": "Root manager",
"apps": [
{
"name": "Magisk",
"package-name": "com.topjohnwu.magisk"
},
{
"name": "Magisk Alpha",
"package-name": "io.github.vvb2060.magisk"
},
{
"name": "Kitsune Mask",
"package-name": "io.github.huskydg.magisk"
},
{
"name": "KernelSU",
"package-name": "me.weishu.kernelsu"
},
{
"name": "Apatch",
"package-name": "me.bmax.apatch"
},
{
"name": "Apatch Next",
"package-name": "me.garfieldhan.apatch.next"
}
]
},
{
"info": "Root related app that won't detect bootloader",
"apps": [
{
"name": "LSPosed Manager",
"package-name": "org.lsposed.manager"
},
{
"name": "Termux",
"package-name": "com.termux"
},
{
"name": "MT Manager",
"package-name": "bin.mt.plus"
},
{
"name": "MT Manager clone",
"package-name": "bin.mt.plus.canary"
},
{
"name": "KonaBess",
"package-name": "xzr.konabess"
},
{
"name": "KSUWebUI",
"package-name": "io.github.a13e300.ksuwebui"
},
{
"name": "Shizuku",
"package-name": "moe.shizuku.privileged.api"
},
{
"name": "MMRL",
"package-name": "com.dergoogler.mmrl"
}
]
},
{
"info": "General app that won't detect bootloader",
"apps": [
{
"name": "Swift Backup",
"package-name": "org.swiftapps.swiftbackup"
},
{
"name": "Google Docs",
"package-name": "com.google.android.apps.docs.editors.docs"
},
{
"name": "Google Sheets",
"package-name": "com.google.android.apps.docs.editors.sheets"
},
{
"name": "Google Slides",
"package-name": "com.google.android.apps.docs.editors.slides"
},
{
"name": "Keep Notes",
"package-name": "com.google.android.keep"
},
{
"name": "Google Maps",
"package-name": "com.google.android.apps.maps"
},
{
"name": "Google Earth",
"package-name": "com.google.earth"
},
{
"name": "Google Translate",
"package-name": "com.google.android.apps.translate"
},
{
"name": "Chrome",
"package-name": "com.android.chrome"
},
{
"name": "YouTube",
"package-name": "com.google.android.youtube"
},
{
"name": "YouTube Music",
"package-name": "com.google.android.apps.youtube.music"
},
{
"name": "Speedtest",
"package-name": "org.zwanoo.android.speedtest"
}
]
}
],
"Add more app into this list?": [
{
"issue": "https://github.com/KOWX712/Tricky-Addon-Update-Target-List/issues",
"pull-request": "https://github.com/KOWX712/Tricky-Addon-Update-Target-List/pulls"
}
]
}

View File

@@ -1,6 +1,6 @@
{
"versionCode": 200,
"version": "v2.0",
"zipUrl": "https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/download/v2.0/TrickyAddonModule-v2.0.zip",
"changelog": "https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/refs/heads/master/changelog.md"
}
"versionCode": 270,
"version": "v2.7",
"zipUrl": "https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/download/v2.7/TrickyAddonModule-v2.7.zip",
"changelog": "https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/changelog.md"
}