Compare commits

20 Commits
v2.7 ... v2.8

Author SHA1 Message Date
KOWX712
cfb51e28fb v2.8 release 2024-12-14 16:08:51 +08:00
KOWX712
6bdfff7f92 fix auto select language
fix auto language select missing due to change in ff6244b140
2024-12-14 16:06:34 +08:00
KOWX712
4146f09062 Merge pull request #4 from reindex-ot/main
Add Japanese locale.
2024-12-14 12:38:00 +08:00
KOWX712
d223b39e29 add option in html 2024-12-14 12:37:14 +08:00
Re*Index. (ot_inc)
6bf5009cb8 Add files via upload 2024-12-14 11:16:51 +09:00
KOWX712
22bdb3986a lite 2024-12-13 03:44:35 +08:00
KOWX712
2a04b7426d Update README.md 2024-12-13 03:33:10 +08:00
KOWX712
a03b785323 adjust ui 2024-12-13 03:09:52 +08:00
KOWX712
d307c57171 update README.md 2024-12-11 17:09:14 +08:00
KOWX712
c6339f4e5d Add back missing no connection prompt 2024-12-11 16:27:59 +08:00
KOWX712
4c9e56c1db Fix lag on deselect unnecessary option 2024-12-11 15:41:20 +08:00
KOWX712
9302d39910 Fix update operation in ksu/apatch
Simplified the code, better readability.
2024-12-11 15:05:45 +08:00
KOWX712
06d2edf57f Update README.md 2024-12-10 22:55:33 +08:00
KOWX712
ff6244b140 Invisible module full implementation
NOT STABLE, not tested on KSU
2024-12-10 22:25:01 +08:00
KOWX712
dfe4a23f8a loading time optimization
probably removed all loading time
2024-12-10 04:05:06 +08:00
KOWX712
5dd1496ca7 Merge pull request #3 from DerGoogler/main
Add metadata for MMRL
2024-12-08 09:53:32 +08:00
Der_Googler
8c831cea39 Add metadata for MMRL
Also includes a note
2024-12-08 00:40:36 +01:00
KOWX712
42a8f6baae v2.7.1 quick fix 2024-12-07 21:20:53 +08:00
KOWX712
befa011c15 remove unused logic 2024-12-07 21:19:19 +08:00
KOWX712
f576b4bb2f link redirect quick fix 2024-12-07 20:52:01 +08:00
29 changed files with 419 additions and 316 deletions

View File

