You've already forked Tricky-Addon-Update-Target-List
mirror of
https://github.com/KOWX712/Tricky-Addon-Update-Target-List.git
synced 2025-09-06 06:37:09 +00:00
Compare commits
20 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cfb51e28fb | ||
|
|
6bdfff7f92 | ||
|
|
4146f09062 | ||
|
|
d223b39e29 | ||
|
|
6bf5009cb8 | ||
|
|
22bdb3986a | ||
|
|
2a04b7426d | ||
|
|
a03b785323 | ||
|
|
d307c57171 | ||
|
|
c6339f4e5d | ||
|
|
4c9e56c1db | ||
|
|
9302d39910 | ||
|
|
06d2edf57f | ||
|
|
ff6244b140 | ||
|
|
dfe4a23f8a | ||
|
|
5dd1496ca7 | ||
|
|
8c831cea39 | ||
|
|
42a8f6baae | ||
|
|
befa011c15 | ||
|
|
f576b4bb2f |
27
README.md
27
README.md
@@ -1,8 +1,11 @@
|
|||||||
# Tricky Addon - Update Target List
|
# Tricky Addon - Update Target List
|
||||||
Configure Tricky Store target.txt with KSU WebUI.
|
Configure Tricky Store target.txt with KSU WebUI.
|
||||||
|
|
||||||
> [!NOTE]
|
[](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/latest)
|
||||||
> _This module is **not** a part of the Tricky Store module. DO NOT report any issues to Tricky Store if encountered._
|
[](https://nightly.link/KOWX712/Tricky-Addon-Update-Target-List/workflows/build/main?status=completed)
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> This module is **not** a part of the Tricky Store module. DO NOT report any issues to Tricky Store if encountered.
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
- [Tricky store](https://github.com/5ec1cff/TrickyStore) module installed
|
- [Tricky store](https://github.com/5ec1cff/TrickyStore) module installed
|
||||||
@@ -16,17 +19,12 @@ Configure Tricky Store target.txt with KSU WebUI.
|
|||||||
- Support KSUWebUIStandalone and latest MMRL
|
- Support KSUWebUIStandalone and latest MMRL
|
||||||
- Automatic install [KSUWebUIStandalone](https://github.com/5ec1cff/KsuWebUIStandalone) if none of them are installed.
|
- Automatic install [KSUWebUIStandalone](https://github.com/5ec1cff/KsuWebUIStandalone) if none of them are installed.
|
||||||
|
|
||||||
### 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> |
|
|
||||||
|
|
||||||
### What Can This Module Do
|
### What Can This Module Do
|
||||||
| Feature | Status |
|
| Feature | Status |
|
||||||
|:---|:---:|
|
|:---|:---:|
|
||||||
| Configure target.txt with app name display | ✅ |
|
| Configure target.txt with app name display | ✅ |
|
||||||
| Select apps from Magisk DenyList (optional) | ✅ |
|
| Select apps from Magisk DenyList (optional) | ✅ |
|
||||||
|
| Deselect [unnecessary apps](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/blob/main/more-excldue.json) (optional) | ✅ |
|
||||||
| Set verifiedBootHash (optional) | ✅ |
|
| Set verifiedBootHash (optional) | ✅ |
|
||||||
| Provide AOSP Keybox (optional) | ✅ |
|
| Provide AOSP Keybox (optional) | ✅ |
|
||||||
| Valid Keybox (not guaranteed) | ❌ |
|
| Valid Keybox (not guaranteed) | ❌ |
|
||||||
@@ -35,15 +33,14 @@ Configure Tricky Store target.txt with KSU WebUI.
|
|||||||
| Periodically update target and add new apps | ❌ |
|
| Periodically update target and add new apps | ❌ |
|
||||||
| Add system apps (GMS added by default) | ❌ |
|
| Add system apps (GMS added by default) | ❌ |
|
||||||
|
|
||||||
## Translation
|
## Localization
|
||||||
- Read [Translation Guide](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/blob/main/module/webroot/locales/A-translate.md)
|
- Read [Translation Guide](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/blob/main/module/webui/locales/A-translate.md)
|
||||||
|
|
||||||
## Acknowledgement
|
## Acknowledgement
|
||||||
- [j-hc/zygisk-detach](https://github.com/j-hc/zygisk-detach) - KSU WebUI template
|
- [j-hc/zygisk-detach](https://github.com/j-hc/zygisk-detach) - KSU WebUI template
|
||||||
|
|
||||||
## Links
|
## Links
|
||||||
Download: [GitHub release](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases)
|
[](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases)
|
||||||
|
[](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/issues)
|
||||||
Update history: Read [Changelog](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/blob/main/changelog.md)
|
[](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/blob/main/changelog.md)
|
||||||
|
[](https://t.me/kowchannel)
|
||||||
Telegram channel: [KOW's Little World](https://t.me/kowchannel)
|
|
||||||
|
|||||||
10
changelog.md
10
changelog.md
@@ -8,6 +8,14 @@ GitHub release: [Tricky Addon: Update Target List](https://github.com/KOWX712/Tr
|
|||||||
Telegram channel: [KOW's Little World](https://t.me/kowchannel)
|
Telegram channel: [KOW's Little World](https://t.me/kowchannel)
|
||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
### v2.8
|
||||||
|
- Fixed all KSUWebUIStandalone freeze issue, removed visible option.
|
||||||
|
- Reduced WebUI loading time.
|
||||||
|
- Added Japanese. Thanks to @reindex-ot.
|
||||||
|
|
||||||
|
### v2.7.1
|
||||||
|
- Link redirect quick fix
|
||||||
|
|
||||||
### v2.7
|
### v2.7
|
||||||
- Abandoned `UpdateTargetList.sh`; No longer automatically update target on boot.
|
- 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.
|
- Adapted with MMRL, Magisk user can uninstall KSUWebUIStandalone if you have latest MMRL installed, action button will redirect to MMRL if KSUWebUIStandalone not found.
|
||||||
@@ -24,7 +32,7 @@ Telegram channel: [KOW's Little World](https://t.me/kowchannel)
|
|||||||
- 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.
|
- 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**
|
- **Initial support for multiple languages**
|
||||||
- Language available: **en-US**, **ru-RU**, **tl-PH**, **zh-CN**, **zh-TW**
|
- 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).
|
- Add language or fix translation error? [Read here](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/tree/master/module/webui/locales/A-translate.md).
|
||||||
|
|
||||||
### v2.6-beta.3
|
### v2.6-beta.3
|
||||||
- Check in [release notes](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/tag/v2.6-beta.3).
|
- Check in [release notes](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/tag/v2.6-beta.3).
|
||||||
|
|||||||
@@ -4,7 +4,10 @@
|
|||||||
- Recommend to run with MT manager
|
- Recommend to run with MT manager
|
||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
### v2.1, v2.2, v2.3, v2.4, v2.5, v2.6
|
### v2.8
|
||||||
|
- Remove wait time
|
||||||
|
|
||||||
|
### v2.1~2.7.1
|
||||||
- Remain same with v2.0
|
- Remain same with v2.0
|
||||||
|
|
||||||
### v2.0
|
### v2.0
|
||||||
@@ -31,7 +34,6 @@
|
|||||||
- Synched some code with module script
|
- Synched some code with module script
|
||||||
|
|
||||||
## Link
|
## Link
|
||||||
[Telegram channel](https://t.me/kowchannel)
|
[](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases)
|
||||||
|
[](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/issues)
|
||||||
[GitHub Release](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/latest)
|
[](https://t.me/kowchannel)
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# Tricky Addon Lite: Update Target List Script v2.5
|
# Tricky Addon Lite: Update Target List Script v2.8
|
||||||
# GitHub Repository: https://github.com/KOWX712/Tricky-Addon-Update-Target-List/blob/master/lite-script_only/README.md
|
# GitHub Repository: https://github.com/KOWX712/Tricky-Addon-Update-Target-List/tree/main/lite-script_only
|
||||||
# Telegram channel: https://t.me/kowchannel
|
# Telegram channel: https://t.me/kowchannel
|
||||||
|
|
||||||
# This script will put all non-system app into /data/adb/tricky_store/target.txt
|
# This script will put all non-system app into /data/adb/tricky_store/target.txt
|
||||||
|
|
||||||
###################################################
|
###################################################
|
||||||
# Configurable exclude and addition list
|
# Configurable exclude and addition list
|
||||||
# DO NOT remove default package names here
|
# Don't remove default package names here
|
||||||
###################################################
|
###################################################
|
||||||
|
|
||||||
EXCLUDE="
|
EXCLUDE="
|
||||||
@@ -39,7 +39,6 @@ ADDITION=$(echo "$ADDITION" | tr '\n' ' ' | sed 's/^ //;s/ $//')
|
|||||||
|
|
||||||
# Add all non-system apps to the target file and remove exclusions
|
# Add all non-system apps to the target file and remove exclusions
|
||||||
su -c pm list packages -3 </dev/null 2>&1 | cat | awk -F: '{print $2}' | grep -Ev "$EXCLUDE" > /data/adb/tricky_store/target.txt
|
su -c pm list packages -3 </dev/null 2>&1 | cat | awk -F: '{print $2}' | grep -Ev "$EXCLUDE" > /data/adb/tricky_store/target.txt
|
||||||
sleep 1
|
|
||||||
|
|
||||||
# Add additional apps to the target file if they are not already present
|
# Add additional apps to the target file if they are not already present
|
||||||
for app in $ADDITION; do
|
for app in $ADDITION; do
|
||||||
|
|||||||
@@ -5,16 +5,68 @@
|
|||||||
MODPATH="/data/adb/modules/.TA_utl"
|
MODPATH="/data/adb/modules/.TA_utl"
|
||||||
COMPATH="$MODPATH/common"
|
COMPATH="$MODPATH/common"
|
||||||
SCRIPT_DIR="/data/adb/tricky_store"
|
SCRIPT_DIR="/data/adb/tricky_store"
|
||||||
|
URL="https://github.com/5ec1cff/KsuWebUIStandalone/releases/download/v1.0/KsuWebUI-1.0-34-release.apk"
|
||||||
|
APK_DIR="$COMPATH/tmp"
|
||||||
|
BBPATH="/data/adb/magisk/busybox \
|
||||||
|
/data/adb/ksu/bin/busybox \
|
||||||
|
/data/adb/ap/bin/busybox \
|
||||||
|
/data/adb/modules/busybox-ndk/system/*/busybox"
|
||||||
|
|
||||||
. "$COMPATH/util_func.sh"
|
check_wget() {
|
||||||
|
for path in $BBPATH; do
|
||||||
|
[ -f "$path" ] && BUSYBOX="$path" && break
|
||||||
|
done
|
||||||
|
if ! command -v wget >/dev/null || grep -q "wget-curl" "$(command -v wget)"; then
|
||||||
|
if [ -n "$BUSYBOX" ]; then
|
||||||
|
wget() { "$BUSYBOX" wget "$@"; }
|
||||||
|
else
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
if pm list packages | grep -q "$PACKAGE_NAME"; then
|
get_webui() {
|
||||||
echo "- Launching KSU WebUI..."
|
echo "- Downloading the WebUI APK..."
|
||||||
am start -n "${PACKAGE_NAME}/.WebUIActivity" -e id "$MODID"
|
check_wget
|
||||||
|
if ! wget --no-check-certificate -P "$APK_DIR" "$URL"; then
|
||||||
|
echo "! Error: APK download failed."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
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..."
|
||||||
|
if ! pm install -r "$APK_PATH" >/dev/null 2>&1; then
|
||||||
|
echo "! Error: APK installation failed."
|
||||||
|
rm -f "$APK_PATH"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "- Done."
|
||||||
|
rm -f "$APK_PATH"
|
||||||
|
|
||||||
|
echo "- Launching..."
|
||||||
|
if ! am start -n "io.github.a13e300.ksuwebui/.WebUIActivity" -e id "tricky_store"; then
|
||||||
|
echo "! Error: WebUI launch failed."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "- Application launched successfully."
|
||||||
|
}
|
||||||
|
|
||||||
|
# Lunch KSUWebUI standalone or MMRL, install KSUWebUI standalone if both are not installed
|
||||||
|
if pm list packages | grep -q "io.github.a13e300.ksuwebui"; then
|
||||||
|
echo "- Launching WebUI in KSUWebUIStandalone..."
|
||||||
|
am start -n "io.github.a13e300.ksuwebui/.WebUIActivity" -e id "tricky_store"
|
||||||
elif pm list packages | grep -q "com.dergoogler.mmrl"; then
|
elif pm list packages | grep -q "com.dergoogler.mmrl"; then
|
||||||
echo "- Launching KSU WebUI..."
|
echo "- Launching WebUI in MMRL WebUI..."
|
||||||
am start -n "com.dergoogler.mmrl/.ui.activity.webui.WebUIActivity" -e MOD_ID "$MODID"
|
am start -n "com.dergoogler.mmrl/.ui.activity.webui.WebUIActivity" -e MOD_ID "tricky_store"
|
||||||
else
|
else
|
||||||
echo "- Installing KSU WebUI..."
|
echo "- Installing KSU WebUI..."
|
||||||
. "$COMPATH/get_WebUI.sh"
|
get_webui
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,27 +0,0 @@
|
|||||||
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."
|
|
||||||
@@ -1,49 +1,71 @@
|
|||||||
#!/system/bin/sh
|
#!/system/bin/sh
|
||||||
|
|
||||||
MODPATH=${0%/*}
|
MODPATH=${0%/*}
|
||||||
SKIPLIST="$MODPATH/skiplist"
|
SKIPLIST="$MODPATH/tmp/skiplist"
|
||||||
OUTPUT="$MODPATH/exclude-list"
|
OUTPUT="$MODPATH/tmp/exclude-list"
|
||||||
KBOUTPUT="$MODPATH/.extra"
|
KBOUTPUT="$MODPATH/tmp/.extra"
|
||||||
|
BBPATH="/data/adb/magisk/busybox \
|
||||||
|
/data/adb/ksu/bin/busybox \
|
||||||
|
/data/adb/ap/bin/busybox \
|
||||||
|
/data/adb/modules/busybox-ndk/system/*/busybox"
|
||||||
|
|
||||||
. $MODPATH/util_func.sh
|
check_wget() {
|
||||||
|
for path in $BBPATH; do
|
||||||
find_busybox
|
[ -f "$path" ] && BUSYBOX="$path" && break
|
||||||
check_wget
|
done
|
||||||
|
if ! command -v wget >/dev/null || grep -q "wget-curl" "$(command -v wget)"; then
|
||||||
# Fetch additional package names
|
if [ -n "$BUSYBOX" ]; then
|
||||||
wget --no-check-certificate -q -O - "https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/more-excldue.json" 2>/dev/null | \
|
wget() { "$BUSYBOX" wget "$@"; }
|
||||||
grep -o '"package-name": *"[^"]*"' | \
|
else
|
||||||
awk -F'"' '{print $4}' > "$OUTPUT"
|
exit 1
|
||||||
|
fi
|
||||||
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
|
fi
|
||||||
done
|
}
|
||||||
|
|
||||||
if [ "$skipfetch" != "true" ]; then
|
aapt() { "$MODPATH/aapt" "$@"; }
|
||||||
|
|
||||||
|
get_kb() {
|
||||||
|
check_wget
|
||||||
wget --no-check-certificate -qO "$KBOUTPUT" "https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/.extra"
|
wget --no-check-certificate -qO "$KBOUTPUT" "https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/.extra"
|
||||||
|
[ -s "$KBOUTPUT" ] || rm -f "$KBOUTPUT"
|
||||||
|
}
|
||||||
|
|
||||||
if [ ! -s "$KBOUTPUT" ]; then
|
get_unnecessary() {
|
||||||
rm -f "$KBOUTPUT"
|
check_wget
|
||||||
|
if [ ! -s "$OUTPUT" ] || [ ! -f "$OUTPUT" ]; then
|
||||||
|
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"
|
||||||
fi
|
fi
|
||||||
|
get_xposed
|
||||||
|
}
|
||||||
|
|
||||||
if [ -d "$MODPATH/temp" ]; then
|
get_xposed() {
|
||||||
JSON=$(wget --no-check-certificate -q -O - "https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/update.json")
|
pm list packages -3 | cut -d':' -f2 | grep -vxF -f "$SKIPLIST" | grep -vxF -f "$OUTPUT" | while read -r PACKAGE; do
|
||||||
|
APK_PATH=$(pm path "$PACKAGE" | grep "base.apk" | cut -d':' -f2 | tr -d '\r')
|
||||||
|
if [[ -n "$APK_PATH" ]]; then
|
||||||
|
if aapt dump xmltree "$APK_PATH" AndroidManifest.xml 2>/dev/null | grep -qE "xposed.category|xposeddescription"; then
|
||||||
|
echo "$PACKAGE" >> "$OUTPUT"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
check_update() {
|
||||||
|
check_wget
|
||||||
|
if [ -d "$MODPATH/update" ]; then
|
||||||
|
JSON=$(wget --no-check-certificate -q -O - "https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/update.json") || exit 1
|
||||||
REMOTE_VERSION=$(echo "$JSON" | grep -o '"versionCode": *[0-9]*' | awk -F: '{print $2}' | tr -d ' ')
|
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}')
|
LOCAL_VERSION=$(grep -o 'versionCode=[0-9]*' "$MODPATH/update/module.prop" | awk -F= '{print $2}')
|
||||||
if [ "$REMOTE_VERSION" -gt "$LOCAL_VERSION" ]; then
|
if [ "$REMOTE_VERSION" -gt "$LOCAL_VERSION" ]; then
|
||||||
echo "update"
|
echo "update"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
else
|
}
|
||||||
exit 1
|
|
||||||
fi
|
case "$1" in
|
||||||
|
--kb) get_kb; exit ;;
|
||||||
|
--unnecessary) get_unnecessary; exit ;;
|
||||||
|
--xposed) get_xposed; exit ;;
|
||||||
|
--update) check_update; exit ;;
|
||||||
|
esac
|
||||||
11
module/common/repo.json
Normal file
11
module/common/repo.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"support": "https://github.com/KOWX712/Tricky-Addon-Update-Target-List/issues",
|
||||||
|
"categories": [
|
||||||
|
"WebUI"
|
||||||
|
],
|
||||||
|
"readme": "https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/refs/heads/main/README.md",
|
||||||
|
"note": {
|
||||||
|
"message": "This module is not a part of the Tricky Store module. DO NOT report any issues to Tricky Store if encountered"
|
||||||
|
},
|
||||||
|
"license": " GPL-3.0"
|
||||||
|
}
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
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
|
|
||||||
}
|
|
||||||
@@ -33,11 +33,17 @@ fi
|
|||||||
ui_print "- Installing..."
|
ui_print "- Installing..."
|
||||||
initialize
|
initialize
|
||||||
|
|
||||||
ui_print "- Creating config directory..."
|
ui_print "- Finalizing..."
|
||||||
find_config
|
find_config
|
||||||
migrate_old_boot_hash
|
migrate_old_boot_hash
|
||||||
|
|
||||||
rm -f "$MODPATH/install_func.sh"
|
rm -f "$MODPATH/install_func.sh"
|
||||||
|
|
||||||
|
ui_print " "
|
||||||
|
ui_print "! This module is not a part of the Tricky Store module. DO NOT report any issues to Tricky Store if encountered."
|
||||||
|
ui_print " "
|
||||||
|
|
||||||
|
sleep 1
|
||||||
|
|
||||||
ui_print "- Installation completed successfully! "
|
ui_print "- Installation completed successfully! "
|
||||||
ui_print " "
|
ui_print " "
|
||||||
|
|||||||
@@ -1,59 +1,37 @@
|
|||||||
initialize() {
|
initialize() {
|
||||||
if [ -f "$SCRIPT_DIR/UpdateTargetList.sh" ]; then
|
# Cleanup left over
|
||||||
rm -f "$SCRIPT_DIR/UpdateTargetList.sh"
|
[ -d "/data/adb/modules/$NEW_MODID" ] && rm -rf "/data/adb/modules/$NEW_MODID"
|
||||||
fi
|
|
||||||
if [ -d "/data/adb/modules/$NEW_MODID" ]; then
|
|
||||||
rm -rf "/data/adb/modules/$NEW_MODID"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
# Set permission
|
||||||
set_perm $COMPATH/get_extra.sh 0 2000 0755
|
set_perm $COMPATH/get_extra.sh 0 2000 0755
|
||||||
set_perm $COMPATH/get_WebUI.sh 0 2000 0755
|
|
||||||
|
# Handdle Magisk/non-Magisk root manager
|
||||||
if [ "$ACTION" = "false" ]; then
|
if [ "$ACTION" = "false" ]; then
|
||||||
rm -f "$MODPATH/action.sh"
|
rm -f "$MODPATH/action.sh"
|
||||||
rm -f "$COMPATH/get_WebUI.sh"
|
NEW_MODID="$MODID"
|
||||||
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
|
else
|
||||||
tmp_dir
|
mkdir -p "$COMPATH/update/common"
|
||||||
|
cp "$COMPATH/.default" "$COMPATH/update/common/.default"
|
||||||
|
cp "$MODPATH/uninstall.sh" "$COMPATH/update/uninstall.sh"
|
||||||
fi
|
fi
|
||||||
sed -i "s|\"set-path\"|\"/data/adb/modules/$NEW_MODID/\"|" "$MODPATH/webroot/index.js" || {
|
|
||||||
|
#Set specific path
|
||||||
|
sed -i "s|\"set-path\"|\"/data/adb/modules/$NEW_MODID/\"|" "$MODPATH/webui/index.js" || {
|
||||||
ui_print "! Failed to set path"
|
ui_print "! Failed to set path"
|
||||||
abort
|
abort
|
||||||
}
|
}
|
||||||
sed -i "s|\"set-id\"|\"$NEW_MODID\"|" "$COMPATH/util_func.sh" || {
|
|
||||||
ui_print "! Failed to set id"
|
# Set aapt binary
|
||||||
abort
|
cp "$MODPATH/module.prop" "$COMPATH/update/module.prop"
|
||||||
}
|
|
||||||
|
|
||||||
mv "$MODPATH/bin/$(getprop ro.product.cpu.abi)/aapt" "$COMPATH/aapt"
|
mv "$MODPATH/bin/$(getprop ro.product.cpu.abi)/aapt" "$COMPATH/aapt"
|
||||||
set_perm $COMPATH/aapt 0 2000 0755
|
set_perm $COMPATH/aapt 0 2000 0755
|
||||||
rm -rf "$MODPATH/bin"
|
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() {
|
find_config() {
|
||||||
if [ -d "$CONFIG_DIR" ]; then
|
# Remove legacy setup
|
||||||
rm -rf "$CONFIG_DIR"
|
[ -f "$SCRIPT_DIR/UpdateTargetList.sh" ] && rm -f "$SCRIPT_DIR/UpdateTargetList.sh"
|
||||||
fi
|
[ -d "$CONFIG_DIR" ] && rm -rf "$CONFIG_DIR"
|
||||||
}
|
}
|
||||||
|
|
||||||
migrate_old_boot_hash() {
|
migrate_old_boot_hash() {
|
||||||
@@ -63,23 +41,3 @@ migrate_old_boot_hash() {
|
|||||||
rm -f "$COMPATH/boot_hash"
|
rm -f "$COMPATH/boot_hash"
|
||||||
fi
|
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
|
|
||||||
}
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
id=TA_utl
|
id=TA_utl
|
||||||
name=Tricky Addon - Update Target List
|
name=Tricky Addon - Update Target List
|
||||||
version=v2.7
|
version=v2.8
|
||||||
versionCode=270
|
versionCode=280
|
||||||
author=KOWX712
|
author=KOWX712
|
||||||
description=A WebUI to conifgure tricky store target.txt
|
description=A WebUI to conifgure tricky store target.txt
|
||||||
updateJson=https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/update.json
|
updateJson=https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/update.json
|
||||||
|
|||||||
@@ -6,18 +6,13 @@ while [ -z "$(ls -A /data/adb/modules/)" ]; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
if [ ! -d "$TS" ] || [ -f "$TS/remove" ]; then
|
if [ ! -d "$TS" ] || [ -f "$TS/remove" ]; then
|
||||||
if [ -d "$MODPATH/common/temp" ]; then
|
if [ -f "$MODPATH/action.sh" ]; then
|
||||||
mkdir -p "/data/adb/modules/TA_utl"
|
[ -d "/data/adb/modules/TA_utl" ] && rm -rf "/data/adb/modules/TA_utl"
|
||||||
cp -rf "$MODPATH/common/temp"/* "/data/adb/modules/TA_utl/"
|
cp -rf "$MODPATH/common/temp" "/data/adb/modules/TA_utl"
|
||||||
touch "/data/adb/modules/TA_utl/remove"
|
touch "/data/adb/modules/TA_utl/remove"
|
||||||
else
|
else
|
||||||
touch "$MODPATH/remove"
|
touch "$MODPATH/remove"
|
||||||
fi
|
fi
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -d "$MODPATH/common/temp" ]; then
|
|
||||||
rm -rf "/data/adb/modules/.TA_utl"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
rm -f "$TS/action.sh"
|
rm -f "$TS/action.sh"
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
MODPATH=${0%/*}
|
MODPATH=${0%/*}
|
||||||
HIDE_DIR="/data/adb/modules/.TA_utl"
|
HIDE_DIR="/data/adb/modules/.TA_utl"
|
||||||
TS="/data/adb/modules/tricky_store"
|
TS="/data/adb/modules/tricky_store"
|
||||||
|
SCRIPT_DIR="/data/adb/tricky_store"
|
||||||
TSPA="/data/adb/modules/tsupport-advance"
|
TSPA="/data/adb/modules/tsupport-advance"
|
||||||
|
|
||||||
aapt() { "$MODPATH/common/aapt" "$@"; }
|
aapt() { "$MODPATH/common/aapt" "$@"; }
|
||||||
|
|
||||||
|
# Reset verified Boot Hash
|
||||||
hash_value=$(grep -v '^#' "/data/adb/boot_hash" | tr -d '[:space:]')
|
hash_value=$(grep -v '^#' "/data/adb/boot_hash" | tr -d '[:space:]')
|
||||||
if [ -n "$hash_value" ]; then
|
if [ -n "$hash_value" ]; then
|
||||||
resetprop -n ro.boot.vbmeta.digest "$hash_value"
|
resetprop -n ro.boot.vbmeta.digest "$hash_value"
|
||||||
@@ -17,30 +19,31 @@ elif [ ! -d "$TSPA" ] && [ -f "/storage/emulated/0/stop-tspa-auto-target" ]; the
|
|||||||
rm -f "/storage/emulated/0/stop-tspa-auto-target"
|
rm -f "/storage/emulated/0/stop-tspa-auto-target"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -d "$MODPATH/common/temp" ]; then
|
# Hide module
|
||||||
if [ "$KSU" ] || [ "$APATCH" ]; then
|
if [ -f "$MODPATH/action.sh" ]; then
|
||||||
rm -f "$MODPATH/module.prop"
|
if [[ "$MODPATH" != "$HIDE_DIR" ]]; then
|
||||||
fi
|
rm -rf "$HIDE_DIR"
|
||||||
if [ ! -d "$HIDE_DIR" ]; then
|
|
||||||
mv "$MODPATH" "$HIDE_DIR"
|
mv "$MODPATH" "$HIDE_DIR"
|
||||||
elif [[ "$MODPATH" != "$HIDE_DIR" ]]; then
|
|
||||||
rm -rf "$MODPATH"
|
|
||||||
exit 0
|
|
||||||
fi
|
fi
|
||||||
MODPATH="$HIDE_DIR"
|
MODPATH="$HIDE_DIR"
|
||||||
if [ -f "$MODPATH/action.sh" ]; then
|
elif [ -d "$HIDE_DIR" ]; then
|
||||||
ln -s "$MODPATH/action.sh" "$TS/action.sh"
|
rm -rf "$HIDE_DIR"
|
||||||
fi
|
|
||||||
ln -s "$MODPATH/webroot" "$TS/webroot"
|
|
||||||
fi
|
fi
|
||||||
|
rm -f "$MODPATH/module.prop"
|
||||||
|
|
||||||
OUTPUT_APP="$MODPATH/common/applist"
|
# Symlink tricky store
|
||||||
OUTPUT_SKIP="$MODPATH/common/skiplist"
|
[ -f "$MODPATH/action.sh" ] && ln -s "$MODPATH/action.sh" "$TS/action.sh"
|
||||||
|
ln -s "$MODPATH/webui" "$TS/webroot"
|
||||||
|
|
||||||
|
# Optimization
|
||||||
|
OUTPUT_APP="$MODPATH/common/tmp/applist"
|
||||||
|
OUTPUT_SKIP="$MODPATH/common/tmp/skiplist"
|
||||||
|
|
||||||
until [ "$(getprop sys.boot_completed)" = "1" ]; do
|
until [ "$(getprop sys.boot_completed)" = "1" ]; do
|
||||||
sleep 1
|
sleep 1
|
||||||
done
|
done
|
||||||
|
|
||||||
|
mkdir -p "$MODPATH/common/tmp"
|
||||||
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_APP"
|
||||||
echo "# This file is generated from service.sh to speed up load time" > "$OUTPUT_SKIP"
|
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
|
pm list packages -3 </dev/null 2>&1 | cat | awk -F: '{print $2}' | while read -r PACKAGE; do
|
||||||
|
|||||||
@@ -11,10 +11,7 @@ fi
|
|||||||
rm -rf "/data/adb/modules/.TA_utl"
|
rm -rf "/data/adb/modules/.TA_utl"
|
||||||
rm -f "/data/adb/boot_hash"
|
rm -f "/data/adb/boot_hash"
|
||||||
if [ -d "$TS" ]; then
|
if [ -d "$TS" ]; then
|
||||||
if [ -f "$TS/action.sh" ]; then
|
rm -f "$TS/action.sh"
|
||||||
rm -f "$TS/action.sh"
|
rm -rf "$TS/webroot"
|
||||||
else
|
|
||||||
rm -rf "$TS/webroot"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
xxd -r -p "$MODPATH/common/.default" | base64 -d > "$SCRIPT_DIR/keybox.xml"
|
xxd -r -p "$MODPATH/common/.default" | base64 -d > "$SCRIPT_DIR/keybox.xml"
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
<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>
|
|
||||||
|
Before Width: | Height: | Size: 725 B |
@@ -6,6 +6,7 @@
|
|||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title data-i18n="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="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
|
||||||
<link rel="stylesheet" href="/styles.css" type="text/css">
|
<link rel="stylesheet" href="/styles.css" type="text/css">
|
||||||
<link rel="stylesheet" type="text/css" href="/mmrl/insets.css" />
|
<link rel="stylesheet" type="text/css" href="/mmrl/insets.css" />
|
||||||
<script type="module" crossorigin src="/index.js"></script>
|
<script type="module" crossorigin src="/index.js"></script>
|
||||||
@@ -16,16 +17,17 @@
|
|||||||
<div class="header-block"></div>
|
<div class="header-block"></div>
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<div id="title" data-i18n="title"></div>
|
<div id="title" data-i18n="title"></div>
|
||||||
<button id="help-button" class="help-button"><i class="fa fa-question-circle"></i></button>
|
<button id="help-button" class="help-button"><svg xmlns="http://www.w3.org/2000/svg" height="21px" viewBox="0 -1060 960 990" width="21px" fill="#6E6E6E"><path d="M478-240q21 0 35.5-14.5T528-290q0-21-14.5-35.5T478-340q-21 0-35.5 14.5T428-290q0 21 14.5 35.5T478-240Zm-36-154h74q0-33 7.5-52t42.5-52q26-26 41-49.5t15-56.5q0-56-41-86t-97-30q-57 0-92.5 30T342-618l66 26q5-18 22.5-39t53.5-21q32 0 48 17.5t16 38.5q0 20-12 37.5T506-526q-44 39-54 59t-10 73Zm38 314q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z"/></svg></button>
|
||||||
<div class="no-connection">
|
<div class="no-connection">
|
||||||
<img src="wifi-slash.svg" alt="No Connection Icon" class="wifi-icon">
|
<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -920 960 960" width="20px" fill="#6E6E6E"><path d="M790-56 414-434q-47 11-87.5 33T254-346l-84-86q32-32 69-56t79-42l-90-90q-41 21-76.5 46.5T84-516L0-602q32-32 66.5-57.5T140-708l-84-84 56-56 736 736-58 56Zm-310-64q-42 0-71-29.5T380-220q0-42 29-71t71-29q42 0 71 29t29 71q0 41-29 70.5T480-120Zm236-238-29-29-29-29-144-144q81 8 151.5 41T790-432l-74 74Zm160-158q-77-77-178.5-120.5T480-680q-21 0-40.5 1.5T400-674L298-776q44-12 89.5-18t92.5-6q142 0 265 53t215 145l-84 86Z"/></svg>
|
||||||
</div>
|
</div>
|
||||||
<div class="language-dropdown">
|
<div class="language-dropdown">
|
||||||
<button class="language-button">
|
<button class="language-button">
|
||||||
<i class="fa fa-compass"></i>
|
<i class="material-icons">language</i>
|
||||||
</button>
|
</button>
|
||||||
<div class="language-menu">
|
<div class="language-menu">
|
||||||
<button class="language-option" data-lang="en-US">English</button>
|
<button class="language-option" data-lang="en-US">English</button>
|
||||||
|
<button class="language-option" data-lang="ja-JP">日本語</button>
|
||||||
<button class="language-option" data-lang="ru-RU">Русский</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="tl-PH">Tagalog</button>
|
||||||
<button class="language-option" data-lang="zh-CN">中文(简体)</button>
|
<button class="language-option" data-lang="zh-CN">中文(简体)</button>
|
||||||
@@ -49,7 +51,9 @@
|
|||||||
<!-- Menu Options -->
|
<!-- Menu Options -->
|
||||||
<div class="search-menu-container">
|
<div class="search-menu-container">
|
||||||
<div class="search-card">
|
<div class="search-card">
|
||||||
<span class="search-icon"><i class="fa fa-search"></i></span>
|
<span class="search-icon">
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" height="19px" viewBox="0 -960 960 960" width="24px" fill="#6E6E6E"><path d="M784-120 532-372q-30 24-69 38t-83 14q-109 0-184.5-75.5T120-580q0-109 75.5-184.5T380-840q109 0 184.5 75.5T640-580q0 44-14 83t-38 69l252 252-56 56ZM380-400q75 0 127.5-52.5T560-580q0-75-52.5-127.5T380-760q-75 0-127.5 52.5T200-580q0 75 52.5 127.5T380-400Z"/></svg>
|
||||||
|
</span>
|
||||||
<input type="text" class="search-input" id="search" placeholder="Search" data-i18n="search_placeholder">
|
<input type="text" class="search-input" id="search" placeholder="Search" data-i18n="search_placeholder">
|
||||||
<button class="clear-btn" id="clear-btn">✕</button>
|
<button class="clear-btn" id="clear-btn">✕</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -125,15 +129,10 @@
|
|||||||
<p data-i18n="disclaimer"></p>
|
<p data-i18n="disclaimer"></p>
|
||||||
<br>
|
<br>
|
||||||
<p>
|
<p>
|
||||||
<span data-i18n="telegram_channel"></span>
|
<div class="link">
|
||||||
<br>
|
<i class="fa fa-telegram" id="telegram" aria-hidden="true"> <span id="link-text" data-i18n="telegram_channel"></span></i>
|
||||||
<span>t.me/kowchannel</span>
|
<i class="fa fa-github" id="github" aria-hidden="true"> <span id="link-text" data-i18n="github"></span></i>
|
||||||
</p>
|
</div>
|
||||||
<br>
|
|
||||||
<p>
|
|
||||||
<span data-i18n="github"></span>
|
|
||||||
<br>
|
|
||||||
<span>github.com/KOWX712/Tricky-Addon-Update-Target-List</span>
|
|
||||||
</p>
|
</p>
|
||||||
<br>
|
<br>
|
||||||
<p data-i18n="acknowledgment"></p>
|
<p data-i18n="acknowledgment"></p>
|
||||||
@@ -145,7 +144,7 @@
|
|||||||
<!-- Footer -->
|
<!-- Footer -->
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
<div class="uninstall-container hidden-uninstall">
|
<div class="uninstall-container hidden-uninstall">
|
||||||
<i class="fa fa-trash"></i>
|
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#FFFFFF"><path d="M280-120q-33 0-56.5-23.5T200-200v-520h-40v-80h200v-40h240v40h200v80h-40v520q0 33-23.5 56.5T680-120H280Zm400-600H280v520h400v-520ZM360-280h80v-360h-80v360Zm160 0h80v-360h-80v360ZM280-720v520-520Z"/></svg>
|
||||||
<span data-i18n="uninstall_webui"></span>
|
<span data-i18n="uninstall_webui"></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -41,6 +41,10 @@ const loadingIndicator = document.querySelector('.loading');
|
|||||||
const floatingBtn = document.querySelector('.floating-btn');
|
const floatingBtn = document.querySelector('.floating-btn');
|
||||||
const prompt = document.getElementById('prompt');
|
const prompt = document.getElementById('prompt');
|
||||||
|
|
||||||
|
// About Elements
|
||||||
|
const telegramLink = document.getElementById('telegram');
|
||||||
|
const githubLink = document.getElementById('github');
|
||||||
|
|
||||||
const basePath = "set-path";
|
const basePath = "set-path";
|
||||||
const ADDITIONAL_APPS = [
|
const ADDITIONAL_APPS = [
|
||||||
"com.google.android.gms",
|
"com.google.android.gms",
|
||||||
@@ -60,7 +64,7 @@ let availableLanguages = ['en-US'];
|
|||||||
// Function to check for available language
|
// Function to check for available language
|
||||||
async function initializeAvailableLanguages() {
|
async function initializeAvailableLanguages() {
|
||||||
try {
|
try {
|
||||||
const multiLang = await execCommand(`find ${basePath}webroot/locales -type f -name "*.json" ! -name "A-template.json" -exec basename -s .json {} \\;`);
|
const multiLang = await execCommand(`find ${basePath}webui/locales -type f -name "*.json" ! -name "A-template.json" -exec basename -s .json {} \\;`);
|
||||||
availableLanguages = multiLang.trim().split('\n');
|
availableLanguages = multiLang.trim().split('\n');
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Failed to fetch available languages:', error);
|
console.error('Failed to fetch available languages:', error);
|
||||||
@@ -314,7 +318,12 @@ async function refreshAppList() {
|
|||||||
await new Promise(resolve => setTimeout(resolve, 500));
|
await new Promise(resolve => setTimeout(resolve, 500));
|
||||||
window.scrollTo(0, 0);
|
window.scrollTo(0, 0);
|
||||||
if (noConnection.style.display === "flex") {
|
if (noConnection.style.display === "flex") {
|
||||||
await runExtraScript();
|
try {
|
||||||
|
await updateCheck();
|
||||||
|
await execCommand(`[ -f ${basePath}common/tmp/exclude-list ] && rm -f "${basePath}common/tmp/exclude-list"`);
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Error occurred:", error);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
await fetchAppList();
|
await fetchAppList();
|
||||||
loadingIndicator.style.display = 'none';
|
loadingIndicator.style.display = 'none';
|
||||||
@@ -340,35 +349,56 @@ function deselectAllApps() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Function to run the extra script
|
// Function to run the update check
|
||||||
async function runExtraScript() {
|
async function updateCheck() {
|
||||||
try {
|
try {
|
||||||
const scriptPath = `${basePath}common/get_extra.sh`;
|
const scriptPath = `sh ${basePath}common/get_extra.sh --update`;
|
||||||
const output = await execCommand(scriptPath);
|
const output = await execCommand(scriptPath);
|
||||||
console.log("Extra script executed successfully.");
|
console.log("update script executed successfully.");
|
||||||
noConnection.style.display = "none";
|
noConnection.style.display = "none";
|
||||||
if (output.includes("update")) {
|
if (output.includes("update")) {
|
||||||
console.log("Update detected from extra script.");
|
console.log("Update detected from extra script.");
|
||||||
showPrompt("new_update");
|
showPrompt("new_update");
|
||||||
updateCard.style.display = "flex";
|
updateCard.style.display = "flex";
|
||||||
await execCommand(`
|
await execCommand(`
|
||||||
su -c "mkdir -p '/data/adb/modules/TA_utl' &&
|
su -c "
|
||||||
cp -rf '${basePath}common/temp/'* '/data/adb/modules/TA_utl/'"
|
if [ -f '${basePath}action.sh' ]; then
|
||||||
`);
|
if [ -d "/data/adb/modules/TA_utl" ]; then
|
||||||
} else {
|
rm -rf "/data/adb/modules/TA_utl"
|
||||||
console.log("No update detected from extra script.");
|
fi
|
||||||
|
cp -rf '${basePath}common/update' '/data/adb/modules/TA_utl'
|
||||||
|
else
|
||||||
|
cp '${basePath}common/update/module.prop' '/data/adb/modules/TA_utl/module.prop'
|
||||||
|
fi
|
||||||
|
"
|
||||||
|
`);
|
||||||
|
} else {
|
||||||
|
console.log("No update detected from extra script.");
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Failed to execute update script:", error);
|
||||||
|
showPrompt("no_internet", false);
|
||||||
|
noConnection.style.display = "flex";
|
||||||
}
|
}
|
||||||
} catch (error) {
|
|
||||||
console.error("Failed to execute Extra script:", error);
|
|
||||||
showPrompt("no_internet", false);
|
|
||||||
noConnection.style.display = "flex";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Function to read the exclude list and uncheck corresponding apps
|
// Function to read the exclude list and uncheck corresponding apps
|
||||||
async function deselectUnnecessaryApps() {
|
async function deselectUnnecessaryApps() {
|
||||||
try {
|
try {
|
||||||
const result = await execCommand(`cat ${basePath}common/exclude-list`);
|
const fileCheck = await execCommand(`test -f ${basePath}common/tmp/exclude-list && echo "exists" || echo "not found"`);
|
||||||
|
if (fileCheck.trim() === "not found") {
|
||||||
|
setTimeout(async () => {
|
||||||
|
await execCommand(`sh ${basePath}common/get_extra.sh --unnecessary`);
|
||||||
|
}, 0);
|
||||||
|
console.log("Exclude list not found. Running the unnecessary apps script.");
|
||||||
|
} else {
|
||||||
|
setTimeout(async () => {
|
||||||
|
await execCommand(`sh ${basePath}common/get_extra.sh --xposed`);
|
||||||
|
}, 0);
|
||||||
|
console.log("Exclude list found. Running xposed script.");
|
||||||
|
}
|
||||||
|
await new Promise(resolve => setTimeout(resolve, 100));
|
||||||
|
const result = await execCommand(`cat ${basePath}common/tmp/exclude-list`);
|
||||||
const UnnecessaryApps = result.split("\n").map(app => app.trim()).filter(Boolean);
|
const UnnecessaryApps = result.split("\n").map(app => app.trim()).filter(Boolean);
|
||||||
const apps = document.querySelectorAll(".card");
|
const apps = document.querySelectorAll(".card");
|
||||||
apps.forEach(app => {
|
apps.forEach(app => {
|
||||||
@@ -376,10 +406,10 @@ async function deselectUnnecessaryApps() {
|
|||||||
const packageName = contentElement.getAttribute("data-package");
|
const packageName = contentElement.getAttribute("data-package");
|
||||||
const checkbox = app.querySelector(".checkbox");
|
const checkbox = app.querySelector(".checkbox");
|
||||||
if (UnnecessaryApps.includes(packageName)) {
|
if (UnnecessaryApps.includes(packageName)) {
|
||||||
checkbox.checked = false; // Uncheck if found in more-exclude list
|
checkbox.checked = false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
console.log("unnecessary apps deselected successfully.");
|
console.log("Unnecessary apps deselected successfully.");
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Failed to deselect unnecessary apps:", error);
|
console.error("Failed to deselect unnecessary apps:", error);
|
||||||
}
|
}
|
||||||
@@ -448,9 +478,13 @@ async function aospkb() {
|
|||||||
|
|
||||||
// Function to replace valid kb
|
// Function to replace valid kb
|
||||||
async function extrakb() {
|
async function extrakb() {
|
||||||
const sourcePath = `${basePath}common/.extra`;
|
setTimeout(async () => {
|
||||||
|
await execCommand(`sh ${basePath}common/get_extra.sh --kb`);
|
||||||
|
}, 100);
|
||||||
|
const sourcePath = `${basePath}common/tmp/.extra`;
|
||||||
const destinationPath = "/data/adb/tricky_store/keybox.xml";
|
const destinationPath = "/data/adb/tricky_store/keybox.xml";
|
||||||
try {
|
try {
|
||||||
|
await new Promise(resolve => setTimeout(resolve, 300));
|
||||||
const fileExists = await execCommand(`[ -f ${sourcePath} ] && echo "exists"`);
|
const fileExists = await execCommand(`[ -f ${sourcePath} ] && echo "exists"`);
|
||||||
if (fileExists.trim() !== "exists") {
|
if (fileExists.trim() !== "exists") {
|
||||||
throw new Error(".extra file not found");
|
throw new Error(".extra file not found");
|
||||||
@@ -465,7 +499,6 @@ async function extrakb() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Function to handle Verified Boot Hash
|
// Function to handle Verified Boot Hash
|
||||||
async function setBootHash() {
|
async function setBootHash() {
|
||||||
const showCard = () => {
|
const showCard = () => {
|
||||||
@@ -559,10 +592,10 @@ async function fetchAppList() {
|
|||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Failed to read target.txt file:", error);
|
console.error("Failed to read target.txt file:", error);
|
||||||
}
|
}
|
||||||
|
|
||||||
let applistMap = {};
|
let applistMap = {};
|
||||||
try {
|
try {
|
||||||
const applistResult = await execCommand(`cat ${basePath}common/applist`);
|
const applistResult = await execCommand(`cat ${basePath}common/tmp/applist`);
|
||||||
applistMap = applistResult
|
applistMap = applistResult
|
||||||
.split("\n")
|
.split("\n")
|
||||||
.reduce((map, line) => {
|
.reduce((map, line) => {
|
||||||
@@ -695,12 +728,14 @@ document.querySelector(".uninstall-container").addEventListener("click", async (
|
|||||||
try {
|
try {
|
||||||
await execCommand(`
|
await execCommand(`
|
||||||
su -c "
|
su -c "
|
||||||
if [ -d '${basePath}common/temp/' ]; then
|
if [ -f '${basePath}action.sh' ]; then
|
||||||
mkdir -p '/data/adb/modules/TA_utl' &&
|
if [ -d "/data/adb/modules/TA_utl" ]; then
|
||||||
cp -rf '${basePath}common/temp/'* '/data/adb/modules/TA_utl/' &&
|
rm -rf "/data/adb/modules/TA_utl"
|
||||||
|
fi
|
||||||
|
cp -rf '${basePath}common/update' '/data/adb/modules/TA_utl' &&
|
||||||
touch '/data/adb/modules/TA_utl/remove'
|
touch '/data/adb/modules/TA_utl/remove'
|
||||||
else
|
else
|
||||||
touch '/data/adb/modules/TA_utl/remove'
|
touch '${basePath}remove'
|
||||||
fi
|
fi
|
||||||
"
|
"
|
||||||
`);
|
`);
|
||||||
@@ -765,12 +800,32 @@ document.addEventListener('DOMContentLoaded', async () => {
|
|||||||
checkMagisk();
|
checkMagisk();
|
||||||
loadingIndicator.style.display = "none";
|
loadingIndicator.style.display = "none";
|
||||||
document.querySelector('.uninstall-container').classList.remove('hidden-uninstall');
|
document.querySelector('.uninstall-container').classList.remove('hidden-uninstall');
|
||||||
runExtraScript();
|
setTimeout(updateCheck, 0);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Redirect to GitHub release page
|
// Redirect to GitHub release page
|
||||||
updateCard.addEventListener('click', () => {
|
updateCard.addEventListener('click', async () => {
|
||||||
window.location.href = 'https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/latest';
|
try {
|
||||||
|
await execCommand('am start -a android.intent.action.VIEW -d https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/latest');
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error opening GitHub Release link:', error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
telegramLink.addEventListener('click', async () => {
|
||||||
|
try {
|
||||||
|
await execCommand('am start -a android.intent.action.VIEW -d https://t.me/kowchannel');
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error opening Telegram link:', error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
githubLink.addEventListener('click', async () => {
|
||||||
|
try {
|
||||||
|
await execCommand('am start -a android.intent.action.VIEW -d https://github.com/KOWX712/Tricky-Addon-Update-Target-List');
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error opening GitHub link:', error);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Function to execute shell commands
|
// Function to execute shell commands
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
# Translation Guide
|
# Translation Guide
|
||||||
## Fix Translation Error
|
## Fix Bad Translation
|
||||||
1. Fork this repository.
|
1. Fork this repository.
|
||||||
2. Find your language string file in `/module/webroot/locales/`.
|
2. Find your language string file in `/module/webroot/locales/`.
|
||||||
3. Edit the string value with translated incorrectly.
|
3. Edit the string value with translated incorrectly.
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
---
|
---
|
||||||
## Add a New Language
|
## Add a New Language
|
||||||
### Simple
|
### Simple
|
||||||
- Contact me in Telegram to add a new translation langauge for you.
|
- Contact me in Telegram to add a new translation langauge.
|
||||||
|
|
||||||
### Advanced
|
### Advanced
|
||||||
1. Fork this repository.
|
1. Fork this repository.
|
||||||
54
module/webui/locales/ja-JP.json
Normal file
54
module/webui/locales/ja-JP.json
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
{
|
||||||
|
"title": "Tricky Addon - Update Target List",
|
||||||
|
"search_placeholder": "検索",
|
||||||
|
"save_and_update_button": "保存",
|
||||||
|
"boot_hash_save_button": "保存",
|
||||||
|
"loading": "読み込み中...",
|
||||||
|
"boot_hash_input_placeholder": "確認付きブートハッシュをここに貼り付け",
|
||||||
|
"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": "確認付きブートハッシュを設定",
|
||||||
|
"about": "このアドオンについて",
|
||||||
|
|
||||||
|
"help_instructions": "使い方",
|
||||||
|
"save_and_update_description": "現在の設定を target.txt に保存します。",
|
||||||
|
"refresh_description": "アプリリストと除外リストを更新します。",
|
||||||
|
"select_deselect": "すべてを選択と解除",
|
||||||
|
"select_description": "現在のインターフェースのすべてのアプリを選択または解除します。",
|
||||||
|
"select_denylist_description": "Magisk の環境でのみ使用可能です。Deny List 内のアプリを選択します(推奨)。",
|
||||||
|
"deselect_unnecessary_description": "不要なカテゴリー: Xposed モジュール、root マネージャー、root 関連アプリ、Bootloader の状態を確認しない一般的なアプリです。このオプションはインターネット接続が必要です。",
|
||||||
|
"set_keybox": "AOSP と 有効な Keybox",
|
||||||
|
"set_aosp_keybox_description": "Tricky Store の keybox.xml を置き換えます。有効な Keybox がなくなった場合は、AOSP Keybox に置き換えられます。インターネット接続が必要です。",
|
||||||
|
"set_verified_boot_hash_description": "Key Attestation Demo から確認付きブートハッシュの値を取得します。ro.boot.vbmeta.digest をリセットして異常なブート状態を修正します。",
|
||||||
|
|
||||||
|
"module_name_line1": "Tricky Addon",
|
||||||
|
"module_name_line2": "Update Target List",
|
||||||
|
"by": "開発者: ",
|
||||||
|
"telegram_channel": "Telegram チャンネル",
|
||||||
|
"github": "GitHub",
|
||||||
|
"disclaimer": "このモジュールは、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": "確認付きブートハッシュの更新に成功しました。",
|
||||||
|
"boot_hash_set_error": "確認付きブートハッシュの更新に失敗しました。",
|
||||||
|
"saved_target": "設定を target.txt に保存しました。",
|
||||||
|
"save_error": "設定の保存に失敗しました。",
|
||||||
|
"uninstall_prompt": "WebUI は再起動後に削除されます。",
|
||||||
|
"uninstall_failed": "WebUI のアンインストールに失敗しました。",
|
||||||
|
"new_update": "新しいバージョンがあります!"
|
||||||
|
}
|
||||||
@@ -45,17 +45,11 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.no-connection {
|
.no-connection {
|
||||||
padding-bottom: 2px;
|
padding: 0;
|
||||||
display: none;
|
display: none;
|
||||||
position: relative;
|
|
||||||
margin-right: 0px;
|
margin-right: 0px;
|
||||||
color: #7E7E7E;
|
background: none;
|
||||||
}
|
border: none;
|
||||||
|
|
||||||
.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 {
|
.language-dropdown {
|
||||||
@@ -64,10 +58,9 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.language-button {
|
.language-button {
|
||||||
|
padding-top: 5px;
|
||||||
background: none;
|
background: none;
|
||||||
border: none;
|
border: none;
|
||||||
font-size: 23px;
|
|
||||||
color: #333;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.language-menu {
|
.language-menu {
|
||||||
@@ -125,12 +118,10 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.help-button {
|
.help-button {
|
||||||
|
padding-left: 5px;
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
background: none;
|
background: none;
|
||||||
border: none;
|
border: none;
|
||||||
font-size: 22px;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.help-overlay {
|
.help-overlay {
|
||||||
@@ -348,14 +339,6 @@ body {
|
|||||||
font-size: 14px;
|
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"] {
|
.about-content p[data-i18n="disclaimer"] {
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
}
|
}
|
||||||
@@ -369,6 +352,36 @@ body {
|
|||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.link{
|
||||||
|
flex: 0 1 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#telegram {
|
||||||
|
font-size: 18px;
|
||||||
|
padding: 5px 10px;
|
||||||
|
background-color: #38A7ED;
|
||||||
|
color: #fff;
|
||||||
|
border-radius: 8px;
|
||||||
|
margin-right: 3px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
transition: background-color 0.2s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
#github {
|
||||||
|
font-size: 18px;
|
||||||
|
padding: 5px 10px;
|
||||||
|
background-color: #606060;
|
||||||
|
color: #fff;
|
||||||
|
border-radius: 8px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
transition: background-color 0.2s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
#link-text {
|
||||||
|
font-size: 17px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
.search-menu-container {
|
.search-menu-container {
|
||||||
display: flex;
|
display: flex;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
@@ -399,8 +412,8 @@ body {
|
|||||||
|
|
||||||
.search-icon {
|
.search-icon {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 18px;
|
padding-top: 5px;
|
||||||
font-size: 15px;
|
left: 15px;
|
||||||
z-index: 1000;
|
z-index: 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -566,7 +579,7 @@ body {
|
|||||||
.card {
|
.card {
|
||||||
background-color: white;
|
background-color: white;
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 10px;
|
border-radius: 12px;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
outline: none;
|
outline: none;
|
||||||
@@ -723,8 +736,6 @@ body {
|
|||||||
|
|
||||||
.uninstall-container i {
|
.uninstall-container i {
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
font-size: 18px;
|
|
||||||
color: #fff;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.uninstall-container span {
|
.uninstall-container span {
|
||||||
@@ -753,10 +764,18 @@ body {
|
|||||||
background-color: #830000;
|
background-color: #830000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#telegram:active {
|
||||||
|
background-color: #1A78B3;
|
||||||
|
}
|
||||||
|
|
||||||
|
#github:active {
|
||||||
|
background-color: #4D4D4D;
|
||||||
|
}
|
||||||
|
|
||||||
@media (prefers-color-scheme: dark) {
|
@media (prefers-color-scheme: dark) {
|
||||||
body {
|
body {
|
||||||
background-color: #121212;
|
background-color: #121212;
|
||||||
color: #eee;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.header-block,
|
.header-block,
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"versionCode": 270,
|
"versionCode": 280,
|
||||||
"version": "v2.7",
|
"version": "v2.8",
|
||||||
"zipUrl": "https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/download/v2.7/TrickyAddonModule-v2.7.zip",
|
"zipUrl": "https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/download/v2.8/TrickyAddonModule-v2.8.zip",
|
||||||
"changelog": "https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/changelog.md"
|
"changelog": "https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/changelog.md"
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user