Skip to content

Commit d835a22

Browse files
authored
Merge pull request #2 from oviron/feature/settings-audit
v0.13.0: settings audit, IA regroup, desktop strip, dead-code purge
2 parents fe08326 + 206856b commit d835a22

75 files changed

Lines changed: 1124 additions & 4232 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/build.yaml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,24 @@ jobs:
4848
exit 1
4949
fi
5050
51+
- name: DCM check-unused-code
52+
run: |
53+
out=$(dart run dart_code_linter:metrics check-unused-code lib 2>&1)
54+
echo "$out"
55+
if echo "$out" | grep -q "✖ total unused"; then
56+
echo "::error::dart_code_linter found unused code"
57+
exit 1
58+
fi
59+
60+
- name: DCM check-unused-files
61+
run: |
62+
out=$(dart run dart_code_linter:metrics check-unused-files lib 2>&1)
63+
echo "$out"
64+
if echo "$out" | grep -q "✖ total unused files"; then
65+
echo "::error::dart_code_linter found unused files"
66+
exit 1
67+
fi
68+
5169
- name: Flutter test
5270
run: flutter test --no-pub --reporter=expanded
5371

@@ -84,6 +102,9 @@ jobs:
84102
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
85103

86104
build:
105+
# Pull requests get lint+secrets only (under 5 min). Full APK matrix runs
106+
# on push to main and on version tags, where it gates the release.
107+
if: github.event_name != 'pull_request'
87108
runs-on: ${{ matrix.os }}
88109
timeout-minutes: 45
89110
needs: lint

