merge weblate (#389)
Co-authored-by: Languages add-on <noreply-addon-languages@weblate.org> Co-authored-by: gallegonovato <fran-carro@hotmail.es> Co-authored-by: GeneralTDog <kevin.duy.tran@gmail.com> Co-authored-by: solokot <solokot@gmail.com> Co-authored-by: Kachelkaiser <kachelkaiser@outlook.com> Co-authored-by: Saratoga79 <ordizi79@gmail.com> Co-authored-by: Wojtek Sobczak <mister.adalbert@gmail.com> Co-authored-by: lateweb <weblate@techkoala.net> Co-authored-by: Jasper <jasper@ennik.com> Co-authored-by: GitHub Actions <actions@github.com>
This commit is contained in:
parent
ffad6b331f
commit
d6b032845b
|
@ -60,6 +60,7 @@ constructor(
|
||||||
val isAppReady = _isAppReady.asStateFlow()
|
val isAppReady = _isAppReady.asStateFlow()
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
initPin()
|
initPin()
|
||||||
initAutoTunnel()
|
initAutoTunnel()
|
||||||
|
@ -87,7 +88,7 @@ constructor(
|
||||||
|
|
||||||
private suspend fun initPin() {
|
private suspend fun initPin() {
|
||||||
val isPinEnabled = appDataRepository.appState.isPinLockEnabled()
|
val isPinEnabled = appDataRepository.appState.isPinLockEnabled()
|
||||||
if(isPinEnabled) PinManager.initialize(WireGuardAutoTunnel.instance)
|
if (isPinEnabled) PinManager.initialize(WireGuardAutoTunnel.instance)
|
||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun initAutoTunnel() {
|
private suspend fun initAutoTunnel() {
|
||||||
|
|
|
@ -4,7 +4,7 @@ import androidx.compose.ui.geometry.Offset
|
||||||
import androidx.compose.ui.input.nestedscroll.NestedScrollConnection
|
import androidx.compose.ui.input.nestedscroll.NestedScrollConnection
|
||||||
import androidx.compose.ui.input.nestedscroll.NestedScrollSource
|
import androidx.compose.ui.input.nestedscroll.NestedScrollSource
|
||||||
|
|
||||||
class NestedScrollListener( val onUp: () -> Unit, val onDown: () -> Unit) : NestedScrollConnection {
|
class NestedScrollListener(val onUp: () -> Unit, val onDown: () -> Unit) : NestedScrollConnection {
|
||||||
override fun onPreScroll(available: Offset, source: NestedScrollSource): Offset {
|
override fun onPreScroll(available: Offset, source: NestedScrollSource): Offset {
|
||||||
if (available.y < -1) onDown()
|
if (available.y < -1) onDown()
|
||||||
if (available.y > 1) onUp()
|
if (available.y > 1) onUp()
|
||||||
|
|
|
@ -100,14 +100,14 @@ fun MainScreen(viewModel: MainViewModel = hiltViewModel(), uiState: AppUiState,
|
||||||
var selectedTunnel by remember { mutableStateOf<TunnelConfig?>(null) }
|
var selectedTunnel by remember { mutableStateOf<TunnelConfig?>(null) }
|
||||||
|
|
||||||
val nestedScrollConnection = remember {
|
val nestedScrollConnection = remember {
|
||||||
NestedScrollListener({ isFabVisible = false },{ isFabVisible = true })
|
NestedScrollListener({ isFabVisible = false }, { isFabVisible = true })
|
||||||
}
|
}
|
||||||
|
|
||||||
val vpnActivityResultState =
|
val vpnActivityResultState =
|
||||||
rememberLauncherForActivityResult(
|
rememberLauncherForActivityResult(
|
||||||
ActivityResultContracts.StartActivityForResult(),
|
ActivityResultContracts.StartActivityForResult(),
|
||||||
onResult = {
|
onResult = {
|
||||||
if(it.resultCode != RESULT_OK) showVpnPermissionDialog = true
|
if (it.resultCode != RESULT_OK) showVpnPermissionDialog = true
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,6 @@ import androidx.compose.ui.text.input.KeyboardCapitalization
|
||||||
import androidx.compose.ui.text.input.KeyboardType
|
import androidx.compose.ui.text.input.KeyboardType
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import androidx.navigation.NavController
|
|
||||||
import com.zaneschepke.wireguardautotunnel.R
|
import com.zaneschepke.wireguardautotunnel.R
|
||||||
import com.zaneschepke.wireguardautotunnel.ui.AppUiState
|
import com.zaneschepke.wireguardautotunnel.ui.AppUiState
|
||||||
import com.zaneschepke.wireguardautotunnel.ui.Route
|
import com.zaneschepke.wireguardautotunnel.ui.Route
|
||||||
|
@ -67,12 +66,7 @@ import kotlinx.coroutines.delay
|
||||||
@SuppressLint("UnusedMaterial3ScaffoldPaddingParameter")
|
@SuppressLint("UnusedMaterial3ScaffoldPaddingParameter")
|
||||||
@OptIn(ExperimentalLayoutApi::class)
|
@OptIn(ExperimentalLayoutApi::class)
|
||||||
@Composable
|
@Composable
|
||||||
fun OptionsScreen(
|
fun OptionsScreen(optionsViewModel: OptionsViewModel = hiltViewModel(), focusRequester: FocusRequester, appUiState: AppUiState, tunnelId: Int) {
|
||||||
optionsViewModel: OptionsViewModel = hiltViewModel(),
|
|
||||||
focusRequester: FocusRequester,
|
|
||||||
appUiState: AppUiState,
|
|
||||||
tunnelId: Int,
|
|
||||||
) {
|
|
||||||
val scrollState = rememberScrollState()
|
val scrollState = rememberScrollState()
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
val navController = LocalNavController.current
|
val navController = LocalNavController.current
|
||||||
|
|
|
@ -5,7 +5,6 @@ import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.navigation.NavController
|
|
||||||
import com.zaneschepke.wireguardautotunnel.R
|
import com.zaneschepke.wireguardautotunnel.R
|
||||||
import com.zaneschepke.wireguardautotunnel.ui.AppViewModel
|
import com.zaneschepke.wireguardautotunnel.ui.AppViewModel
|
||||||
import com.zaneschepke.wireguardautotunnel.ui.Route
|
import com.zaneschepke.wireguardautotunnel.ui.Route
|
||||||
|
|
|
@ -60,7 +60,6 @@ import androidx.compose.ui.text.input.KeyboardCapitalization
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||||
import androidx.navigation.NavController
|
|
||||||
import com.google.accompanist.permissions.ExperimentalPermissionsApi
|
import com.google.accompanist.permissions.ExperimentalPermissionsApi
|
||||||
import com.google.accompanist.permissions.isGranted
|
import com.google.accompanist.permissions.isGranted
|
||||||
import com.google.accompanist.permissions.rememberPermissionState
|
import com.google.accompanist.permissions.rememberPermissionState
|
||||||
|
@ -92,12 +91,7 @@ import xyz.teamgravity.pin_lock_compose.PinManager
|
||||||
ExperimentalLayoutApi::class,
|
ExperimentalLayoutApi::class,
|
||||||
)
|
)
|
||||||
@Composable
|
@Composable
|
||||||
fun SettingsScreen(
|
fun SettingsScreen(viewModel: SettingsViewModel = hiltViewModel(), appViewModel: AppViewModel, uiState: AppUiState, focusRequester: FocusRequester) {
|
||||||
viewModel: SettingsViewModel = hiltViewModel(),
|
|
||||||
appViewModel: AppViewModel,
|
|
||||||
uiState: AppUiState,
|
|
||||||
focusRequester: FocusRequester,
|
|
||||||
) {
|
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
val navController = LocalNavController.current
|
val navController = LocalNavController.current
|
||||||
val focusManager = LocalFocusManager.current
|
val focusManager = LocalFocusManager.current
|
||||||
|
|
|
@ -42,7 +42,6 @@ import androidx.compose.ui.text.style.TextAlign
|
||||||
import androidx.compose.ui.text.style.TextDecoration
|
import androidx.compose.ui.text.style.TextDecoration
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.unit.sp
|
import androidx.compose.ui.unit.sp
|
||||||
import androidx.navigation.NavController
|
|
||||||
import com.zaneschepke.wireguardautotunnel.BuildConfig
|
import com.zaneschepke.wireguardautotunnel.BuildConfig
|
||||||
import com.zaneschepke.wireguardautotunnel.R
|
import com.zaneschepke.wireguardautotunnel.R
|
||||||
import com.zaneschepke.wireguardautotunnel.ui.AppUiState
|
import com.zaneschepke.wireguardautotunnel.ui.AppUiState
|
||||||
|
|
|
@ -19,7 +19,7 @@ sealed class ThemeColors(
|
||||||
val secondary: Color,
|
val secondary: Color,
|
||||||
val onSurface: Color,
|
val onSurface: Color,
|
||||||
) {
|
) {
|
||||||
//TODO fix light theme colors
|
// TODO fix light theme colors
|
||||||
data object Light : ThemeColors(
|
data object Light : ThemeColors(
|
||||||
background = LightGrey,
|
background = LightGrey,
|
||||||
surface = OffWhite,
|
surface = OffWhite,
|
||||||
|
|
|
@ -52,7 +52,7 @@ fun WireguardAutoTunnelTheme(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
useDarkTheme -> DarkColorScheme
|
useDarkTheme -> DarkColorScheme
|
||||||
//TODO force dark theme for now until light theme designed
|
// TODO force dark theme for now until light theme designed
|
||||||
else -> DarkColorScheme
|
else -> DarkColorScheme
|
||||||
}
|
}
|
||||||
val view = LocalView.current
|
val view = LocalView.current
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources></resources>
|
|
@ -0,0 +1,2 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources></resources>
|
|
@ -0,0 +1,2 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources></resources>
|
|
@ -0,0 +1,6 @@
|
||||||
|
Was ist Neu:
|
||||||
|
- Abstürze behoben
|
||||||
|
- Leistung der Kacheln verbessert
|
||||||
|
- Reaktivieren von PIN-Sperren
|
||||||
|
- "Beim Hochfahren starten" zur Einstellung gemacht
|
||||||
|
- verschiedene Leistungsanpassungen und Bugs behoben
|
|
@ -0,0 +1,5 @@
|
||||||
|
Was ist neu:
|
||||||
|
- Verbesserungen der Tunnelsteuerung in der AndroidTV Benutzeroberfläche
|
||||||
|
- Fehler beim Sperren im Portrait-Modus behoben
|
||||||
|
- Fehler welcher eine Umgehung der PIN-Sperre ermöglichte behoben
|
||||||
|
- Fehler in der Auot-Tunnel Kachel behoben
|
|
@ -0,0 +1,6 @@
|
||||||
|
Was ist neu?
|
||||||
|
- Verbesserte Zuverlässigkeit des automatischen Tunnels
|
||||||
|
- Unterstützung für hell/dunkel/dynamisches Theming hinzugefügt
|
||||||
|
- Unterstützung für Pre-/Post-Up-/Down-Skripte hinzugefügt
|
||||||
|
- Entfernen der Benachrichtigung über das Fortbestehen des Tunnels
|
||||||
|
- Verschiedene andere Korrekturen und Verbesserungen
|
|
@ -0,0 +1,5 @@
|
||||||
|
Was ist neu?
|
||||||
|
- Behebung von Problemen beim Starten von Tunneln im Hintergrund
|
||||||
|
- Unterstützung für den Neustart von Diensten nach dem Update hinzugefügt
|
||||||
|
- Verbesserungen der UI-Animationsgeschwindigkeit
|
||||||
|
- Andere Optimierungen
|
|
@ -1,2 +1,5 @@
|
||||||
Mejoras:
|
Mejoras:
|
||||||
- Añadida compatiblidad básica de Kernel WireGuard
|
- Añadida compatiblidad básica de Kernel WireGuard
|
||||||
|
- Flujo de divulgación de ubicación mejorada
|
||||||
|
- Corregido el fallo ede los persmisos del túnel automático
|
||||||
|
- Correcciones y mejoras varias
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
Novedades:
|
||||||
|
- Corrección de la regresión del túnel de parada
|
||||||
|
- Añadir ofuscación de registros
|
||||||
|
- Añadir ocultar FAB en scroll
|
||||||
|
- Añadir localización turca
|
|
@ -0,0 +1,3 @@
|
||||||
|
Novedades:
|
||||||
|
- Agregue Amnezia junto con WireGuard
|
||||||
|
- Se corrigió el error de los accesos directos de la aplicación
|
|
@ -0,0 +1,6 @@
|
||||||
|
Novedades:
|
||||||
|
- Soporte oficial para AmneziaWG
|
||||||
|
- Importación/exportación de configuraciones de Amnezia
|
||||||
|
- El túnel automático se activará solo una vez por cambio de red
|
||||||
|
- Soporte para idiomas adicionales
|
||||||
|
- Otras correcciones de errores y mejoras
|
|
@ -0,0 +1,5 @@
|
||||||
|
Novedades:
|
||||||
|
- Mejorar la denominación de las importaciones de túneles
|
||||||
|
- Se solucionó el error del estado inicial de tunelización automática
|
||||||
|
- Manejo de errores mejorado
|
||||||
|
- Se solucionó el error de importación del zip de Amnezia
|
|
@ -0,0 +1,5 @@
|
||||||
|
Novedades:
|
||||||
|
- Soporte de idiomas adicionales
|
||||||
|
- Corrección de errores en la tunelización automática de datos móviles
|
||||||
|
- Corrección del botón de acción flotante de AndroidTV
|
||||||
|
- Otras optimizaciones y mejoras
|
|
@ -0,0 +1,4 @@
|
||||||
|
Novedades:
|
||||||
|
- Se corrigieron problemas con la operación del túnel automático.
|
||||||
|
- Se solucionó el problema con la copia de seguridad de Android.
|
||||||
|
- Mayor número de versiones
|
|
@ -0,0 +1,6 @@
|
||||||
|
Novedades:
|
||||||
|
- Solucionar problemas de bloqueo
|
||||||
|
- Mejorar el rendimiento de los mosaicos
|
||||||
|
- Volver a habilitar el bloqueo del PIN
|
||||||
|
- Hacer que reiniciar al arrancar sea una configuración
|
||||||
|
- Varias correcciones de errores y rendimiento
|
|
@ -0,0 +1,5 @@
|
||||||
|
Novedades:
|
||||||
|
- Correcciones para el control del túnel de la interfaz de usuario de AndroidTV
|
||||||
|
- Corrige el error de bloqueo de retrato.
|
||||||
|
- Corrige el error de omisión del bloqueo del PIN
|
||||||
|
- Corrige el error de mosaico de túnel automático
|
|
@ -0,0 +1,6 @@
|
||||||
|
Lo nuevo:
|
||||||
|
- Fiabilidad del túnel automático mejorada
|
||||||
|
- Compatible con tema claro/oscuro/dinámico
|
||||||
|
- Compatible con scripts pre/post up/down
|
||||||
|
- Notificación persistente del túnel quitada
|
||||||
|
- Correcciones y mejoras varias
|
|
@ -0,0 +1,5 @@
|
||||||
|
Lo nuevo:
|
||||||
|
- Inicio de túneles en segundo plano corregido
|
||||||
|
- Podibilidad de reiniciar los servicios tras una actualización
|
||||||
|
- Mojorada la velocidad de las animaciones del UI
|
||||||
|
- Otras mejoras
|
|
@ -1,6 +1,6 @@
|
||||||
Características
|
Características
|
||||||
|
|
||||||
- Añade túneles a través de un archivo .conf, zip, entrada manual o código QR
|
- Añade túneles mediante archivo .conf, zip, entrada manual o código QR
|
||||||
- Conexión automática a VPN basada en Wi-Fi SSID, ethernet o datos móviles
|
- Conexión automática a VPN basada en Wi-Fi SSID, ethernet o datos móviles
|
||||||
- Túneles divididos por aplicación con búsqueda
|
- Túneles divididos por aplicación con búsqueda
|
||||||
- Soporte de WireGuard para los modos kernel y espacio de usuario
|
- Soporte de WireGuard para los modos kernel y espacio de usuario
|
||||||
|
@ -11,4 +11,4 @@ Características
|
||||||
- Soporte de accesos directos estáticos para el túnel principal para la integración de automatización.
|
- Soporte de accesos directos estáticos para el túnel principal para la integración de automatización.
|
||||||
- Soporte de automatización de intenciones para todos los túneles
|
- Soporte de automatización de intenciones para todos los túneles
|
||||||
- Reinicio automático del servicio tras reiniciar
|
- Reinicio automático del servicio tras reiniciar
|
||||||
- Medidas de conservación de la batería
|
- Medidas de ahorro de la batería
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Een alternatieve VPN client app voor Wireguard met extra functies
|
|
@ -0,0 +1 @@
|
||||||
|
WG Tunnel
|
|
@ -0,0 +1,3 @@
|
||||||
|
Usprawnienia:
|
||||||
|
- naprawiono błąd uprawnień na Android 9
|
||||||
|
- Inne optymalizacje
|
|
@ -0,0 +1,6 @@
|
||||||
|
Что нового:
|
||||||
|
- Исправлены проблемы со сбоями
|
||||||
|
- Улучшена производительность плиток
|
||||||
|
- Возвращена блокировка PIN-кодом
|
||||||
|
- Добавлена функция перезапуска при загрузке
|
||||||
|
- Различные исправления производительности и ошибок
|
|
@ -0,0 +1,5 @@
|
||||||
|
Что нового:
|
||||||
|
- Исправления интерфейса управления туннелем на AndroidTV
|
||||||
|
- Исправление ошибки блокировки в портретной ориентации
|
||||||
|
- Исправлена ошибка обхода блокировки PIN-кодом
|
||||||
|
- Исправлена ошибка с плиткой авто-туннеля
|
|
@ -0,0 +1,6 @@
|
||||||
|
Что нового:
|
||||||
|
- Повышена надежность авто-туннелирования
|
||||||
|
- Добавлена поддержка светлых/темных/динамических тем
|
||||||
|
- Добавлена поддержка сценариев до/после запуска/остановки интерфейса
|
||||||
|
- Удалено постоянное уведомление о туннеле
|
||||||
|
- Различные другие исправления и улучшения
|
|
@ -0,0 +1,5 @@
|
||||||
|
Что нового:
|
||||||
|
- Исправлены ошибки, из-за которых туннели не запускались в фоновом режиме
|
||||||
|
- Добавлена поддержка перезапуска служб после обновления
|
||||||
|
- Улучшена скорость анимации интерфейса
|
||||||
|
- Другие оптимизации
|
|
@ -1,6 +1,6 @@
|
||||||
Возможности
|
Возможности
|
||||||
|
|
||||||
- Добавление туннелей через файлы .conf, .zip, вводом вручную, или через QR-код
|
- Добавление туннелей через файлы .conf, .zip, вводом вручную или через QR-код
|
||||||
- Автоматическое подключение к VPN основываясь на имени сети Wi-Fi, подключению по Ethernet или мобильных данных
|
- Автоматическое подключение к VPN основываясь на имени сети Wi-Fi, подключению по Ethernet или мобильных данных
|
||||||
- Разделение туннелирования по приложениям с поиском
|
- Разделение туннелирования по приложениям с поиском
|
||||||
- Поддержка WireGuard в режимах ядра и пользовательского пространства
|
- Поддержка WireGuard в режимах ядра и пользовательского пространства
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
增强:
|
||||||
|
- 修复 < Android 9 权限问题
|
||||||
|
- 其他优化
|
|
@ -0,0 +1,5 @@
|
||||||
|
增强:
|
||||||
|
- 在主屏幕上添加隧道统计信息
|
||||||
|
- 改进设置屏幕的 Android TV 导航
|
||||||
|
- 移除通知振动
|
||||||
|
- 修复各种其他错误
|
|
@ -0,0 +1,5 @@
|
||||||
|
增强:
|
||||||
|
- 添加仅移动数据开启自动隧道
|
||||||
|
- 改进支持屏幕的用户界面
|
||||||
|
- 更新资源链接
|
||||||
|
- 修复各种其他错误
|
|
@ -0,0 +1,5 @@
|
||||||
|
增强:
|
||||||
|
- 添加基础的 WireGuard 内核支持
|
||||||
|
- 改进位置共享流程
|
||||||
|
- 修复自动隧道权限的错误
|
||||||
|
- 修复各种其他 UI 错误
|
|
@ -0,0 +1,2 @@
|
||||||
|
修复:
|
||||||
|
- Android 14 前台权限异常
|
|
@ -0,0 +1,7 @@
|
||||||
|
增强:
|
||||||
|
- 重构状态管理
|
||||||
|
- 改进 Android TV 导航
|
||||||
|
- 提高自动隧道效率
|
||||||
|
- 优化导航体验
|
||||||
|
- 添加自动隧道暂停功能
|
||||||
|
- 修复多项错误
|
|
@ -0,0 +1,7 @@
|
||||||
|
增强:
|
||||||
|
- 重构状态管理
|
||||||
|
- 改进 Android TV 导航
|
||||||
|
- 提高自动隧道效率
|
||||||
|
- 优化整体导航体验
|
||||||
|
- 增加自动隧道暂停功能
|
||||||
|
- 修复多项错误
|
|
@ -0,0 +1,7 @@
|
||||||
|
增强:
|
||||||
|
- 重构状态管理
|
||||||
|
- 改进 Android TV 导航
|
||||||
|
- 提高自动隧道效率
|
||||||
|
- 优化整体导航体验
|
||||||
|
- 增加自动隧道暂停功能
|
||||||
|
- 修复多项错误
|
|
@ -0,0 +1,7 @@
|
||||||
|
增强:
|
||||||
|
- 增加删除隧道确认提示
|
||||||
|
- 添加电池后台权限设置
|
||||||
|
修复:
|
||||||
|
- 修复隧道禁用冻结的问题
|
||||||
|
- 修复 Email 字段的错误
|
||||||
|
- 修复配置编辑时 DNS 为空的问题
|
|
@ -0,0 +1,3 @@
|
||||||
|
增强:
|
||||||
|
- 修复创建配置文件后未保存异常
|
||||||
|
- 升级版本
|
|
@ -0,0 +1,2 @@
|
||||||
|
更新:
|
||||||
|
- 这是一个 CI 测试版本
|
|
@ -0,0 +1,5 @@
|
||||||
|
更新:
|
||||||
|
- 实现始终在线 VPN 内核模式的重启自动启动
|
||||||
|
- 支持自适应主题图标
|
||||||
|
- 修复通知图标和快捷图标的问题
|
||||||
|
- 修复 AndroidTV 图标显示问题
|
|
@ -0,0 +1,5 @@
|
||||||
|
更新:
|
||||||
|
- 改善首次启动流程,使用户更容易上手
|
||||||
|
- 切换到 WireGuard 库的分支版本以提高性能
|
||||||
|
- 在首次启动 VPN 时请求相应权限
|
||||||
|
- 更新应用版本以包含最新改进和修复
|
|
@ -0,0 +1,2 @@
|
||||||
|
更新:
|
||||||
|
- 改善隧道 UI
|
|
@ -0,0 +1,4 @@
|
||||||
|
更新:
|
||||||
|
- 修复配置编辑界面的 UI 问题
|
||||||
|
- 在 GrapheneOS 上首次启动时添加始终在线 VPN 通知
|
||||||
|
- 更新版本
|
|
@ -0,0 +1,5 @@
|
||||||
|
更新:
|
||||||
|
- 添加日志屏幕
|
||||||
|
- 增加本地应用锁功能
|
||||||
|
- 添加 ping 失败时自动重启 VPN
|
||||||
|
- 修复各种已知错误
|
|
@ -0,0 +1,5 @@
|
||||||
|
更新:
|
||||||
|
- 根据 WiFi 名称自动连接到特定隧道
|
||||||
|
- 通过快捷方式和通知栏图块控制自动隧道
|
||||||
|
- 在重启后自动启动之前开启的手动隧道
|
||||||
|
- 修复各种已知错误并提升性能
|
|
@ -0,0 +1,5 @@
|
||||||
|
更新:
|
||||||
|
- 提升自动隧道的可靠性
|
||||||
|
- 改进通知栏图块的同步
|
||||||
|
- 添加 Android TV 相关资源
|
||||||
|
- 增加 APK 指纹验证
|
|
@ -0,0 +1,5 @@
|
||||||
|
更新:
|
||||||
|
- 修复停止隧道的回归问题
|
||||||
|
- 添加日志混淆功能
|
||||||
|
- 增加滚动时隐藏浮动操作按钮(FAB)
|
||||||
|
- 添加土耳其语本地化支持
|
|
@ -0,0 +1,3 @@
|
||||||
|
更新:
|
||||||
|
- 添加 Amnezia,与 WireGuard 并行使用
|
||||||
|
- 修复应用快捷方式的 Bug
|
|
@ -0,0 +1,6 @@
|
||||||
|
更新:
|
||||||
|
- 正式支持 AmneziaWG
|
||||||
|
- 支持导入/导出 Amnezia 配置
|
||||||
|
- 自动隧道功能优化,仅在网络变更时切换一次
|
||||||
|
- 增加多语言支持
|
||||||
|
- 其他错误修复和改进
|
|
@ -0,0 +1,5 @@
|
||||||
|
更新:
|
||||||
|
- 改进隧道导入命名
|
||||||
|
- 修复自动隧道初始化状态错误
|
||||||
|
- 改进错误处理
|
||||||
|
- 修复 Amnezia 压缩包导入错误
|
|
@ -0,0 +1,5 @@
|
||||||
|
更新:
|
||||||
|
- 额外的语言支持
|
||||||
|
- 修复自动隧道移动数据的错误
|
||||||
|
- 修复 AndroidTV 浮动操作按钮的错误
|
||||||
|
- 其他优化和增强
|
|
@ -0,0 +1,4 @@
|
||||||
|
更新:
|
||||||
|
- 修复自动隧道错误
|
||||||
|
- 修复安卓备份错误
|
||||||
|
- 版本升级
|
|
@ -0,0 +1,6 @@
|
||||||
|
更新:
|
||||||
|
- 修复崩溃问题
|
||||||
|
- 改善快捷图标性能
|
||||||
|
- 重新启用锁定功能
|
||||||
|
- 将启动时重启设为一个设置选项
|
||||||
|
- 各种性能和错误修复
|
|
@ -0,0 +1,5 @@
|
||||||
|
更新:
|
||||||
|
- 修复 AndroidTV UI 隧道控制问题
|
||||||
|
- 修复竖屏锁定错误
|
||||||
|
- 修复 PIN 锁绕过错误
|
||||||
|
- 修复自动隧道图块错误
|
|
@ -0,0 +1,6 @@
|
||||||
|
更新:
|
||||||
|
- 提高自动隧道的可靠性
|
||||||
|
- 增加对浅色/深色/动态主题的支持
|
||||||
|
- 增加对预/后启动/关闭脚本的支持
|
||||||
|
- 移除隧道持久通知
|
||||||
|
- 其他各种修复和改进
|
|
@ -0,0 +1,5 @@
|
||||||
|
更新:
|
||||||
|
- 修复隧道无法从后台启动的问题
|
||||||
|
- 增加更新后重启服务的支持
|
||||||
|
- 改进 UI 动画速度
|
||||||
|
- 其他优化
|
|
@ -0,0 +1,14 @@
|
||||||
|
功能:
|
||||||
|
|
||||||
|
- 支持通过 .conf 文件、压缩文件、手动输入或 QR 码添加隧道
|
||||||
|
- 根据 Wi-Fi SSID、以太网或移动数据自动连接 VPN
|
||||||
|
- 支持按应用程序进行分流隧道,并支持搜索功能
|
||||||
|
- 支持内核和用户空间模式的 WireGuard
|
||||||
|
- 支持 Amnezia 用户空间模式,以应对 DPI/审查保护
|
||||||
|
- 支持“始终在线” VPN
|
||||||
|
- 支持将 Amnezia 和 WireGuard 隧道导出为压缩文件
|
||||||
|
- 支持快速切换 VPN 的快捷方式
|
||||||
|
- 支持主要隧道的静态快捷方式,便于自动化集成
|
||||||
|
- 支持所有隧道的意图自动化
|
||||||
|
- 支持重启手机后自动重启服务
|
||||||
|
- 耗电优化
|
|
@ -0,0 +1 @@
|
||||||
|
一款更具功能性的 WireGuard VPN 替代客户端应用程序
|
|
@ -0,0 +1 @@
|
||||||
|
WG Tunnel
|
|
@ -23,7 +23,7 @@ timber = "5.0.1"
|
||||||
tunnel = "1.2.1"
|
tunnel = "1.2.1"
|
||||||
androidGradlePlugin = "8.7.0"
|
androidGradlePlugin = "8.7.0"
|
||||||
kotlin = "2.0.21"
|
kotlin = "2.0.21"
|
||||||
ksp = "2.0.20-1.0.25"
|
ksp = "2.0.21-1.0.25"
|
||||||
composeBom = "2024.09.03"
|
composeBom = "2024.09.03"
|
||||||
compose = "1.7.3"
|
compose = "1.7.3"
|
||||||
zxingAndroidEmbedded = "4.3.0"
|
zxingAndroidEmbedded = "4.3.0"
|
||||||
|
|
Loading…
Reference in New Issue