Compare commits

..

61 Commits

Author SHA1 Message Date
chen08209 c5d25c9dd5 Fix android notification icon error 2024-06-08 22:51:58 +08:00
chen08209 c65746709d Add one-click update all profiles
Add expire show
2024-06-08 15:43:28 +08:00
chen08209 d2d9bdab02 Temp remove tun mode 2024-06-06 22:58:32 +08:00
chen08209 d0f8444b6d Remove macos in workflow 2024-06-06 22:29:26 +08:00
chen08209 fccabfbe27 Change go version 2024-06-06 22:04:29 +08:00
chen08209 e9bb97c6ce Update Version
Fix tun unable to open
2024-06-06 17:36:49 +08:00
chen08209 068fe14d89 Optimize delay test2 2024-06-06 17:13:32 +08:00
chen08209 43c397007c Optimize delay test
Add check ip
2024-06-06 16:35:09 +08:00
chen08209 5e801d5f5e add check ip request 2024-06-06 16:34:31 +08:00
chen08209 52d61b15fd Fix the problem that the download of remote resources failed after GeodataMode was turned on, which caused the application to flash back.
Fix edit profile error
2024-06-06 10:15:51 +08:00
chen08209 fea3c14608 Fix quickStart change proxy error 2024-06-05 17:59:53 +08:00
chen08209 84be01a38a Fix core version 2024-06-05 17:59:50 +08:00
chen08209 93da242148 Fix core version 2024-06-05 14:13:54 +08:00
chen08209 bb7e44da30 Update file_picker
Add resources page

Optimize more detail
2024-06-05 13:44:11 +08:00
chen08209 01f1b2d72f Add access selected sorted 2024-06-05 13:43:44 +08:00
chen08209 3074b1299e Fix notification duplicate creation issue
Fix AccessControl click issue
2024-06-03 11:48:50 +08:00
chen08209 bd5470b863 Fix Workflow 2024-05-31 22:34:46 +08:00
chen08209 83fafa4b68 Fix Linux unable to open 2024-05-31 22:12:41 +08:00
chen08209 b7fb969301 Update README.md 3 2024-05-31 15:41:08 +08:00
chen08209 3ef3190785 Create LICENSE 2024-05-31 15:11:15 +08:00
chen08209 b1c763fcfa Update README.md 2 2024-05-31 15:08:51 +08:00
chen08209 9452ffa514 Update README.md 2024-05-31 15:02:18 +08:00
chen08209 c9291e5027 Optimize workFlow 2024-05-31 14:25:15 +08:00
chen08209 3ba86dc9c2 optimize checkUpdate 2024-05-31 10:07:51 +08:00
chen08209 fd3040283c Fix submit error 2024-05-30 17:22:23 +08:00
chen08209 91d30c0f0e add WebDAV
add Auto check updates

