diff --git a/app/src/main/java/chat/vojo/proxy/ui/ConnectionScreen.kt b/app/src/main/java/chat/vojo/proxy/ui/ConnectionScreen.kt
index 32dc334..642806a 100644
--- a/app/src/main/java/chat/vojo/proxy/ui/ConnectionScreen.kt
+++ b/app/src/main/java/chat/vojo/proxy/ui/ConnectionScreen.kt
@@ -310,24 +310,36 @@ private fun ConnToggle(
}
/**
- * Subtle line under the server card stating what the proxy actually carries — so the
- * "Сайты" split is never invisible (an empty list is now a full tunnel; a non-empty list
- * shows how much is proxied vs direct).
+ * Subtle line under the server card stating what the tunnel actually carries — across BOTH
+ * filters, so neither is invisible: the per-app scope ("N приложений", only when the Apps
+ * whitelist is active — otherwise it's all apps) and the destination split from "Сайты"
+ * (empty list = full tunnel; a non-empty list shows how much is proxied vs direct).
*/
@Composable
private fun RoutingScopeLine(settings: AppSettings, modifier: Modifier = Modifier) {
- val n = settings.routedSites.size
- val text = when {
- n == 0 -> stringResource(R.string.route_scope_all)
+ val sites = settings.routedSites.size
+ val dest = when {
+ sites == 0 -> stringResource(R.string.route_scope_all)
settings.routingMode == RoutingMode.DIRECT_ALL ->
- stringResource(R.string.route_scope_only, pluralStringResource(R.plurals.route_rules, n, n))
+ stringResource(R.string.route_scope_only, pluralStringResource(R.plurals.route_rules, sites, sites))
else ->
- stringResource(R.string.route_scope_except, pluralStringResource(R.plurals.route_rules, n, n))
+ stringResource(R.string.route_scope_except, pluralStringResource(R.plurals.route_rules, sites, sites))
+ }
+ // A non-empty per-app whitelist confines the whole tunnel to those apps, so "всё" is only
+ // ever device-wide when the list is empty — qualify it with the app count when it isn't.
+ val apps = settings.allowedApps.size
+ val text = if (apps > 0) {
+ pluralStringResource(R.plurals.route_apps, apps, apps) + " · " + dest
+ } else {
+ dest
}
Row(modifier, verticalAlignment = Alignment.CenterVertically) {
Box(Modifier.size(5.dp).clip(CircleShape).background(Vojo.fleetSoft.copy(alpha = 0.55f)))
Spacer(Modifier.width(8.dp))
- Text(text, color = Vojo.muted, fontSize = 12.5.sp, maxLines = 1, overflow = TextOverflow.Ellipsis)
+ Text(
+ text.replaceFirstChar { it.uppercase() },
+ color = Vojo.muted, fontSize = 12.5.sp, maxLines = 1, overflow = TextOverflow.Ellipsis,
+ )
}
}
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index b3859a1..979168a 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -47,10 +47,11 @@
Пик
/с
-
- Весь трафик через прокси
- Через прокси: %1$s
- Через прокси, кроме %1$s
+
+ всё через прокси
+ через прокси: %1$s
+ через прокси, кроме %1$s
Добавить сервер
@@ -193,6 +194,12 @@
- %d правил
- %d правила
+
+ - %d приложение
+ - %d приложения
+ - %d приложений
+ - %d приложения
+
- %d домен
- %d домена
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 91f7166..7d5f849 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -54,10 +54,11 @@
Peak
/s
-
- All traffic through the proxy
- Through the proxy: %1$s
- Through the proxy, except %1$s
+
+ all through the proxy
+ through the proxy: %1$s
+ through the proxy, except %1$s
Add server
@@ -200,6 +201,11 @@
- %d rule
- %d rules
+
+
+ - %d app
+ - %d apps
+
- %d domain
- %d domains