arb/intl_en.arb

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,33 @@
11
{
2+
"ipv6": "IPv6",
3+
"ipv6Engine": "IPv6 (engine)",
4+
"ipv6DnsQueries": "IPv6 (DNS queries)",
5+
"ipv6Inbound": "IPv6 (VPN inbound)",
6+
"appearance": "Appearance",
7+
"engine": "Engine",
8+
"vpnSettings": "VPN settings",
9+
"routingRules": "Routing rules",
10+
"coreDesc": "Ports, IPv6, hosts, find-process, geodata loader, test URL",
11+
"dnsServerSection": "Server",
12+
"dnsResolversSection": "Resolvers",
13+
"dnsBehaviorSection": "Behavior",
14+
"launchAndBackground": "Launch & background",
15+
"userInterface": "User interface",
16+
"resetSection": "Reset",
17+
"privacyAndSecurity": "Privacy & Security",
18+
"developerModeDesc": "Adds a Developer screen with diagnostic actions.",
19+
"crashReporting": "Crash reporting",
20+
"comingSoon": "Coming soon",
21+
"thirdPartyNotices": "Third-party notices",
22+
"byedpiAttribution": "by hufrea (MIT)",
23+
"routeAddressBypassPrivateHint": "Not used in Bypass private mode",
24+
"aclSaveDroppedUninstalled": "Removed N uninstalled app(s) from list",
25+
"confirmDeleteWebDAV": "Delete WebDAV configuration?",
26+
"preferH3": "Prefer H3",
27+
"geoip": "Geo IP",
28+
"geosite": "Geo Site",
29+
"vpn": "VPN",
30+
"hosts": "Hosts",
231
"rule": "Rule",
332
"global": "Global",
433
"direct": "Direct",
@@ -39,8 +68,6 @@
3968
"minimizeOnExitDesc": "Back button sends the app to background instead of closing it",
4069
"autoLaunch": "Start on device boot",
4170
"autoLaunchDesc": "VPN service launches automatically after the phone reboots (requires OEM whitelisting)",
42-
"silentLaunch": "Silent launch",
43-
"silentLaunchDesc": "Start in the background",
4471
"autoRun": "Connect on app open",
4572
"autoRunDesc": "Tunnel comes up immediately when the app is launched",
4673
"inAppLogBuffer": "In-app log buffer",
@@ -146,8 +173,6 @@
146173
"app": "App",
147174
"general": "General",
148175
"systemProxyDesc": "Attach HTTP proxy to VpnService",
149-
"unifiedDelay": "Unified delay",
150-
"unifiedDelayDesc": "Remove extra delays such as handshaking",
151176
"tcpConcurrent": "TCP concurrent",
152177
"tcpConcurrentDesc": "Enabling it will allow TCP concurrency",
153178
"geodataLoader": "Geo Low Memory Mode",
@@ -166,8 +191,8 @@
166191
"paste": "Paste",
167192
"testUrl": "Test url",
168193
"sync": "Sync",
169-
"exclude": "Hide from recents",
170-
"excludeDesc": "App icon does not appear in the recent apps list while the app is in background",
194+
"hideFromRecents": "Hide from recents",
195+
"hideFromRecentsDesc": "App icon does not appear in the recent apps list while the app is in background",
171196
"expand": "Standard",
172197
"shrink": "Shrink",
173198
"min": "Min",
@@ -298,10 +323,6 @@
298323
"undo": "undo",
299324
"redo": "redo",
300325
"none": "none",
301-
"basicConfig": "Basic configuration",
302-
"basicConfigDesc": "Modify the basic configuration globally",
303-
"advancedConfig": "Advanced configuration",
304-
"advancedConfigDesc": "Provide diverse configuration options",
305326
"selectedCountTitle": "{count} items have been selected",
306327
"addRule": "Add rule",
307328
"ruleName": "Rule name",
@@ -311,7 +332,7 @@
311332
"sourceIp": "Source IP",
312333
"noResolve": "No resolve IP",
313334
"saveChanges": "Do you want to save the changes?",
314-
"findProcessModeDesc": "There is a certain performance loss after opening",
335+
"findProcessModeDesc": "Fallback used only when profile YAML omits find-process-mode. Small performance impact.",
315336
"tabAnimationDesc": "Smooth slide between tabs (mobile layout only)",
316337
"colorSchemes": "Color schemes",
317338
"palette": "Palette",
@@ -425,7 +446,7 @@
425446
"restoreSuccess": "Restore success",
426447
"restoreFromWebDAVDesc": "Restore data via WebDAV",
427448
"restoreFromFileDesc": "Restore data via file",
428-
"restoreOnlyConfig": "Restore configuration files only",
449+
"restoreOnlyProfiles": "Restore profiles only",
429450
"restoreAllData": "Restore all data",
430451
"addProfile": "Add Profile",
431452
"delayTest": "Delay Test",

arb/intl_ja.arb

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,33 @@
11
{
2+
"ipv6": "IPv6",
3+
"ipv6Engine": "IPv6 (エンジン)",
4+
"ipv6DnsQueries": "IPv6 (DNSクエリ)",
5+
"ipv6Inbound": "IPv6 (VPNインバウンド)",
6+
"appearance": "外観",
7+
"engine": "エンジン",
8+
"vpnSettings": "VPN設定",
9+
"routingRules": "ルーティングルール",
10+
"coreDesc": "ポート、IPv6、hosts、find-process、geodata loader、test URL",
11+
"dnsServerSection": "サーバー",
12+
"dnsResolversSection": "リゾルバ",
13+
"dnsBehaviorSection": "動作",
14+
"launchAndBackground": "起動とバックグラウンド",
15+
"userInterface": "ユーザーインターフェース",
16+
"resetSection": "リセット",
17+
"privacyAndSecurity": "プライバシーとセキュリティ",
18+
"developerModeDesc": "診断アクション付きの開発者画面を追加します。",
19+
"crashReporting": "クラッシュレポート",
20+
"comingSoon": "近日公開",
21+
"thirdPartyNotices": "サードパーティの通知",
22+
"byedpiAttribution": "hufrea 作 (MIT)",
23+
"routeAddressBypassPrivateHint": "Bypass privateモードでは使用されません",
24+
"aclSaveDroppedUninstalled": "リストから N 個の未インストールアプリを削除しました",
25+
"confirmDeleteWebDAV": "WebDAVの設定を削除しますか?",
26+
"preferH3": "Prefer H3",
27+
"geoip": "Geo IP",
28+
"geosite": "Geo Site",
29+
"vpn": "VPN",
30+
"hosts": "ホスト",
231
"rule": "ルール",
332
"global": "グローバル",
433
"direct": "ダイレクト",
@@ -39,8 +68,6 @@
3968
"minimizeOnExitDesc": "Back button sends the app to background instead of closing it",
4069
"autoLaunch": "Start on device boot",
4170
"autoLaunchDesc": "VPN service launches automatically after the phone reboots (requires OEM whitelisting)",
42-
"silentLaunch": "Silent launch",
43-
"silentLaunchDesc": "Start in the background",
4471
"autoRun": "Connect on app open",
4572
"autoRunDesc": "Tunnel comes up immediately when the app is launched",
4673
"inAppLogBuffer": "アプリ内ログバッファ",
@@ -146,8 +173,6 @@
146173
"app": "アプリ",
147174
"general": "一般",
148175
"systemProxyDesc": "HTTPプロキシをVpnServiceに接続",
149-
"unifiedDelay": "統一遅延",
150-
"unifiedDelayDesc": "ハンドシェイクなどの余分な遅延を削除",
151176
"tcpConcurrent": "TCP並列処理",
152177
"tcpConcurrentDesc": "TCP並列処理を許可",
153178
"geodataLoader": "Geo低メモリモード",
@@ -166,8 +191,8 @@
166191
"paste": "貼り付け",
167192
"testUrl": "URLテスト",
168193
"sync": "同期",
169-
"exclude": "Hide from recents",
170-
"excludeDesc": "App icon does not appear in the recent apps list while the app is in background",
194+
"hideFromRecents": "Hide from recents",
195+
"hideFromRecentsDesc": "App icon does not appear in the recent apps list while the app is in background",
171196
"expand": "標準",
172197
"shrink": "縮小",
173198
"min": "最小化",
@@ -298,10 +323,6 @@
298323
"undo": "元に戻す",
299324
"redo": "やり直す",
300325
"none": "なし",
301-
"basicConfig": "基本設定",
302-
"basicConfigDesc": "基本設定をグローバルに変更",
303-
"advancedConfig": "高度な設定",
304-
"advancedConfigDesc": "多様な設定を提供",
305326
"selectedCountTitle": "{count} 項目が選択されています",
306327
"addRule": "ルールを追加",
307328
"ruleName": "ルール名",
@@ -311,7 +332,7 @@
311332
"sourceIp": "送信元IP",
312333
"noResolve": "IPを解決しない",
313334
"saveChanges": "変更を保存しますか?",
314-
"findProcessModeDesc": "有効化するとパフォーマンスが若干低下します",
335+
"findProcessModeDesc": "プロファイルYAMLにfind-process-modeが指定されていない場合のフォールバック。有効化するとパフォーマンスが若干低下します",
315336
"tabAnimationDesc": "Smooth slide between tabs (mobile layout only)",
316337
"colorSchemes": "カラースキーム",
317338
"palette": "パレット",
@@ -434,7 +455,7 @@
434455
"restoreSuccess": "復元に成功しました",
435456
"restoreFromWebDAVDesc": "WebDAVを介してデータを復元する",
436457
"restoreFromFileDesc": "ファイルを介してデータを復元する",
437-
"restoreOnlyConfig": "設定ファイルのみを復元する",
458+
"restoreOnlyProfiles": "プロファイルのみを復元する",
438459
"restoreAllData": "すべてのデータを復元する",
439460
"addProfile": "プロファイルを追加",
440461
"delayTest": "遅延テスト",

arb/intl_ru.arb

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,33 @@
11
{
2+
"ipv6": "IPv6",
3+
"ipv6Engine": "IPv6 (движок)",
4+
"ipv6DnsQueries": "IPv6 (DNS-запросы)",
5+
"ipv6Inbound": "IPv6 (VPN inbound)",
6+
"appearance": "Внешний вид",
7+
"engine": "Движок",
8+
"vpnSettings": "Настройки VPN",
9+
"routingRules": "Правила маршрутизации",
10+
"coreDesc": "Порты, IPv6, hosts, find-process, geodata loader, test URL",
11+
"dnsServerSection": "Сервер",
12+
"dnsResolversSection": "Резолверы",
13+
"dnsBehaviorSection": "Поведение",
14+
"launchAndBackground": "Запуск и фон",
15+
"userInterface": "Интерфейс",
16+
"resetSection": "Сброс",
17+
"privacyAndSecurity": "Приватность и безопасность",
18+
"developerModeDesc": "Добавляет экран разработчика с диагностическими действиями.",
19+
"crashReporting": "Отчёты о сбоях",
20+
"comingSoon": "Скоро",
21+
"thirdPartyNotices": "Сторонние компоненты",
22+
"byedpiAttribution": "разработка hufrea (MIT)",
23+
"routeAddressBypassPrivateHint": "Не используется в режиме Bypass private",
24+
"aclSaveDroppedUninstalled": "Удалено N не-установленных приложений из списка",
25+
"confirmDeleteWebDAV": "Удалить настройки WebDAV?",
26+
"preferH3": "Prefer H3",
27+
"geoip": "Geo IP",
28+
"geosite": "Geo Site",
29+
"vpn": "VPN",
30+
"hosts": "Hosts",
231
"rule": "Правило",
332
"global": "Глобальный",
433
"direct": "Прямой",
@@ -39,8 +68,6 @@
3968
"minimizeOnExitDesc": "По кнопке «Назад» приложение уходит в фон, а не закрывается",
4069
"autoLaunch": "Запуск при загрузке системы",
4170
"autoLaunchDesc": "VPN-сервис стартует после перезагрузки телефона (нужен whitelist OEM)",
42-
"silentLaunch": "Тихий запуск",
43-
"silentLaunchDesc": "Запуск в фоновом режиме",
4471
"autoRun": "Подключаться при открытии",
4572
"autoRunDesc": "Туннель поднимается сразу при запуске приложения",
4673
"inAppLogBuffer": "Внутренний журнал",
@@ -152,8 +179,6 @@
152179
"app": "Приложение",
153180
"general": "Общие",
154181
"systemProxyDesc": "Прикрепить HTTP-прокси к VpnService",
155-
"unifiedDelay": "Унифицированная задержка",
156-
"unifiedDelayDesc": "Убрать дополнительные задержки, такие как рукопожатие",
157182
"tcpConcurrent": "TCP параллелизм",
158183
"tcpConcurrentDesc": "Включение позволит использовать параллелизм TCP",
159184
"geodataLoader": "Режим низкого потребления памяти для геоданных",
@@ -172,8 +197,8 @@
172197
"paste": "Вставить",
173198
"testUrl": "Тест URL",
174199
"sync": "Синхронизация",
175-
"exclude": "Прятать из недавних задач",
176-
"excludeDesc": "Иконка не показывается в списке недавних приложений, когда оно уходит в фон",
200+
"hideFromRecents": "Прятать из недавних задач",
201+
"hideFromRecentsDesc": "Иконка не показывается в списке недавних приложений, когда оно уходит в фон",
177202
"expand": "Стандартный",
178203
"shrink": "Сжать",
179204
"min": "Мин",
@@ -306,10 +331,6 @@
306331
"undo": "Отменить",
307332
"redo": "Повторить",
308333
"none": "Нет",
309-
"basicConfig": "Базовая конфигурация",
310-
"basicConfigDesc": "Глобальное изменение базовых настроек",
311-
"advancedConfig": "Расширенная конфигурация",
312-
"advancedConfigDesc": "Предоставляет разнообразные варианты конфигурации",
313334
"selectedCountTitle": "Выбрано {count} элементов",
314335
"addRule": "Добавить правило",
315336
"ruleName": "Название правила",
@@ -319,7 +340,7 @@
319340
"sourceIp": "Исходный IP",
320341
"noResolve": "Не разрешать IP",
321342
"saveChanges": "Сохранить изменения?",
322-
"findProcessModeDesc": "При включении возможны небольшие потери производительности",
343+
"findProcessModeDesc": "Используется, только если в YAML профиля не задано find-process-mode. Возможны небольшие потери производительности.",
323344
"tabAnimationDesc": "Плавный переход при переключении вкладок (только в мобильной раскладке)",
324345
"colorSchemes": "Цветовые схемы",
325346
"palette": "Палитра",
@@ -434,7 +455,7 @@
434455
"restoreSuccess": "Восстановление успешно",
435456
"restoreFromWebDAVDesc": "Восстановить данные через WebDAV",
436457
"restoreFromFileDesc": "Восстановить данные из файла",
437-
"restoreOnlyConfig": "Восстановить только файлы конфигурации",
458+
"restoreOnlyProfiles": "Восстановить только профили",
438459
"restoreAllData": "Восстановить все данные",
439460
"addProfile": "Добавить профиль",
440461
"delayTest": "Тест задержки",

0 commit comments

Comments
 (0)