Optimize more details
2024-05-30 17:11:15 +08:00
chen08209 c4b470ffaf optimize delayTest 2024-05-17 19:54:57 +08:00
chen08209 9a07c785f2 upgrade flutter version 2024-05-15 20:34:59 +08:00
chen08209 a134c32493 Update kernel
Add import profile via QR code image
2024-05-15 20:21:02 +08:00
chen08209 472cea9037 Add compatibility mode and adapt clash scheme. 2024-05-11 14:10:06 +08:00
chen08209 08d07498b9 update Version 2024-05-07 18:32:21 +08:00
chen08209 d5aa09949a Reconstruction application proxy logic 2024-05-07 18:31:14 +08:00
chen08209 fd1dfe5c60 Fix Tab destroy error 2024-05-06 19:05:27 +08:00
chen08209 9f89fe8b29 Optimize repeat healthcheck 2024-05-06 17:17:26 +08:00
chen08209 78081a12e8 Optimize Direct mode ui 2024-05-06 15:27:37 +08:00
chen08209 6896837f28 Optimize Healthcheck 2024-05-06 14:32:23 +08:00
chen08209 85eb903402 Remove proxies position animation, improve performance
Add Telegram Link
2024-05-06 14:32:22 +08:00
chen08209 9aa9180f1f Update healthcheck policy 2024-05-06 14:32:21 +08:00
chen08209 feb9688a29 New Check URLTest 2024-05-06 14:32:21 +08:00
chen08209 5c71992174 Fix the problem of invalid auto-selection 2024-05-05 16:14:34 +08:00
chen08209 74c3d0ae25 New Async UpdateConfig 2024-05-05 03:13:52 +08:00
chen08209 ecd1bcafd5 add changeProfileDebounce 2024-05-05 03:13:51 +08:00
chen08209 184d2d117a Update Workflow 2024-05-05 03:13:50 +08:00
chen08209 89e6f17794 Fix ChangeProfile block 2024-05-05 03:13:49 +08:00
chen08209 aef50fe0e3 Fix Release Message Error 2024-05-04 16:14:03 +08:00
chen08209 fc0767ed25 Update Selector 2 2024-05-04 01:14:56 +08:00
chen08209 dbf1724cca Update Version 2024-05-04 00:14:34 +08:00
chen08209 909aa4038e Fix Proxies Select Error 2024-05-04 00:14:07 +08:00
chen08209 2d0a7d8d46 Fix the problem that the proxy group is empty in global mode. 2024-05-03 23:08:06 +08:00
chen08209 ca96cd1d82 Fix the problem that the proxy group is empty in global mode. 2024-05-03 23:07:38 +08:00
chen08209 91ab1e5dac Add ProxyProvider2 2024-05-03 21:48:22 +08:00
chen08209 b3a5f74df8 Add ProxyProvider 2024-05-03 21:28:22 +08:00
chen08209 1f98be8ad8 Update Version 2024-05-03 15:33:46 +08:00
chen08209 453c7c98d0 Update ProxyGroup Sort 2024-05-03 15:33:45 +08:00
chen08209 91faed35c0 Fix Android quickStart VpnService some problems 2024-05-02 00:32:11 +08:00
chen08209 07bbaf6b6f Update version 2024-05-01 23:40:04 +08:00
chen08209 e8feb7c431 Set Android notification low importance 2024-05-01 23:40:03 +08:00
chen08209 4d16820526 Fix the issue that VpnService can't be closed correctly in special cases 2024-05-01 23:40:00 +08:00
chen08209 92294b49c6 Fix the problem that TileService is not destroyed correctly in some cases
Adjust tab animation defaults
2024-05-01 23:39:59 +08:00
chen08209 8a188a37c9 Add Telegram in README_zh_CN.md 2024-05-01 21:52:07 +08:00
chen08209 48af16c265 Add Telegram 2024-05-01 21:50:26 +08:00
16 changed files with 43 additions and 35 deletions
+2 -2
View File
@@ -17,8 +17,8 @@ jobs:
os: windows-latest
- platform: linux
os: ubuntu-latest
- platform: macos
os: macos-13
# - platform: macos
# os: macos-13
steps:
- name: Checkout
+2
View File
@@ -34,6 +34,8 @@ on Mobile:
💡 Based on Material You Design, [Surfboard](https://github.com/getsurfboard/surfboard)-like UI
☁️ Supports data sync via WebDAV
✨ Support subscription link, Dark mode
## Contact
+2
View File
@@ -34,6 +34,8 @@ on Mobile:
💡 基本 Material You 设计, 类[Surfboard](https://github.com/getsurfboard/surfboard)用户界面
☁️ 支持通过WebDAV同步数据
✨ 支持一键导入订阅, 深色模式
## Contact
+1 -1
View File
@@ -62,7 +62,7 @@ android {
defaultConfig {
applicationId "com.follow.clash"
minSdkVersion 21
minSdkVersion 24
targetSdkVersion 34
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
+6 -6
View File
@@ -1,9 +1,6 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-feature
android:name="android.software.leanback"
android:required="false" />
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
@@ -17,8 +14,10 @@
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" tools:ignore="QueryAllPackagesPermission"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE"
tools:ignore="SystemPermissionTypo" />
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"
tools:ignore="QueryAllPackagesPermission" />
<application
android:name="${applicationName}"
@@ -73,7 +72,8 @@
<service
android:name=".services.FlClashTileService"
android:exported="true"
android:icon="@drawable/tile_icon"
android:icon="@drawable/icon"
android:foregroundServiceType="specialUse"
android:label="FlClash"
android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
<intent-filter>
@@ -19,7 +19,6 @@ import io.flutter.embedding.engine.FlutterEngine
import io.flutter.embedding.engine.dart.DartExecutor
@RequiresApi(Build.VERSION_CODES.N)
class FlClashTileService : TileService() {
private val observer = Observer<RunState> { runState ->
@@ -43,19 +42,27 @@ class FlClashTileService : TileService() {
GlobalState.runState.observeForever(observer)
}
@SuppressLint("StartActivityAndCollapseDeprecated")
private fun activityTransfer() {
val intent = Intent(this, TempActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
if (Build.VERSION.SDK_INT >= 34) {
val pendingIntent = PendingIntent.getActivity(
val pendingIntent = if (Build.VERSION.SDK_INT >= 31) {
PendingIntent.getActivity(
this,
0,
intent,
PendingIntent.FLAG_IMMUTABLE
PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
)
startActivityAndCollapse(pendingIntent)
} else {
PendingIntent.getActivity(
this,
0,
intent,
PendingIntent.FLAG_UPDATE_CURRENT
)
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
startActivityAndCollapse(pendingIntent)
}else{
startActivityAndCollapse(intent)
}
}
@@ -1,10 +1,9 @@
package com.follow.clash.services
import android.annotation.SuppressLint
import android.app.Notification.FOREGROUND_SERVICE_IMMEDIATE
import android.app.NotificationChannel
import android.app.NotificationManager
import android.app.PendingIntent
import android.app.Service
import android.content.Intent
import android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_SPECIAL_USE
import android.net.ProxyInfo
@@ -13,15 +12,13 @@ import android.os.Binder
import android.os.Build
import android.os.IBinder
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationCompat.FOREGROUND_SERVICE_IMMEDIATE
import androidx.core.graphics.drawable.IconCompat
import com.follow.clash.GlobalState
import com.follow.clash.MainActivity
import com.follow.clash.R
import com.follow.clash.models.AccessControl
import com.follow.clash.models.AccessControlMode
@SuppressLint("WrongConstant")
class FlClashVpnService : VpnService() {
@@ -100,10 +97,10 @@ class FlClashVpnService : VpnService() {
}
private val notificationBuilder by lazy {
private val notificationBuilder: NotificationCompat.Builder by lazy {
val intent = Intent(this, MainActivity::class.java)
val pendingIntent = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
val pendingIntent = if (Build.VERSION.SDK_INT >= 31) {
PendingIntent.getActivity(
this,
0,
@@ -119,43 +116,43 @@ class FlClashVpnService : VpnService() {
)
}
val icon = IconCompat.createWithResource(this, this.applicationInfo.icon)
with(NotificationCompat.Builder(this, CHANNEL)) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
setSmallIcon(icon)
}
setSmallIcon(R.drawable.ic_stat_name)
setContentTitle("FlClash")
foregroundServiceBehavior = FOREGROUND_SERVICE_IMMEDIATE
setContentIntent(pendingIntent)
setCategory(NotificationCompat.CATEGORY_SERVICE)
priority = NotificationCompat.PRIORITY_LOW
priority = NotificationCompat.PRIORITY_MIN
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
foregroundServiceBehavior = FOREGROUND_SERVICE_IMMEDIATE
}
setOngoing(true)
setShowWhen(false)
setOnlyAlertOnce(true)
setAutoCancel(true);
}
}
@SuppressLint("ForegroundServiceType", "WrongConstant")
fun startForeground(title: String, content: String) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val channel =
NotificationChannel(CHANNEL, "FlClash", NotificationManager.IMPORTANCE_LOW)
val manager = getSystemService(NotificationManager::class.java)
manager.createNotificationChannel(channel)
channel.setShowBadge(false)
}
val notification =
notificationBuilder.setContentTitle(title).setContentText(content).build()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
startForeground(notificationId, notification, FOREGROUND_SERVICE_TYPE_SPECIAL_USE)
} else {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
startForeground(notificationId, notification, FOREGROUND_SERVICE_TYPE_SPECIAL_USE)
}else{
startForeground(notificationId, notification)
}
}
private fun stopForeground() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
stopForeground(Service.STOP_FOREGROUND_REMOVE)
stopForeground(STOP_FOREGROUND_REMOVE)
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 763 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 520 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

@@ -38,6 +38,7 @@ class _NetworkDetectionState extends State<NetworkDetection> {
} else {
timeoutNotifier.value = false;
}
_preIsStart = isStart;
ipInfoNotifier.value = ipInfo;
}
-1
View File
@@ -1,5 +1,4 @@
// ignore_for_file: avoid_print
void main() async {
String input = """
您