@@ -1,8 +1,11 @@
# Tricky Addon - Update Target List
Configure Tricky Store target.txt with KSU WebUI.
> [!NOTE]
> _This module is **not** a part of the Tricky Store module. DO NOT report any issues to Tricky Store if encountered._
[![Latest Release](https://img.shields.io/github/v/release/KOWX712/Tricky-Addon-Update-Target-List?label=Release&logo=github)](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/latest)
[![Nightly Release](https://custom-icon-badges.demolab.com/badge/Nightly-canary_build-640064?logo=nightly-logo)](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
- [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
- 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
| Feature | Status |
|:---|:---:|
| Configure target.txt with app name display | ✅ |
| 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) | ✅ |
| Provide AOSP Keybox (optional) | ✅ |
| Valid Keybox (not guaranteed) | ❌ |
@@ -35,15 +33,14 @@ Configure Tricky Store target.txt with KSU WebUI.
| 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)
## Localization
- Read [Translation Guide](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/blob/main/module/webui/locales/A-translate.md)
## Acknowledgement
- [j-hc/zygisk-detach](https://github.com/j-hc/zygisk-detach) - KSU WebUI template
## 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)
[![release](https://custom-icon-badges.demolab.com/badge/-Download-F25278?style=for-the-badge&logo=download&logoColor=white)](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases)
[![issue](https://custom-icon-badges.demolab.com/badge/-Open%20Issue-palegreen?style=for-the-badge&logoColor=black&logo=issue-opened)](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/issues)
[![changelog](https://custom-icon-badges.demolab.com/badge/-Update%20History-orange?style=for-the-badge&logo=history&logoColor=white)](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/blob/main/changelog.md)
[![Telegram](https://custom-icon-badges.demolab.com/badge/-KOW's%20little%20world-blue?style=for-the-badge&logo=telegram&logoColor=white)](https://t.me/kowchannel)

View File

@@ -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)
## 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
- 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.
@@ -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.
- **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).
- 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
- Check in [release notes](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/tag/v2.6-beta.3).

View File

@@ -4,7 +4,10 @@
- Recommend to run with MT manager
## 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
### v2.0
@@ -31,7 +34,6 @@
- Synched some code with module script
## Link
[Telegram channel](https://t.me/kowchannel)
[GitHub Release](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/latest)
[![release](https://custom-icon-badges.demolab.com/badge/-Download-F25278?style=for-the-badge&logo=download&logoColor=white)](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases)
[![issue](https://custom-icon-badges.demolab.com/badge/-Open%20Issue-palegreen?style=for-the-badge&logoColor=black&logo=issue-opened)](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/issues)
[![Telegram](https://custom-icon-badges.demolab.com/badge/-KOW's%20little%20world-blue?style=for-the-badge&logo=telegram&logoColor=white)](https://t.me/kowchannel)

View File

@@ -1,14 +1,14 @@
#!/bin/sh
# 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
# Tricky Addon Lite: Update Target List Script v2.8
# GitHub Repository: https://github.com/KOWX712/Tricky-Addon-Update-Target-List/tree/main/lite-script_only
# Telegram channel: https://t.me/kowchannel
# This script will put all non-system app into /data/adb/tricky_store/target.txt
###################################################
# Configurable exclude and addition list
# DO NOT remove default package names here
# Don't remove default package names here
###################################################
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
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
for app in $ADDITION; do

View File

@@ -5,16 +5,68 @@
MODPATH="/data/adb/modules/.TA_utl"
COMPATH="$MODPATH/common"
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
echo "- Launching KSU WebUI..."
am start -n "${PACKAGE_NAME}/.WebUIActivity" -e id "$MODID"
get_webui() {
echo "- Downloading the WebUI APK..."
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
echo "- Launching KSU WebUI..."
am start -n "com.dergoogler.mmrl/.ui.activity.webui.WebUIActivity" -e MOD_ID "$MODID"
echo "- Launching WebUI in MMRL WebUI..."
am start -n "com.dergoogler.mmrl/.ui.activity.webui.WebUIActivity" -e MOD_ID "tricky_store"
else
echo "- Installing KSU WebUI..."
. "$COMPATH/get_WebUI.sh"
fi
get_webui
fi

View File

@@ -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."

View File

@@ -1,49 +1,71 @@
#!/system/bin/sh
MODPATH=${0%/*}
SKIPLIST="$MODPATH/skiplist"
OUTPUT="$MODPATH/exclude-list"
KBOUTPUT="$MODPATH/.extra"
SKIPLIST="$MODPATH/tmp/skiplist"
OUTPUT="$MODPATH/tmp/exclude-list"
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
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
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
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"
[ -s "$KBOUTPUT" ] || rm -f "$KBOUTPUT"
}
if [ ! -s "$KBOUTPUT" ]; then
rm -f "$KBOUTPUT"
get_unnecessary() {
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
get_xposed
}
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")
get_xposed() {
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 ' ')
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
echo "update"
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
View 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"
}

View File

@@ -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
}

View File

@@ -33,11 +33,17 @@ fi
ui_print "- Installing..."
initialize
ui_print "- Creating config directory..."
ui_print "- Finalizing..."
find_config
migrate_old_boot_hash
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 " "

View File

@@ -1,59 +1,37 @@
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
# Cleanup left over
[ -d "/data/adb/modules/$NEW_MODID" ] && rm -rf "/data/adb/modules/$NEW_MODID"
# Set permission
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
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
NEW_MODID="$MODID"
else
tmp_dir
mkdir -p "$COMPATH/update/common"
cp "$COMPATH/.default" "$COMPATH/update/common/.default"
cp "$MODPATH/uninstall.sh" "$COMPATH/update/uninstall.sh"
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"
abort
}
sed -i "s|\"set-id\"|\"$NEW_MODID\"|" "$COMPATH/util_func.sh" || {
ui_print "! Failed to set id"
abort
}
# Set aapt binary
cp "$MODPATH/module.prop" "$COMPATH/update/module.prop"
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
# Remove legacy setup
[ -f "$SCRIPT_DIR/UpdateTargetList.sh" ] && rm -f "$SCRIPT_DIR/UpdateTargetList.sh"
[ -d "$CONFIG_DIR" ] && rm -rf "$CONFIG_DIR"
}
migrate_old_boot_hash() {
@@ -63,23 +41,3 @@ migrate_old_boot_hash() {
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.7
versionCode=270
version=v2.8
versionCode=280
author=KOWX712
description=A WebUI to conifgure tricky store target.txt
updateJson=https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/update.json

View File

@@ -6,18 +6,13 @@ while [ -z "$(ls -A /data/adb/modules/)" ]; do
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/"
if [ -f "$MODPATH/action.sh" ]; then
[ -d "/data/adb/modules/TA_utl" ] && rm -rf "/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"

View File

@@ -1,10 +1,12 @@
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"
aapt() { "$MODPATH/common/aapt" "$@"; }
# Reset verified Boot Hash
hash_value=$(grep -v '^#' "/data/adb/boot_hash" | tr -d '[:space:]')
if [ -n "$hash_value" ]; then
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"
fi
if [ -d "$MODPATH/common/temp" ]; then
if [ "$KSU" ] || [ "$APATCH" ]; then
rm -f "$MODPATH/module.prop"
fi
if [ ! -d "$HIDE_DIR" ]; then
# Hide module
if [ -f "$MODPATH/action.sh" ]; then
if [[ "$MODPATH" != "$HIDE_DIR" ]]; then
rm -rf "$HIDE_DIR"
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"
elif [ -d "$HIDE_DIR" ]; then
rm -rf "$HIDE_DIR"
fi
rm -f "$MODPATH/module.prop"
OUTPUT_APP="$MODPATH/common/applist"
OUTPUT_SKIP="$MODPATH/common/skiplist"
# Symlink tricky store
[ -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
sleep 1
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_SKIP"
pm list packages -3 </dev/null 2>&1 | cat | awk -F: '{print $2}' | while read -r PACKAGE; do

View File

@@ -11,10 +11,7 @@ fi
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
rm -f "$TS/action.sh"
rm -rf "$TS/webroot"
fi
xxd -r -p "$MODPATH/common/.default" | base64 -d > "$SCRIPT_DIR/keybox.xml"

View File

@@ -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

View File

@@ -6,6 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<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://fonts.googleapis.com/icon?family=Material+Icons">
<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>
@@ -16,16 +17,17 @@
<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>
<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">
<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 class="language-dropdown">
<button class="language-button">
<i class="fa fa-compass"></i>
<i class="material-icons">language</i>
</button>
<div class="language-menu">
<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="tl-PH">Tagalog</button>
<button class="language-option" data-lang="zh-CN">中文(简体)</button>
@@ -49,7 +51,9 @@
<!-- Menu Options -->
<div class="search-menu-container">
<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">
<button class="clear-btn" id="clear-btn">&#x2715;</button>
</div>
@@ -125,15 +129,10 @@
<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>
<div class="link">
<i class="fa fa-telegram" id="telegram" aria-hidden="true"> <span id="link-text" data-i18n="telegram_channel"></span></i>
<i class="fa fa-github" id="github" aria-hidden="true"> <span id="link-text" data-i18n="github"></span></i>
</div>
</p>
<br>
<p data-i18n="acknowledgment"></p>
@@ -145,7 +144,7 @@
<!-- Footer -->
<div class="footer">
<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>
</div>
</div>

View File

@@ -41,6 +41,10 @@ const loadingIndicator = document.querySelector('.loading');
const floatingBtn = document.querySelector('.floating-btn');
const prompt = document.getElementById('prompt');
// About Elements
const telegramLink = document.getElementById('telegram');
const githubLink = document.getElementById('github');
const basePath = "set-path";
const ADDITIONAL_APPS = [
"com.google.android.gms",
@@ -60,7 +64,7 @@ let availableLanguages = ['en-US'];
// Function to check for available language
async function initializeAvailableLanguages() {
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');
} catch (error) {
console.error('Failed to fetch available languages:', error);
@@ -314,7 +318,12 @@ async function refreshAppList() {
await new Promise(resolve => setTimeout(resolve, 500));
window.scrollTo(0, 0);
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();
loadingIndicator.style.display = 'none';
@@ -340,35 +349,56 @@ function deselectAllApps() {
});
}
// Function to run the extra script
async function runExtraScript() {
try {
const scriptPath = `${basePath}common/get_extra.sh`;
const output = await execCommand(scriptPath);
console.log("Extra script executed successfully.");
noConnection.style.display = "none";
if (output.includes("update")) {
console.log("Update detected from extra script.");
showPrompt("new_update");
updateCard.style.display = "flex";
await execCommand(`
su -c "mkdir -p '/data/adb/modules/TA_utl' &&
cp -rf '${basePath}common/temp/'* '/data/adb/modules/TA_utl/'"
`);
} else {
console.log("No update detected from extra script.");
// Function to run the update check
async function updateCheck() {
try {
const scriptPath = `sh ${basePath}common/get_extra.sh --update`;
const output = await execCommand(scriptPath);
console.log("update script executed successfully.");
noConnection.style.display = "none";
if (output.includes("update")) {
console.log("Update detected from extra script.");
showPrompt("new_update");
updateCard.style.display = "flex";
await execCommand(`
su -c "
if [ -f '${basePath}action.sh' ]; then
if [ -d "/data/adb/modules/TA_utl" ]; then
rm -rf "/data/adb/modules/TA_utl"
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
async function deselectUnnecessaryApps() {
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 apps = document.querySelectorAll(".card");
apps.forEach(app => {
@@ -376,10 +406,10 @@ async function deselectUnnecessaryApps() {
const packageName = contentElement.getAttribute("data-package");
const checkbox = app.querySelector(".checkbox");
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) {
console.error("Failed to deselect unnecessary apps:", error);
}
@@ -448,9 +478,13 @@ async function aospkb() {
// Function to replace valid kb
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";
try {
await new Promise(resolve => setTimeout(resolve, 300));
const fileExists = await execCommand(`[ -f ${sourcePath} ] && echo "exists"`);
if (fileExists.trim() !== "exists") {
throw new Error(".extra file not found");
@@ -465,7 +499,6 @@ async function extrakb() {
}
}
// Function to handle Verified Boot Hash
async function setBootHash() {
const showCard = () => {
@@ -559,10 +592,10 @@ async function fetchAppList() {
} catch (error) {
console.error("Failed to read target.txt file:", error);
}
let applistMap = {};
try {
const applistResult = await execCommand(`cat ${basePath}common/applist`);
const applistResult = await execCommand(`cat ${basePath}common/tmp/applist`);
applistMap = applistResult
.split("\n")
.reduce((map, line) => {
@@ -695,12 +728,14 @@ document.querySelector(".uninstall-container").addEventListener("click", async (
try {
await execCommand(`
su -c "
if [ -d '${basePath}common/temp/' ]; then
mkdir -p '/data/adb/modules/TA_utl' &&
cp -rf '${basePath}common/temp/'* '/data/adb/modules/TA_utl/' &&
if [ -f '${basePath}action.sh' ]; then
if [ -d "/data/adb/modules/TA_utl" ]; then
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'
else
touch '/data/adb/modules/TA_utl/remove'
touch '${basePath}remove'
fi
"
`);
@@ -765,12 +800,32 @@ document.addEventListener('DOMContentLoaded', async () => {
checkMagisk();
loadingIndicator.style.display = "none";
document.querySelector('.uninstall-container').classList.remove('hidden-uninstall');
runExtraScript();
setTimeout(updateCheck, 0);
});
// Redirect to GitHub release page
updateCard.addEventListener('click', () => {
window.location.href = 'https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/latest';
updateCard.addEventListener('click', async () => {
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

View File

@@ -1,5 +1,5 @@
# Translation Guide
## Fix Translation Error
## Fix Bad Translation
1. Fork this repository.
2. Find your language string file in `/module/webroot/locales/`.
3. Edit the string value with translated incorrectly.
@@ -8,7 +8,7 @@
---
## Add a New Language
### Simple
- Contact me in Telegram to add a new translation langauge for you.
- Contact me in Telegram to add a new translation langauge.
### Advanced
1. Fork this repository.

View 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": "新しいバージョンがあります!"
}

View File

@@ -45,17 +45,11 @@ body {
}
.no-connection {
padding-bottom: 2px;
padding: 0;
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);
background: none;
border: none;
}
.language-dropdown {
@@ -64,10 +58,9 @@ body {
}
.language-button {
padding-top: 5px;
background: none;
border: none;
font-size: 23px;
color: #333;
}
.language-menu {
@@ -125,12 +118,10 @@ body {
}
.help-button {
padding-left: 5px;
margin-right: auto;
background: none;
border: none;
font-size: 22px;
align-items: center;
justify-content: center;
}
.help-overlay {
@@ -348,14 +339,6 @@ body {
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;
}
@@ -369,6 +352,36 @@ body {
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 {
display: flex;
position: fixed;
@@ -399,8 +412,8 @@ body {
.search-icon {
position: absolute;
left: 18px;
font-size: 15px;
padding-top: 5px;
left: 15px;
z-index: 1000;
}
@@ -566,7 +579,7 @@ body {
.card {
background-color: white;
border: none;
border-radius: 10px;
border-radius: 12px;
margin: 0 auto;
margin-bottom: 10px;
outline: none;
@@ -723,8 +736,6 @@ body {
.uninstall-container i {
margin-right: 5px;
font-size: 18px;
color: #fff;
}
.uninstall-container span {
@@ -753,10 +764,18 @@ body {
background-color: #830000;
}
#telegram:active {
background-color: #1A78B3;
}
#github:active {
background-color: #4D4D4D;
}
@media (prefers-color-scheme: dark) {
body {
background-color: #121212;
color: #eee;
color: #fff;
}
.header-block,

View File

@@ -1,6 +1,6 @@
{
"versionCode": 270,
"version": "v2.7",
"zipUrl": "https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/download/v2.7/TrickyAddonModule-v2.7.zip",
"versionCode": 280,
"version": "v2.8",
"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"
}