From e0113e341308001c517ce3febf0df094c68fca59 Mon Sep 17 00:00:00 2001 From: Denozordec Date: Tue, 13 Oct 2026 09:31:05 +0700 Subject: [PATCH] android docs: the Final 2026 mockup (143 artboard sources and canvas.json) with an artboard-to-code map; app overview, code map, localization and release guide; AGENTS.md updated; old UI plan marked as archive Co-Authored-By: Claude Opus 5.5 --- AGENTS.md | 28 +- src/frontends/android/docs/README.md | 85 + src/frontends/android/docs/design/README.md | 78 + .../docs/design/final-2026/AdvApps.dc.html | 114 ++ .../docs/design/final-2026/AdvDiag.dc.html | 99 + .../docs/design/final-2026/AdvHub.dc.html | 94 + .../docs/design/final-2026/AdvProfile.dc.html | 93 + .../docs/design/final-2026/AdvRouting.dc.html | 106 ++ .../docs/design/final-2026/AdvRules.dc.html | 96 + .../docs/design/final-2026/Automation.dc.html | 74 + .../design/final-2026/D_AppPicker.dc.html | 55 + .../design/final-2026/D_Appearance.dc.html | 66 + .../docs/design/final-2026/D_Apps.dc.html | 126 ++ .../design/final-2026/D_Automation.dc.html | 80 + .../docs/design/final-2026/D_Battery.dc.html | 75 + .../design/final-2026/D_CertExpiry.dc.html | 98 + .../docs/design/final-2026/D_Certs.dc.html | 68 + .../docs/design/final-2026/D_Check.dc.html | 123 ++ .../docs/design/final-2026/D_Diag.dc.html | 106 ++ .../docs/design/final-2026/D_ErrAuth.dc.html | 93 + .../design/final-2026/D_ErrImport.dc.html | 61 + .../docs/design/final-2026/D_Help.dc.html | 92 + .../docs/design/final-2026/D_Home.dc.html | 101 ++ .../design/final-2026/D_HomeAlert.dc.html | 81 + .../final-2026/D_HomeConnecting.dc.html | 88 + .../design/final-2026/D_HomeEmpty.dc.html | 79 + .../design/final-2026/D_HomeOffline.dc.html | 70 + .../design/final-2026/D_HomePaused.dc.html | 88 + .../design/final-2026/D_HomeScenario.dc.html | 106 ++ .../final-2026/D_HomeUnreachable.dc.html | 71 + .../docs/design/final-2026/D_Import.dc.html | 63 + .../design/final-2026/D_ImportPreview.dc.html | 73 + .../docs/design/final-2026/D_ImportQR.dc.html | 60 + .../docs/design/final-2026/D_Inbox.dc.html | 108 ++ .../design/final-2026/D_KillSwitch.dc.html | 68 + .../docs/design/final-2026/D_Log.dc.html | 65 + .../design/final-2026/D_ManualAdd.dc.html | 67 + .../design/final-2026/D_NotifSettings.dc.html | 82 + .../design/final-2026/D_Onboarding.dc.html | 59 + .../docs/design/final-2026/D_Pause.dc.html | 53 + .../design/final-2026/D_Permissions.dc.html | 76 + .../docs/design/final-2026/D_Profile.dc.html | 139 ++ .../design/final-2026/D_ProfileFile.dc.html | 139 ++ .../design/final-2026/D_ProfileUpdate.dc.html | 59 + .../design/final-2026/D_Protection.dc.html | 75 + .../docs/design/final-2026/D_QsTile.dc.html | 47 + .../docs/design/final-2026/D_Recent.dc.html | 103 ++ .../design/final-2026/D_RecentEmpty.dc.html | 48 + .../docs/design/final-2026/D_Routing.dc.html | 140 ++ .../docs/design/final-2026/D_RuleAdd.dc.html | 65 + .../docs/design/final-2026/D_Rules.dc.html | 88 + .../design/final-2026/D_RulesEmpty.dc.html | 62 + .../design/final-2026/D_ScenarioAdd.dc.html | 79 + .../final-2026/D_ScenarioSuggest.dc.html | 108 ++ .../design/final-2026/D_ServerDelete.dc.html | 40 + .../docs/design/final-2026/D_Servers.dc.html | 95 + .../docs/design/final-2026/D_Settings.dc.html | 102 ++ .../docs/design/final-2026/D_Share.dc.html | 85 + .../docs/design/final-2026/D_Stats.dc.html | 96 + .../design/final-2026/D_StatsEmpty.dc.html | 66 + .../docs/design/final-2026/D_Update.dc.html | 55 + .../design/final-2026/D_UpdateInstall.dc.html | 57 + .../design/final-2026/D_VpnConsent.dc.html | 50 + .../docs/design/final-2026/D_Widgets.dc.html | 47 + .../design/final-2026/Diagnostics.dc.html | 91 + .../design/final-2026/F_AppPicker.dc.html | 55 + .../design/final-2026/F_Appearance.dc.html | 66 + .../docs/design/final-2026/F_Apps.dc.html | 126 ++ .../design/final-2026/F_Automation.dc.html | 80 + .../docs/design/final-2026/F_Battery.dc.html | 75 + .../design/final-2026/F_CertExpiry.dc.html | 98 + .../docs/design/final-2026/F_Certs.dc.html | 68 + .../docs/design/final-2026/F_Check.dc.html | 123 ++ .../docs/design/final-2026/F_Diag.dc.html | 106 ++ .../docs/design/final-2026/F_ErrAuth.dc.html | 93 + .../design/final-2026/F_ErrImport.dc.html | 61 + .../docs/design/final-2026/F_Help.dc.html | 92 + .../docs/design/final-2026/F_Home.dc.html | 101 ++ .../design/final-2026/F_HomeAlert.dc.html | 81 + .../final-2026/F_HomeConnecting.dc.html | 88 + .../design/final-2026/F_HomeEmpty.dc.html | 79 + .../design/final-2026/F_HomeOffline.dc.html | 70 + .../design/final-2026/F_HomePaused.dc.html | 88 + .../design/final-2026/F_HomeScenario.dc.html | 106 ++ .../final-2026/F_HomeUnreachable.dc.html | 71 + .../docs/design/final-2026/F_Import.dc.html | 63 + .../design/final-2026/F_ImportPreview.dc.html | 73 + .../docs/design/final-2026/F_ImportQR.dc.html | 60 + .../docs/design/final-2026/F_Inbox.dc.html | 108 ++ .../design/final-2026/F_KillSwitch.dc.html | 68 + .../docs/design/final-2026/F_Log.dc.html | 65 + .../design/final-2026/F_ManualAdd.dc.html | 67 + .../design/final-2026/F_NotifSettings.dc.html | 82 + .../design/final-2026/F_Onboarding.dc.html | 59 + .../docs/design/final-2026/F_Pause.dc.html | 53 + .../design/final-2026/F_Permissions.dc.html | 76 + .../docs/design/final-2026/F_Profile.dc.html | 139 ++ .../design/final-2026/F_ProfileFile.dc.html | 139 ++ .../design/final-2026/F_ProfileUpdate.dc.html | 59 + .../design/final-2026/F_Protection.dc.html | 75 + .../docs/design/final-2026/F_QsTile.dc.html | 47 + .../docs/design/final-2026/F_Recent.dc.html | 103 ++ .../design/final-2026/F_RecentEmpty.dc.html | 48 + .../docs/design/final-2026/F_Routing.dc.html | 140 ++ .../docs/design/final-2026/F_RuleAdd.dc.html | 65 + .../docs/design/final-2026/F_Rules.dc.html | 88 + .../design/final-2026/F_RulesEmpty.dc.html | 62 + .../design/final-2026/F_ScenarioAdd.dc.html | 79 + .../final-2026/F_ScenarioSuggest.dc.html | 108 ++ .../design/final-2026/F_ServerDelete.dc.html | 40 + .../docs/design/final-2026/F_Servers.dc.html | 95 + .../docs/design/final-2026/F_Settings.dc.html | 102 ++ .../docs/design/final-2026/F_Shade.dc.html | 81 + .../docs/design/final-2026/F_Share.dc.html | 85 + .../docs/design/final-2026/F_Stats.dc.html | 96 + .../design/final-2026/F_StatsEmpty.dc.html | 66 + .../design/final-2026/F_SysNotifs.dc.html | 88 + .../docs/design/final-2026/F_Update.dc.html | 55 + .../design/final-2026/F_UpdateInstall.dc.html | 57 + .../design/final-2026/F_VpnConsent.dc.html | 50 + .../docs/design/final-2026/F_Widgets.dc.html | 47 + .../docs/design/final-2026/Import.dc.html | 85 + .../docs/design/final-2026/Locations.dc.html | 96 + .../docs/design/final-2026/Logo.dc.html | 122 ++ .../docs/design/final-2026/Main.dc.html | 109 ++ .../docs/design/final-2026/MainAlert.dc.html | 98 + .../docs/design/final-2026/O_Analysis.dc.html | 97 + .../design/final-2026/O_Decisions.dc.html | 112 ++ .../docs/design/final-2026/O_Features.dc.html | 110 ++ .../docs/design/final-2026/O_Screens.dc.html | 73 + .../docs/design/final-2026/Onboarding.dc.html | 59 + .../docs/design/final-2026/Protection.dc.html | 87 + .../docs/design/final-2026/RouteCheck.dc.html | 84 + .../docs/design/final-2026/Routing.dc.html | 141 ++ .../design/final-2026/RoutingApps.dc.html | 126 ++ .../design/final-2026/RoutingDead.dc.html | 65 + .../design/final-2026/RoutingForce.dc.html | 78 + .../design/final-2026/RoutingPatterns.dc.html | 69 + .../docs/design/final-2026/Settings.dc.html | 91 + .../docs/design/final-2026/Shade.dc.html | 81 + .../docs/design/final-2026/SimpleFix.dc.html | 71 + .../docs/design/final-2026/SimpleHome.dc.html | 59 + .../design/final-2026/SimpleProblem.dc.html | 54 + .../design/final-2026/SimpleSettings.dc.html | 84 + .../docs/design/final-2026/Stats.dc.html | 96 + .../docs/design/final-2026/canvas.json | 1613 +++++++++++++++++ src/frontends/android/docs/ui-ux-plan.md | 2 + 147 files changed, 13580 insertions(+), 1 deletion(-) create mode 100644 src/frontends/android/docs/README.md create mode 100644 src/frontends/android/docs/design/README.md create mode 100644 src/frontends/android/docs/design/final-2026/AdvApps.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/AdvDiag.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/AdvHub.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/AdvProfile.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/AdvRouting.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/AdvRules.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/Automation.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_AppPicker.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_Appearance.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_Apps.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_Automation.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_Battery.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_CertExpiry.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_Certs.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_Check.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_Diag.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_ErrAuth.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_ErrImport.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_Help.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_Home.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_HomeAlert.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_HomeConnecting.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_HomeEmpty.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_HomeOffline.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_HomePaused.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_HomeScenario.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_HomeUnreachable.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_Import.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_ImportPreview.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_ImportQR.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_Inbox.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_KillSwitch.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_Log.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_ManualAdd.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_NotifSettings.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_Onboarding.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_Pause.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_Permissions.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_Profile.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_ProfileFile.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_ProfileUpdate.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_Protection.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_QsTile.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_Recent.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_RecentEmpty.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_Routing.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_RuleAdd.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_Rules.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_RulesEmpty.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_ScenarioAdd.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_ScenarioSuggest.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_ServerDelete.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_Servers.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_Settings.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_Share.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_Stats.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_StatsEmpty.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_Update.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_UpdateInstall.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_VpnConsent.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/D_Widgets.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/Diagnostics.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_AppPicker.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_Appearance.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_Apps.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_Automation.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_Battery.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_CertExpiry.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_Certs.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_Check.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_Diag.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_ErrAuth.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_ErrImport.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_Help.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_Home.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_HomeAlert.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_HomeConnecting.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_HomeEmpty.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_HomeOffline.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_HomePaused.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_HomeScenario.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_HomeUnreachable.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_Import.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_ImportPreview.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_ImportQR.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_Inbox.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_KillSwitch.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_Log.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_ManualAdd.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_NotifSettings.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_Onboarding.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_Pause.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_Permissions.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_Profile.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_ProfileFile.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_ProfileUpdate.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_Protection.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_QsTile.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_Recent.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_RecentEmpty.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_Routing.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_RuleAdd.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_Rules.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_RulesEmpty.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_ScenarioAdd.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_ScenarioSuggest.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_ServerDelete.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_Servers.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_Settings.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_Shade.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_Share.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_Stats.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_StatsEmpty.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_SysNotifs.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_Update.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_UpdateInstall.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_VpnConsent.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/F_Widgets.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/Import.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/Locations.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/Logo.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/Main.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/MainAlert.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/O_Analysis.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/O_Decisions.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/O_Features.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/O_Screens.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/Onboarding.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/Protection.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/RouteCheck.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/Routing.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/RoutingApps.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/RoutingDead.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/RoutingForce.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/RoutingPatterns.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/Settings.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/Shade.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/SimpleFix.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/SimpleHome.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/SimpleProblem.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/SimpleSettings.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/Stats.dc.html create mode 100644 src/frontends/android/docs/design/final-2026/canvas.json diff --git a/AGENTS.md b/AGENTS.md index adf40c6e9..c1370347d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,6 +1,25 @@ # Память проекта -## Android-приложение: сборка и выкладка (src/frontends/android) +Основная работа в репозитории — Android-приложение SHX VPN (`src/frontends/android`), форк клиента strongSwan. +Описание приложения, кода, локализации и релиза: `src/frontends/android/docs/README.md`. +Дизайн: `src/frontends/android/docs/design/README.md` (макет «Финал 2026»). + +## Android-приложение: дизайн и UI + +- **Эталон — макет «Финал 2026»** (артборды `F_*`, тёмная тема `D_*`): живой холст https://claude.ai/artifact/UCC88C9hkU3hDU2YwMck1a, + копия исходников в `docs/design/final-2026/`. Экраны делаются строго по макету; новый экран сначала появляется на холсте. +- UI собирается только из компонентов макета: `ui/compose/design/ShxKit.kt`, `ShxIcons.kt`, цвета и шрифты `ui/compose/theme/ShxDesign.kt` + (`LocalShxColors`, `ShxType`). Сторонние цвета, размеры и стандартные M3-диалоги не использовать. +- Изменили экран в коде — обновите `F_*` и парный `D_*` на холсте и копию в `docs/design/final-2026/`. + +## Android-приложение: строки и переводы + +- Языки: en (база), ru, de, pl, uk, zh-rCN, zh-rTW. Новая строка добавляется сразу во все семь `values*/strings.xml`. +- Плейсхолдеры и `\n` как в английской строке; кавычки и plurals по языку — см. раздел «Локализация» в `docs/README.md`. +- После правок строк смотреть de и uk на эмуляторе (`adb shell cmd locale set-app-locales one.shx.strongswan.ext --locales de-DE`): + длинные слова не должны переноситься в навигации и заголовках. Сброс — `--locales ""`. + +## Android-приложение: сборка и выкладка - **Бакет S3 (Selectel, `shx-app`) ПРИВАТНЫЙ.** Публичного чтения нет и включать его не нужно: `GET https://s3.ru-7.storage.selcloud.ru/shx-app/latest.json` всегда отдаёт `AccessDenied` — это норма, а не ошибка выкладки. @@ -8,9 +27,16 @@ - Сборка и публикация — скриптом `build-local.sh` (Git Bash) или `build-local.ps1` в `src/frontends/android`: он читает `.env`, собирает `assembleRelease`, подписывает keystore'ом из `.env`, генерирует `latest.json` (sha256/size/versionCode) и заливает `shx-vpn.apk` + `latest.json` в корень бакета с `Cache-Control: no-cache`. +- **Порядок релиза:** `--skip-upload` → smoke-тест APK на эмуляторе (AVD `shx36`, все вкладки, `adb logcat -b crash`) → + выгрузка именно проверенного `build/publish/shx-vpn.apk` и `latest.json` через `aws s3 cp` → сверка `latest.json` в бакете. + Выгрузка в S3 — только с подтверждения владельца. - **`.env` нельзя парсить через `source`/`eval`**: значения `NOTES_RU` и `AWS_CA_BUNDLE` содержат пробелы и обратные слэши. Разбирать только построчно `KEY=...` (как в `build-local.sh`). - aws cli установлен через pip: `%APPDATA%\Python\Python313\Scripts\aws` (скрипт сам добавляет путь в PATH). - `versionCode` растёт вручную в `app/build.gradle`; перед сборкой сверять с `versionCode` в `latest.json` бакета. - `NOTES_RU` в `.env` — заметки релиза (попадают в `latest.json` → диалог обновления в приложении); обновлять под релиз. + `.env` не в git: в worktree лежит своя копия, после релиза перенести `NOTES_RU` в `.env` основного checkout. +- **Сборка из worktree:** скопировать игнорируемые входы из основного checkout (`.env` с абсолютным `KEYSTORE_FILE`, + `local.properties`, `Android.common.mk`, `app/src/main/jni/openssl/`, сгенерированные исходники libstrongswan — список в `docs/README.md`) + и собирать с `ORG_GRADLE_PROJECT_shortNdkCommands=true` (иначе линковка упирается в лимит длины команды Windows). - Автообновление приложения: `logic/updates/UpdateManager.kt` качает манифест/APK, сверяет SHA-256 и подпись. diff --git a/src/frontends/android/docs/README.md b/src/frontends/android/docs/README.md new file mode 100644 index 000000000..f9b5ab53a --- /dev/null +++ b/src/frontends/android/docs/README.md @@ -0,0 +1,85 @@ +# SHX VPN для Android + +Форк Android-клиента strongSwan (IKEv2/IPsec), пакет `one.shx.strongswan.ext`. Текущая версия — **2.18.0 (versionCode 165)**. +Распространяется вне Google Play: APK и манифест обновлений лежат в приватном бакете S3, приложение обновляется само. + +- Дизайн: [design/README.md](design/README.md) — макет «Финал 2026» и соответствие артбордов коду. +- История UI-плана (до 2.15, устарела): [ui-ux-plan.md](ui-ux-plan.md). + +## Что умеет приложение + +| Раздел | Возможности | +|---|---| +| Главная | Кнопка подключения, шаги подключения из журнала демона, пауза (минуты, до утра, до смены сети), трафик за сегодня, карточки проблем (нет сети, сервер не отвечает, вход отклонён, белые списки, истекает сертификат) с действием в один тап, подсказки сценариев | +| Серверы | Один сервер = один профиль `.sswan`. Добавление по QR, ссылке, файлу или вручную; проверка профиля перед добавлением; «Поделиться» QR-кодом без пароля; страница сервера: источник профиля, ежедневная проверка ссылки и лист изменений, запасные порты, резервный сервер, мост при белых списках, DNS, MTU, фрагментация IKE | +| Маршруты | Раздельный туннель, сайты РФ напрямую (база адресов, режимы «Стабильно»/«Гибко»), приложения напрямую, правила (сайт, адрес/сеть, шаблон пакета), недавние приложения, недоступные хосты, «Как ходит трафик» | +| Сценарии | Правила для сетей (доверенная Wi-Fi / мобильная или чужая сеть) и свои сценарии: Wi-Fi, мобильная сеть, приложение открыто, время, роуминг, белые списки → включить, выключить, пауза, сменить сервер. Общий порядок, верхний важнее; ручное действие перекрывает сценарий до его окончания | +| Защита | DNS через туннель: из профиля, Cloudflare, AdGuard (реклама и трекеры), Cloudflare 1.1.1.2 (фишинг), свой адрес; «Без VPN — без сети» (инструкция к системному Always-on) | +| Статистика | Трафик по дням/неделям/месяцам: через VPN и напрямую, по приложениям (нужен доступ к статистике использования), итоги недели | +| Диагностика | Интернет, сайты РФ и зарубежные, сервер, DNS, белые списки за ~10 секунд; проверка сайта; отчёт в поддержку | +| События | Центр событий в приложении и push по каналам (статус, проблемы, новые приложения, обновления, итоги недели) | +| Система | Виджеты трёх размеров (Glance), плитка быстрых настроек, ярлыки профилей, автообновление с проверкой SHA-256 и подписи | + +Профиль без сохранённого пароля никогда не запускается сам (watchdog, правила, сценарии, резерв, мост): вместо этого приходит событие со ссылкой на сервер. + +## Устройство кода + +`app/src/main/java/org/strongswan/android/`: + +| Пакет | Что внутри | +|---|---| +| `logic/` | `CharonVpnService` (туннель и уведомление), `VpnStateService`, `WatchdogReceiver`, `PauseManager` | +| `logic/autoconnect` | Правила для сетей: `AutoConnectManager`, `NetworkMonitor`, `SsidReader` | +| `logic/scenarios` | `ScenarioEngine`: условия, порядок, ручной приоритет | +| `logic/profiles` | `ProfileExtras` (настройки поверх `.sswan`), `ProfileUpdater` (ссылка и diff), `Resilience` (порты, резерв, мост) | +| `logic/routing` | `RoutingManager`, база адресов РФ (`RuIpListManager`), правила и шаблоны пакетов, `RouteCheck`, `AppTraffic` | +| `logic/connectivity` | Проверки сети и сервера, `HealthCheckManager`, детект белых списков | +| `logic/protection` | Выбор DNS и фильтрации | +| `logic/stats` | `TrafficHistory`, `WeeklySummary` | +| `logic/events` | `EventLog` (центр событий), `Events` (push) | +| `logic/updates` | `UpdateManager`, загрузка и установка APK, проверка подписи | +| `ui/compose` | Экраны на Compose; `design/` — компоненты макета (`ShxKit`, `ShxIcons`), `theme/` — цвета и шрифты макета, `home/`, `routing/` | +| `ui/` | Activity вторичных экранов, `VpnTileService`, `widget/ShxWidget` | + +Нативная часть (libcharon, libstrongswan, OpenSSL) собирается NDK из `app/src/main/jni`. + +## Тулчейн + +AGP 9.1.1, Gradle 9.3.1, Kotlin 2.2.21, Java 11, compileSdk 37, targetSdk 36, **minSdk 24**, NDK 27.3, +Compose BOM 2026.09.00, material3 1.5.0-beta01 (закреплена явно до стабильной 1.5.0), Glance 1.2. + +## Сборка и тесты + +Из `src/frontends/android`: + +```bash +ORG_GRADLE_PROJECT_shortNdkCommands=true ./gradlew :app:assembleDebug :app:testDebugUnitTest -PshortNdkCommands +``` + +`shortNdkCommands` нужен на Windows в глубоких путях (worktree): иначе команда линковки libstrongswan длиннее лимита CreateProcess. +В worktree нет git-игнорируемых входов — их копируют из основного checkout: `.env`, `local.properties`, `Android.common.mk`, +`app/src/main/jni/openssl/`, сгенерированные `oid.{c,h}`, `proposal_keywords_static.{c,h}`, `settings_{lexer.c,parser.c,parser.h}`. + +`lintDebug` пока падает на старых ошибках (NewApi в `FgsStartRetry`, MissingTranslation у неиспользуемых строк) — это не регресс. + +## Локализация + +Языки: en (база, `values/`), ru, de, pl, uk, zh-CN, zh-TW. Каждая новая строка добавляется сразу во все семь. +Правила перевода: + +- плейсхолдеры (`%1$s`, `%1$d%%`) и `\n` сохраняются как в английской строке; +- кавычки по языку: ru/uk «…», de „…“, pl „…”, zh “…” / 「…」; апостроф — ’; +- plurals: de — one/other, pl/uk/ru — one/few/many/other, zh — other; +- системные термины как в Android: «Постоянный VPN», «Durchgehend aktives VPN», «Stały VPN», «Постійно ввімкнена VPN», «始终开启的 VPN», «永久連線的 VPN»; +- после правок посмотреть de и uk на эмуляторе: длинные слова не должны переноситься в нижней навигации и заголовках. + +## Релиз + +1. Сверить `versionCode` с бакетом: `aws s3 cp s3://shx-app/latest.json -` (endpoint и ключи из `.env`). Публичный GET отдаёт `AccessDenied` — это норма, бакет приватный. +2. Поднять `versionCode`/`versionName` в `app/build.gradle`. +3. Обновить `NOTES_RU` в `.env` (одна строка; текст попадёт в диалог обновления). `.env` читается построчно, без `source`/`eval`. +4. Собрать без выгрузки: `ORG_GRADLE_PROJECT_shortNdkCommands=true ./build-local.sh --skip-upload` (или `build-local.ps1 -SkipUpload`). Успех — строки `BUILD SUCCESSFUL` и `==> Built`. +5. Smoke-тест: установить `build/publish/shx-vpn.apk` на эмулятор (AVD `shx36`), пройти онбординг и все вкладки, проверить `adb logcat -b crash`. +6. Выложить именно проверенный APK: `aws s3 cp` сначала `shx-vpn.apk`, потом `latest.json` (оба с `--cache-control no-cache`, json ещё с `--content-type application/json`), затем прочитать `latest.json` из бакета и сверить sha256. + +Известное ограничение Android 13+: приложению, установленному не из магазина, система блокирует «Статистику использования» («Контролируется настройками с ограниченным доступом»). Обычно снимается в «Информации о приложении» → ⋮ → «Разрешить ограниченные настройки» (пункт появляется после попытки включить разрешение); на Samsung может мешать «Автоблокировщик», крайний вариант — `adb shell appops set one.shx.strongswan.ext GET_USAGE_STATS allow`. diff --git a/src/frontends/android/docs/design/README.md b/src/frontends/android/docs/design/README.md new file mode 100644 index 000000000..a7aa26d43 --- /dev/null +++ b/src/frontends/android/docs/design/README.md @@ -0,0 +1,78 @@ +# Макет «Финал 2026» + +Утверждённый дизайн SHX VPN. Все экраны приложения сделаны строго по нему. + +- **Живой холст (смотреть и править):** https://claude.ai/artifact/UCC88C9hkU3hDU2YwMck1a. Это артефакт типа «Design» в Claude, доступ только у владельца. +- **Копия в репозитории:** `final-2026/` — исходники артбордов и раскладка холста (`canvas.json`) на 2026-10-13, версия 2.18.0. + +## Как устроены файлы + +- Каждый артборд — отдельный `*.dc.html`: разметка с инлайн-стилями плюс `class Component extends DCLogic`, у которого `renderVals()` отдаёт данные для `{{…}}`, `` и ``. +- Скрипт `./support.js`, который подключают файлы, — среда выполнения редактора Design. В репозиторий она не входит, поэтому вне холста файлы не отрисуются. Это исходник для чтения и сравнения, а не самостоятельные страницы. +- `canvas.json` хранит страницы холста, координаты и подписи артбордов. +- Шрифт — Manrope (Google Fonts), в приложении — `res/font/manrope_*.ttf`. + +## Страницы холста + +| Префикс | Страница | Что это | +|---|---|---| +| `O_*` | Обзор | Анализ, фичи по приоритетам, решения по дизайну, карта экранов | +| `F_*` | Финал 2026 | 57 артбордов светлой темы — **эталон** | +| `D_*` | Финал 2026 · тёмная | 54 артборда тёмной темы, те же экраны | +| остальные | Исследование | Ранние варианты (Главная 2.0, простой режим, «Для опытных»). Не реализуются, оставлены для истории | + +`D_*` не рисуются вручную: они получаются из `F_*` заменой цветов светлой палитры на тёмную (`LightShxColors` → `DarkShxColors` в `ShxDesign.kt`). Исключение — `D_QsTile`, он правился руками. Когда меняется `F_*`, обновите и парный `D_*`. + +## Артборд → код + +Пути относительно `app/src/main/java/org/strongswan/android/`. + +| Артборд | Экран | Код | +|---|---|---| +| `F_Home`, `F_HomeConnecting`, `F_HomePaused`, `F_HomeEmpty` | Главная | `ui/compose/home/HomeContent.kt`, `HomeParts.kt`, `ConnectSteps.kt` | +| `F_HomeAlert`, `F_HomeOffline`, `F_HomeUnreachable`, `F_ErrAuth` | Главная с проблемой | `ui/compose/home/HomeStatus.kt` | +| `F_HomeScenario`, `F_ScenarioSuggest` | Подсказки сценариев | `ui/compose/home/ScenarioHints.kt` | +| `F_CertExpiry` | Сертификат истекает | `ui/compose/home/CertExpiry.kt` | +| `F_Pause` | Пауза | `ui/compose/home/HomeStatus.kt`, `logic/PauseManager.kt` | +| `F_Servers`, `F_ServerDelete` | Серверы | `ui/compose/ProfilesScreen.kt` | +| `F_Profile`, `F_ProfileFile`, `F_ProfileUpdate` | Страница сервера | `ui/ServerActivity.kt`, `logic/profiles/*` | +| `F_Import`, `F_ImportQR` | Добавить сервер | `ui/compose/AddServerSheet.kt` | +| `F_ImportPreview`, `F_ErrImport` | Проверка профиля | `ui/compose/ImportScreen.kt` | +| `F_ManualAdd` | Сервер вручную | `ui/compose/ProfileFormScreen.kt` | +| `F_Share` | Поделиться по QR | `ui/compose/ShareProfileScreen.kt` | +| `F_Stats`, `F_StatsEmpty` | Статистика | `ui/StatsActivity.kt`, `logic/stats/*` | +| `F_Diag` | Диагностика | `ui/compose/DiagnosticsScreen.kt` | +| `F_Check` | Как ходит трафик | `ui/compose/RouteCheckScreen.kt` | +| `F_Routing` | Маршруты | `ui/compose/routing/RoutingHub.kt` | +| `F_Apps`, `F_AppPicker` | Приложения напрямую | `ui/compose/routing/DirectAppsScreen.kt` | +| `F_Rules`, `F_RulesEmpty`, `F_RuleAdd` | Правила | `ui/compose/routing/RulesScreen.kt` | +| `F_Recent`, `F_RecentEmpty` | Недавние приложения | `ui/compose/routing/RecentAppsScreen.kt` | +| `F_Automation`, `F_ScenarioAdd` | Сценарии | `ui/ScenariosActivity.kt`, `logic/scenarios/Scenarios.kt` | +| `F_Settings` | Настройки | `ui/compose/SettingsScreen.kt` | +| `F_Protection` | DNS и реклама | `ui/compose/SettingsScreen.kt`, `SettingsPages.kt`, `logic/protection/Protection.kt` | +| `F_KillSwitch`, `F_NotifSettings`, `F_Appearance`, `F_Update`, `F_UpdateInstall`, `F_Help` | Страницы настроек | `ui/compose/SettingsPages.kt` | +| `F_Log` | Журнал | `ui/LogActivity.kt` | +| `F_Certs` | Сертификаты | `ui/TrustedCertificatesActivity.kt` | +| `F_Battery` | Экономия батареи | `ui/BatteryActivity.kt` | +| `F_Onboarding` | Онбординг | `ui/OnboardingActivity.kt` | +| `F_Permissions` | Разрешения | `ui/compose/PermissionsScreen.kt` | +| `F_VpnConsent` | Подсказка к системному запросу VPN | `ui/compose/VpnDialogs.kt` | +| `F_Inbox` | События в приложении | `ui/compose/InboxScreen.kt`, `logic/events/*` | +| `F_Shade`, `F_SysNotifs` | Уведомления Android | `logic/CharonVpnService.java`, `logic/events/Events.kt` | +| `F_Widgets` | Виджеты | `ui/widget/ShxWidget.kt` | +| `F_QsTile` | Плитка быстрых настроек | `ui/VpnTileService.java` | +| `Logo` | Логотип «Щит-S» | `res/drawable/ic_launcher_*.xml`, `res/mipmap-anydpi*` | + +## Дизайн-система в коде + +- `ui/compose/theme/ShxDesign.kt` — цвета макета (`LocalShxColors`, `LightShxColors`/`DarkShxColors`) и типографика `ShxType`. +- `ui/compose/design/ShxKit.kt` — компоненты макета: `ShxScreenTitle`, `ShxPageHeader`, `ShxPanel`, `ShxRow`, `ShxToggleRow`, `ShxSwitch`, `ShxButton`, `ShxTabs`, `ShxChip`, `ShxField`/`ShxFormField`, `ShxSheet`, `ShxDialog`/`ShxAlertDialog`, `ShxDialogButton`, `ShxNote`. +- `ui/compose/design/ShxIcons.kt` — линейные иконки макета. + +Новый экран сначала рисуется на холсте как `F_*` (и `D_*`), потом собирается из этих компонентов, без сторонних цветов и размеров. + +## Как обновить копию в репозитории + +1. Правки делаются на холсте (или публикацией файлов в артефакт). +2. Скачать `project/*` текущей версии артефакта (в Claude Code: Artifact `read` с `paths`) и заменить `final-2026/`. +3. Если появились новые артборды — дописать их в таблицу выше. diff --git a/src/frontends/android/docs/design/final-2026/AdvApps.dc.html b/src/frontends/android/docs/design/final-2026/AdvApps.dc.html new file mode 100644 index 000000000..ff1c41d82 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/AdvApps.dc.html @@ -0,0 +1,114 @@ + + + + +Приложения без VPN + + + + + + + + +
+
+ + + + +
+
+

Приложения

+

24 из 111 работают без VPN

+
+ +
+ + +
+ + + +
+ +
+

Наборы

+
+ + + +
+
+ + +
+

{{g.title}}

+
+ +
+ {{a.letter}} + + + {{a.name}} + {{a.reason}} + + + +
+
+
+
+
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/AdvDiag.dc.html b/src/frontends/android/docs/design/final-2026/AdvDiag.dc.html new file mode 100644 index 000000000..46f09deea --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/AdvDiag.dc.html @@ -0,0 +1,99 @@ + + + + +Диагностика + + + + + + + + +
+
+ + + + +
+
+

Диагностика

+
+ +
+
+
+ + +
+
+ + + + + Напрямую, мимо VPN + 2 адреса · RU-диапазон + + В VPN +
+
+ +
+

Последнее подключение

+
+ +
+ + {{s.title}} + {{s.value}} +
+
+
+
+ +
+

Недоступные хосты3

+
+ +
+ + {{h.host}} + {{h.meta}} + + +
+
+
+
+ + +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/AdvHub.dc.html b/src/frontends/android/docs/design/final-2026/AdvHub.dc.html new file mode 100644 index 000000000..ba07c74c7 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/AdvHub.dc.html @@ -0,0 +1,94 @@ + + + + +Для опытных + + + + + + + + +
+
+ + + +
+
+

Для опытных

+

Всё, что спрятано из простого режима

+
+ +
+ + + +
+

{{g.title}}

+ +
+
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/AdvProfile.dc.html b/src/frontends/android/docs/design/final-2026/AdvProfile.dc.html new file mode 100644 index 000000000..f475a16e2 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/AdvProfile.dc.html @@ -0,0 +1,93 @@ + + + + +Профиль + + + + + + + + +
+
+ + + + +
+
+ NL + +

Амстердам

+ Подключён · 38 мс +
+
+ +
+ +
+

{{g.title}}НОВОЕ

+
+ +
+ + {{r.title}} + {{r.sub}} + + + + + + {{r.value}} + + +
+
+
+
+
+ +
+ + +
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/AdvRouting.dc.html b/src/frontends/android/docs/design/final-2026/AdvRouting.dc.html new file mode 100644 index 000000000..68002fc43 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/AdvRouting.dc.html @@ -0,0 +1,106 @@ + + + + +Маршруты + + + + + + + + +
+
+ + + + +
+
+

Маршруты

+

Что идёт мимо VPN

+
+ +
+
+
+ + +
+
+ Через VPN · 72% + Напрямую · 28% +
+ Напрямую идут сайты РФ, 24 приложения и 2 ваших правила. +
+ +
+

Сайты и сервисы РФ

+
+
+ + + +
+ Надёжно. Новые адреса применяются после переподключения. +
+ + База адресов + 12 480 сетей · сегодня в 09:12 + + +
+
+
+ +
+

Исключения

+ +
+ + + + Проверить, как идёт сайт + +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/AdvRules.dc.html b/src/frontends/android/docs/design/final-2026/AdvRules.dc.html new file mode 100644 index 000000000..1b94fcefd --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/AdvRules.dc.html @@ -0,0 +1,96 @@ + + + + +Правила + + + + + + + + +
+
+ + + +
+
+

Правила

+

Сайты, сети и приложения — куда им идти. Правило важнее базы РФ.

+
+ +
+
+ + + + +
+ + +
+

{{g.title}}

+
+ +
+ {{r.kind}} + + + {{r.value}} + {{r.sub}} + + + +
+
+
+
+
+
+ +
+ + + + +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/Automation.dc.html b/src/frontends/android/docs/design/final-2026/Automation.dc.html new file mode 100644 index 000000000..5831dc0ad --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/Automation.dc.html @@ -0,0 +1,74 @@ + + + + +Сценарии + + + + + + + + +
+
+ + + +

Сценарии

+
+ +
+

VPN сам включается и выключается по условиям. Сценарии выше в списке важнее.

+ +
+ {{r.tag}} + + {{r.when}} + + {{r.then}} + + + +
+
+ +
+

Быстрые шаблоны

+
+ + + + +
+
+
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_AppPicker.dc.html b/src/frontends/android/docs/design/final-2026/D_AppPicker.dc.html new file mode 100644 index 000000000..ef082949a --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_AppPicker.dc.html @@ -0,0 +1,55 @@ + + + + +Тёмная · Выбор приложений + + + + + + + + +
+
+ + + +

Приложения

+ Выбрано 2 +
+ +
+ + ЧАСТО ОТКРЫВАЕТЕ +
+ + + +
+
+ Готово +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_Appearance.dc.html b/src/frontends/android/docs/design/final-2026/D_Appearance.dc.html new file mode 100644 index 000000000..ba7de53e2 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_Appearance.dc.html @@ -0,0 +1,66 @@ + + + + +Тёмная · Оформление + + + + + + + + +
+
+ + + +

Оформление

+
+ +
+ ТЕМА +
+ + + +
+ +
+
+ + Цвета обоев (Material You) + Вместо фиолетового — цвета вашего телефона. Статусы остаются прежними. + + +
+
+ Язык + Как в системе + +
+
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_Apps.dc.html b/src/frontends/android/docs/design/final-2026/D_Apps.dc.html new file mode 100644 index 000000000..d71f5f49a --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_Apps.dc.html @@ -0,0 +1,126 @@ + + + + +Тёмная · Приложения напрямую + + + + + + + + +
+
+ + + +

Приложения напрямую

+
+ +
+

Включённые приложения ходят в сеть напрямую, мимо VPN. Банки и сервисы РФ часто не работают через VPN.

+ + + +
+ + + +
+ +
+ Быстро добавить +
+ + + +
+
+ + +
+

{{g.title}}

+
+ +
+ {{a.letter}} + + {{a.name}} + {{a.reason}} + + +
+
+
+
+
+ + +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_Automation.dc.html b/src/frontends/android/docs/design/final-2026/D_Automation.dc.html new file mode 100644 index 000000000..52c89a528 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_Automation.dc.html @@ -0,0 +1,80 @@ + + + + +Тёмная · Сценарии + + + + + + + + +
+
+ + + +

Сценарии

+
+ +
+

VPN сам включается, выключается или встаёт на паузу. Верхние сценарии важнее нижних.

+ +
+ + + + + {{r.when}} + {{r.then}} + + +
+
+ + Сервер для этих правил + Амстердам + + + +

ДОВЕРЕННЫЕ СЕТИ

+
+ +
+ + {{n}} + +
+
+ +
+
+ + + Сценарий +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_Battery.dc.html b/src/frontends/android/docs/design/final-2026/D_Battery.dc.html new file mode 100644 index 000000000..8025f7e66 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_Battery.dc.html @@ -0,0 +1,75 @@ + + + + +Тёмная · Экономия батареи + + + + + + + + +
+
+ + + +

Без экономии батареи

+
+ +
+

VPN почти не тратит заряд, но Android этого не знает и усыпляет его в фоне. Два шага:

+ +
+ 1Системное разрешение + Появится окно «Разрешить работу в фоне?» — нажмите «Разрешить». + +
+ +
+ 2Настройка телефона +
+ + + +
+ Определили: Xiaomi · HyperOS +
    + +
  1. {{s.n}}{{s.t}}
  2. +
    +
+ +
+ +
+
+ + Шаг 1 ещё не сделан — VPN может отключаться в фоне +
+ Проверить снова +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_CertExpiry.dc.html b/src/frontends/android/docs/design/final-2026/D_CertExpiry.dc.html new file mode 100644 index 000000000..d92101a84 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_CertExpiry.dc.html @@ -0,0 +1,98 @@ + + + + +Тёмная · Главная — сертификат истекает + + + + + + + + +
+
+ shxvpn + + + + 2 + + + + + +
+ +
+ + Защищено + 01:24:37 · РФ-сайты напрямую +
+ +
+ + NL + + Амстердам + IP 185.•••.•••.12 · 38 мс + + Сменить + + + + +
+ Сертификат истекает через 7 дней + «Амстердам» перестанет подключаться 18 октября. Попросите у администратора новый профиль и добавьте его. + +
+
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_Certs.dc.html b/src/frontends/android/docs/design/final-2026/D_Certs.dc.html new file mode 100644 index 000000000..1e316f4b7 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_Certs.dc.html @@ -0,0 +1,68 @@ + + + + +Тёмная · Сертификаты + + + + + + + + +
+
+ + + +

Сертификаты

+
+ +
+

Нужны, чтобы убедиться, что вы подключаетесь к настоящему серверу. Обычно приходят вместе с профилем — трогать ничего не нужно.

+
+ + + +
+ +
+ +
+ + + + + {{c.name}} + {{c.used}} + {{c.exp}} + + +
+
+
+ + +

Системные — те, которым доверяет Android.

+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_Check.dc.html b/src/frontends/android/docs/design/final-2026/D_Check.dc.html new file mode 100644 index 000000000..507dc0d84 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_Check.dc.html @@ -0,0 +1,123 @@ + + + + +Тёмная · Как ходит трафик + + + + + + + + +
+
+ + + +

Как ходит трафик

+
+ +
+
+ + + +
+ +
+ + +
+
+ + + +
+ +
+
+ + ИТОГ + Через VPN + + открывается · 41 мс +
+
+ Телефон + + VPN · NL + + youtube.com +
+ Почему: адресов нет в базе РФ, своих правил для сайта нет — значит, по умолчанию через VPN. +
+ +

ПРЯМОЙ ПУТЬ ДЛЯ СРАВНЕНИЯ

+
+ +
+ {{c.t}} + {{c.v}} +
+
+
+ +

DNS

+
+
+ Через туннель + 142.250.•••.14 · 142.250.•••.46 +
+
+ Через провайдера + 195.208.•••.3 +
+ Ответы различаются. Похоже, провайдер подменяет DNS — поэтому используем DNS туннеля. +
+ +

АДРЕСА · 2

+
+ +
+ + {{i.ip}} + {{i.why}} + + через VPN +
+
+
+ +
+ Изменить для youtube.com + +
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_Diag.dc.html b/src/frontends/android/docs/design/final-2026/D_Diag.dc.html new file mode 100644 index 000000000..642751335 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_Diag.dc.html @@ -0,0 +1,106 @@ + + + + +Тёмная · Диагностика + + + + + + + + +
+
+ + + +

Диагностика

+ Журнал +
+ +
+
+ + + + + VPN работает нормально + Проверено 10 с назад + +
+ +
+ +
+ {{s.mark}} + {{s.title}} + {{s.value}} +
+
+
+ +

ЧТО-ТО НЕ ОТКРЫВАЕТСЯ?

+
+
+ + + +
+
+ + Проверить +
+
+ + СберБанк пущен напрямую + Банк не пускал через VPN + + +
+
+ +

НЕДОСТУПНЫЕ ХОСТЫ3

+
+ +
+ + {{h.host}} + {{h.meta}} + + +
+
+
+ + Отправить отчёт +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_ErrAuth.dc.html b/src/frontends/android/docs/design/final-2026/D_ErrAuth.dc.html new file mode 100644 index 000000000..45818869b --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_ErrAuth.dc.html @@ -0,0 +1,93 @@ + + + + +Тёмная · Главная — вход отклонён + + + + + + + + +
+
+ shxvpn + + + + 2 + + + + + +
+ +
+ + Вход отклонён + Амстердам · ошибка аутентификации +
+ +
+ + NL + + Амстердам + IP 185.•••.•••.12 · 38 мс + + Сменить + + +
+ Сервер не принял сертификат + Скорее всего, у профиля закончился срок действия или администратор выпустил новый. Обновите профиль или выберите другой сервер. + +
+ + Подключиться к другому серверу + Отключить VPN +
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_ErrImport.dc.html b/src/frontends/android/docs/design/final-2026/D_ErrImport.dc.html new file mode 100644 index 000000000..8a6f983e6 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_ErrImport.dc.html @@ -0,0 +1,61 @@ + + + + +Тёмная · Профиль не добавлен + + + + + + + + +
+
+ +
+ + + + +

Не удалось скачать профиль

+ vpn.[ваш-домен]/nl1.sswan +
+
+ +
+ ВОЗМОЖНЫЕ ПРИЧИНЫ + + {{r.t}} — {{r.d}} + +
+ +
Попросите у администратора файл .sswan или QR — их можно добавить без интернета.
+ + + Подробности для поддержки +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_Help.dc.html b/src/frontends/android/docs/design/final-2026/D_Help.dc.html new file mode 100644 index 000000000..1744d909e --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_Help.dc.html @@ -0,0 +1,92 @@ + + + + +Тёмная · Помощь + + + + + + + + +
+
+ + + +

Помощь

+
+ +
+ + +

ЧАСТЫЕ ВОПРОСЫ

+
+ +
+ + +

{{q.a}}

+
+
+
+
+ +

О ПРИЛОЖЕНИИ

+
+
+ + + + + SHX VPN 2.17.0 + сборка 172 · на основе strongSwan · GPLv2 + +
+ + + {{l.t}} + + + +
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_Home.dc.html b/src/frontends/android/docs/design/final-2026/D_Home.dc.html new file mode 100644 index 000000000..4797fa695 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_Home.dc.html @@ -0,0 +1,101 @@ + + + + +Тёмная · Главная + + + + + + + + + + + + + diff --git a/src/frontends/android/docs/design/final-2026/D_HomeAlert.dc.html b/src/frontends/android/docs/design/final-2026/D_HomeAlert.dc.html new file mode 100644 index 000000000..293b8da69 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_HomeAlert.dc.html @@ -0,0 +1,81 @@ + + + + +Тёмная · Главная — проблема + + + + + + + + +
+
+ shxvpn + + + + +
+ +
+ + Оператор включил белые списки + Работают только российские сайты — банки и Госуслуги открываются. VPN подключится сам. +
+ +
+
+ + + Пробуем резервный сервер + Хельсинки · попытка 2 из 3 + + +
+
+ Что делать + +
+
+ Постоянный VPN выключен + Включить +
+
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_HomeConnecting.dc.html b/src/frontends/android/docs/design/final-2026/D_HomeConnecting.dc.html new file mode 100644 index 000000000..8e64b9ac9 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_HomeConnecting.dc.html @@ -0,0 +1,88 @@ + + + + +Тёмная · Главная — подключаемся + + + + + + + + +
+
+ shxvpn + + + + 2 + + + + + +
+ +
+ + Подключаемся… + Амстердам · шаг 3 из 4 +
+ +
+ + NL + + Амстердам + IP 185.•••.•••.12 · 38 мс + + Сменить + + +
✓СетьLTE
✓Сервер ответил38 мс
…Проверка входа
Туннель и маршруты
+ + Отменить +
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_HomeEmpty.dc.html b/src/frontends/android/docs/design/final-2026/D_HomeEmpty.dc.html new file mode 100644 index 000000000..a342f46fd --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_HomeEmpty.dc.html @@ -0,0 +1,79 @@ + + + + +Тёмная · Главная — нет серверов + + + + + + + + +
+
+ shxvpn + + + + 2 + + + + + +
+ +
+ + Добавьте сервер + Чтобы подключиться, нужен профиль .sswan +
+ +
+ Сканировать QR + Ссылка, файл или вручную +
Где взять профиль?Его присылает администратор вашего VPN — файлом .sswan, ссылкой или QR-кодом. Можно отсканировать с экрана друга.
+
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_HomeOffline.dc.html b/src/frontends/android/docs/design/final-2026/D_HomeOffline.dc.html new file mode 100644 index 000000000..7fecbc5d3 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_HomeOffline.dc.html @@ -0,0 +1,70 @@ + + + + +Тёмная · Главная — нет интернета + + + + + + + + +
+
+ shxvpn + + + + 2 + + + + + +
+ +
+ + Нет интернета + Проблема не в VPN. Подключимся сами, как только появится сеть +
+ +
+
×Wi-Fiвыключен
×Мобильные данныенет сигнала
Сервер Амстердамждёт сеть
+
Приложения без сети — так и задуманоВключено «Без VPN — без сети»: пока туннеля нет, трафик не уйдёт напрямую.
+
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_HomePaused.dc.html b/src/frontends/android/docs/design/final-2026/D_HomePaused.dc.html new file mode 100644 index 000000000..e59c7bdfb --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_HomePaused.dc.html @@ -0,0 +1,88 @@ + + + + +Тёмная · Главная — пауза + + + + + + + + +
+
+ shxvpn + + + + 2 + + + + + +
+ +
+ + Пауза · 12:40 + VPN включится сам в 14:37 +
+ +
+ + NL + + Амстердам + IP 185.•••.•••.12 · 38 мс + + Сменить + + + + +
Весь трафик сейчас идёт напрямую, без защиты. Банки и РФ-сервисы работают как обычно.
+
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_HomeScenario.dc.html b/src/frontends/android/docs/design/final-2026/D_HomeScenario.dc.html new file mode 100644 index 000000000..d08cd6698 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_HomeScenario.dc.html @@ -0,0 +1,106 @@ + + + + +Тёмная · Главная — сценарий + + + + + + + + + + + + + diff --git a/src/frontends/android/docs/design/final-2026/D_HomeUnreachable.dc.html b/src/frontends/android/docs/design/final-2026/D_HomeUnreachable.dc.html new file mode 100644 index 000000000..0d2436776 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_HomeUnreachable.dc.html @@ -0,0 +1,71 @@ + + + + +Тёмная · Главная — сервер не отвечает + + + + + + + + +
+
+ shxvpn + + + + 2 + + + + + +
+ +
+ + Сервер не отвечает + Амстердам молчит 40 с · снова пробуем через 12 с +
+ +
+
Интернет есть — не отвечает сам серверВозможно, он перегружен или недоступен из вашей сети. Франкфурт сейчас отвечает за 41 мс.
+ Переключаться автоматическиЕсли сервер молчит дольше минуты — на ближайший рабочий + Проверить, в чём делоСеть, сервер, DNS и белые списки за 10 секунд +
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_Import.dc.html b/src/frontends/android/docs/design/final-2026/D_Import.dc.html new file mode 100644 index 000000000..99d4b94db --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_Import.dc.html @@ -0,0 +1,63 @@ + + + + +Тёмная · Добавить сервер + + + + + + + + +
+
+ +
+

Добавить сервер

+ + + +
+ + + + + + + Сканировать QR + С экрана друга или с сайта + + + +
+ +
+ + + + Вставить +
+ Ссылку запомним и будем подтягивать изменения профиля +
+ + +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_ImportPreview.dc.html b/src/frontends/android/docs/design/final-2026/D_ImportPreview.dc.html new file mode 100644 index 000000000..41b4b1763 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_ImportPreview.dc.html @@ -0,0 +1,73 @@ + + + + +Тёмная · Проверка профиля + + + + + + + + +
+
+ +
+ NL + +

Добавить сервер?

+ Профиль прочитан, всё в порядке +
+
+ +
+ + +
+ {{r.k}} + {{r.v}} +
+
+
+ +
+
+ + Обновлять по ссылке + Есть только у профилей, добавленных по ссылке + + +
+
+ Подключиться сразу + +
+
+ +
Такой сервер уже есть («Амстердам», добавлен 12 окт.). Новый профиль заменит его, ваши настройки останутся.
+ + +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_ImportQR.dc.html b/src/frontends/android/docs/design/final-2026/D_ImportQR.dc.html new file mode 100644 index 000000000..d16f056a2 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_ImportQR.dc.html @@ -0,0 +1,60 @@ + + + + +Тёмная · Сканер QR + + + + + + + + +
+
+ + + + +
+ +
+
+ + + + + +
+ Наведите на QR с профилем .sswan или ссылкой на него +
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_Inbox.dc.html b/src/frontends/android/docs/design/final-2026/D_Inbox.dc.html new file mode 100644 index 000000000..3d68eab70 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_Inbox.dc.html @@ -0,0 +1,108 @@ + + + + +Тёмная · События + + + + + + + + +
+
+ + + +

События

+ +
+ +
+
+ + + + +
+ + +
+

{{d.title}}

+ + + +
+
+ +

Храним 30 дней на устройстве. Что приходит пушем, а что только сюда — в Настройки → Уведомления.

+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_KillSwitch.dc.html b/src/frontends/android/docs/design/final-2026/D_KillSwitch.dc.html new file mode 100644 index 000000000..70548c50e --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_KillSwitch.dc.html @@ -0,0 +1,68 @@ + + + + +Тёмная · Без VPN — без сети + + + + + + + + +
+
+ + + +

Без VPN — без сети

+
+ +
+
+ + + + + Сейчас выключено + При обрыве VPN приложения на секунды выйдут в сеть напрямую + +
+ +

Android может блокировать интернет, пока VPN не подключён. Включается в системных настройках — это займёт 20 секунд.

+ +
    + +
  1. + {{s.n}} + {{s.t}} +
  2. +
    +
+ +
Приложения из списка «напрямую» продолжат работать через обычную сеть. Всё остальное, включая сайты РФ, будет ждать VPN.
+ +
+ +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_Log.dc.html b/src/frontends/android/docs/design/final-2026/D_Log.dc.html new file mode 100644 index 000000000..b4428112d --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_Log.dc.html @@ -0,0 +1,65 @@ + + + + +Тёмная · Журнал + + + + + + + + +
+
+ + + +

Журнал

+ +
+ +
+
+ + + +
+ +
+ +
+ {{l.t}} + {{l.m}} +
+
+
+ +
В отчёт попадут журнал подключения и версия приложения.
+ Отправить отчёт +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_ManualAdd.dc.html b/src/frontends/android/docs/design/final-2026/D_ManualAdd.dc.html new file mode 100644 index 000000000..1706bcff6 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_ManualAdd.dc.html @@ -0,0 +1,67 @@ + + + + +Тёмная · Сервер вручную + + + + + + + + +
+
+ + + +

Сервер вручную

+
+ +
+ + + + + ВХОД +
+ + + +
+ + + + + +
+ Проверить и добавить +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_NotifSettings.dc.html b/src/frontends/android/docs/design/final-2026/D_NotifSettings.dc.html new file mode 100644 index 000000000..d166897b2 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_NotifSettings.dc.html @@ -0,0 +1,82 @@ + + + + +Тёмная · Уведомления + + + + + + + + +
+
+ + + +

Уведомления

+
+ +
+

Все события всегда сохраняются в «Событиях». Здесь — что ещё приходит пушем.

+ + +
+

{{g.title}}

+
+ +
+ + {{r.title}}{{r.tag}} + {{r.sub}} + + +
+
+
+
+
+ + + Звук и вид — в настройках Android + + +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_Onboarding.dc.html b/src/frontends/android/docs/design/final-2026/D_Onboarding.dc.html new file mode 100644 index 000000000..0159f6272 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_Onboarding.dc.html @@ -0,0 +1,59 @@ + + + + +Тёмная · Онбординг + + + + + + + + +
+ + + + +
+ ШАГ 1 ИЗ 3 +

Российское — напрямую, остальное — через VPN

+

Банки и Госуслуги работают как обычно, а заблокированные сервисы открываются без переключений.

+
+ +
+ +
+ + + +
+ +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_Pause.dc.html b/src/frontends/android/docs/design/final-2026/D_Pause.dc.html new file mode 100644 index 000000000..9f1b1545e --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_Pause.dc.html @@ -0,0 +1,53 @@ + + + + +Тёмная · Пауза VPN + + + + + + + + +
+
+ +
+

Пауза VPN

+ Весь трафик пойдёт напрямую. VPN включится сам. +
+
+ + + +
+ + Поставить на паузу 15 мин + Отменить можно с главной, из шторки или виджета +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_Permissions.dc.html b/src/frontends/android/docs/design/final-2026/D_Permissions.dc.html new file mode 100644 index 000000000..2817fcc37 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_Permissions.dc.html @@ -0,0 +1,76 @@ + + + + +Тёмная · Разрешения + + + + + + + + +
+
+ ШАГ 2 ИЗ 3 +

Чтобы VPN работал стабильно

+

Android может выключать VPN в фоне. Разрешите главное — остальное можно позже.

+
+ +
+ +
+ + + + + {{p.title}}{{p.tag}} + {{p.why}} + + + + + + + + {{p.btn}} + +
+
+
+ +
+
+ Продолжить + Всё это можно изменить в Настройки → Стабильная работа +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_Profile.dc.html b/src/frontends/android/docs/design/final-2026/D_Profile.dc.html new file mode 100644 index 000000000..221a7afc1 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_Profile.dc.html @@ -0,0 +1,139 @@ + + + + +Тёмная · Сервер + + + + + + + + +
+
+ + + + + + Поделиться + +
+ +
+
+ NL + +

Амстердам

+ Подключён · 38 мс +
+
+ +

ИСТОЧНИК ПРОФИЛЯ

+
+
+ + + + + {{src.label}} + {{src.value}} + + + + +
+ +
+ + Обновлять автоматически + Раз в сутки · проверено 2 ч назад · изменений нет + + +
+
+ +
{{src.note}}
+
+ +
+ + +
+

{{g.title}}

+
+ +
+ + {{r.title}} + {{r.sub}} + + + + + + {{r.value}} + + +
+
+
+
+
+ + +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_ProfileFile.dc.html b/src/frontends/android/docs/design/final-2026/D_ProfileFile.dc.html new file mode 100644 index 000000000..63b891ad3 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_ProfileFile.dc.html @@ -0,0 +1,139 @@ + + + + +Тёмная · Сервер — из файла + + + + + + + + +
+
+ + + + + + Поделиться + +
+ +
+
+ NL + +

Амстердам

+ Подключён · 38 мс +
+
+ +

ИСТОЧНИК ПРОФИЛЯ

+
+
+ + + + + {{src.label}} + {{src.value}} + + + + +
+ +
+ + Обновлять автоматически + Раз в сутки · проверено 2 ч назад · изменений нет + + +
+
+ +
{{src.note}}
+
+ +
+ + +
+

{{g.title}}

+
+ +
+ + {{r.title}} + {{r.sub}} + + + + + + {{r.value}} + + +
+
+
+
+
+ + +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_ProfileUpdate.dc.html b/src/frontends/android/docs/design/final-2026/D_ProfileUpdate.dc.html new file mode 100644 index 000000000..18953d8f3 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_ProfileUpdate.dc.html @@ -0,0 +1,59 @@ + + + + +Тёмная · Обновление профиля + + + + + + + + +
+
+ +
+

В профиле есть изменения

+ Амстердам · проверено только что по ссылке +
+ +
+ +
+ {{d.k}} + + {{d.old}} + + {{d.new}} + +
+
+
+ +
+ + Останутся без изменений: запасные порты, резервный сервер, мост, DNS, правила и приложения. +
+ + +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_Protection.dc.html b/src/frontends/android/docs/design/final-2026/D_Protection.dc.html new file mode 100644 index 000000000..c68b86901 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_Protection.dc.html @@ -0,0 +1,75 @@ + + + + +Тёмная · DNS и реклама + + + + + + + + +
+
+ + + +

DNS и реклама

+
+ +
+
+ Блокировка включена + AdGuard DNS + Блокируются: реклама · трекеры · фишинг +
+ +

БЛОКИРОВАТЬ

+
+ +
+ + {{t.title}} + {{t.sub}} + + +
+
+
+

Реклама и трекеры блокируются вместе — через AdGuard DNS; только фишинг — через Cloudflare 1.1.1.2.

+ +

DNS-СЕРВЕР

+
+ + + +
+

Запросы к этому DNS идут через туннель — провайдер не сможет подменить ответ. Приложения, которые идут мимо VPN, используют DNS сети.

+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_QsTile.dc.html b/src/frontends/android/docs/design/final-2026/D_QsTile.dc.html new file mode 100644 index 000000000..49bc382f9 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_QsTile.dc.html @@ -0,0 +1,47 @@ + + + + +Тёмная · Плитка в быстрых настройках + + + + + + + + +
+
+ 14:22LTE · 78% +
SHX VPNАмстердам
Интернет
Bluetooth
Фонарик
+
+ Состояния плитки SHX VPN +
Защищено — тап выключает
SHX VPNАмстердам
Выключен — тап подключает последний сервер
SHX VPNВыключен
Подключаемся — тап отменяет
SHX VPNПодключаемся…
Проблема — тап открывает приложение
SHX VPNСервер не отвечает
+
Долгое нажатие — экран «Серверы»Если серверов ещё нет, тап открывает «Добавить сервер». Плитку предлагаем добавить после первого подключения.
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_Recent.dc.html b/src/frontends/android/docs/design/final-2026/D_Recent.dc.html new file mode 100644 index 000000000..e6da9af76 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_Recent.dc.html @@ -0,0 +1,103 @@ + + + + +Тёмная · Недавние приложения + + + + + + + + +
+
+ + + + +

Недавние приложения

+ за последний час · обновляется вживую +
+
+ +
+
+ + + + +
+ +
+
+ Г + + Госуслуги не открываются + 7 неудачных соединений через VPN за 5 мин. Скорее всего, сервис не пускает зарубежные адреса. + +
+
+ + Подробнее +
+
+ + +
+

{{g.title}}

+
+ +
+ {{a.letter}} + + {{a.name}}НОВОЕ + {{a.route}}{{a.meta}} + + +
+
+
+
+
+ +

Переключатель — «напрямую, без VPN». Трафик приложений считается по системной статистике: нужен доступ «Статистика использования».

+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_RecentEmpty.dc.html b/src/frontends/android/docs/design/final-2026/D_RecentEmpty.dc.html new file mode 100644 index 000000000..4b38c2f95 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_RecentEmpty.dc.html @@ -0,0 +1,48 @@ + + + + +Тёмная · Недавние приложения — нет доступа + + + + + + + + +
+
+ + + +

Недавние приложения

+
+ +
+ +

Покажем, какие приложения выходят в сеть

+

И каким путём — через VPN или напрямую. Так проще найти приложение, которое не работает. Для этого нужен доступ «Статистика использования».

+
Мы видим только объём трафика по приложениям. Содержимое и сайты остаются на телефоне.
+
+ Разрешить доступ + Не сейчас +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_Routing.dc.html b/src/frontends/android/docs/design/final-2026/D_Routing.dc.html new file mode 100644 index 000000000..9d389423f --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_Routing.dc.html @@ -0,0 +1,140 @@ + + + + +Тёмная · Маршруты + + + + + + + + +
+
+

Маршруты

+
+ +
+
+
+ + Раздельный туннель + Мимо VPN: сайты РФ · 24 приложения · 2 правила + + +
+
+
Через VPN 72%Напрямую 28%
+
+ +

САЙТЫ И СЕРВИСЫ РФ

+
+
+ + Сайты РФ напрямую + База: 12 480 сетей · сегодня + + + +
+
+ + +
+
+ +

ИСКЛЮЧЕНИЯ

+
+ + + + + + Приложения напрямую + 24 работают без VPN + + + + + +22 + + + + + + + + Правила + Домены, адреса и шаблоны пакетов + + 5 + + +
+ +

ПРОВЕРКА

+ + + Как ходит сайт, IP или приложение + + + + Недавние приложения + 2 с ошибками + + + + + + {{r.l}} + {{r.n}} + + + + +
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_RuleAdd.dc.html b/src/frontends/android/docs/design/final-2026/D_RuleAdd.dc.html new file mode 100644 index 000000000..5a0e42b2a --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_RuleAdd.dc.html @@ -0,0 +1,65 @@ + + + + +Тёмная · Новое правило + + + + + + + + +
+
+ +

Новое правило

+ +
+ + + +
+ + + + + Куда направлять +
+ + +
+ +
Сейчас kinopoisk.ru и так идёт напрямую — по базе РФ. Правило закрепит это, даже если база изменится.
+ + +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_Rules.dc.html b/src/frontends/android/docs/design/final-2026/D_Rules.dc.html new file mode 100644 index 000000000..ffabfa873 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_Rules.dc.html @@ -0,0 +1,88 @@ + + + + +Тёмная · Правила + + + + + + + + +
+
+ + + +

Правила

+
+ +
+

Куда идут сайты, адреса и приложения. Правило важнее базы РФ.

+ +
+ + + + +
+ + +
+

{{g.title}}

+
+ +
+ {{r.kind}} + + {{r.value}} + {{r.sub}} + + +
+
+
+
+
+
+ + + Правило + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_RulesEmpty.dc.html b/src/frontends/android/docs/design/final-2026/D_RulesEmpty.dc.html new file mode 100644 index 000000000..f1bbfff92 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_RulesEmpty.dc.html @@ -0,0 +1,62 @@ + + + + +Тёмная · Правила — пусто + + + + + + + + +
+
+ + + +

Правила

+
+ +
+
+ + + + Правил пока нет — и это нормально + Сайты РФ и выбранные приложения уже идут напрямую. Правило нужно, только если какой-то сайт идёт не тем путём. +
+ + ЧАСТО ДОБАВЛЯЮТ + + +
+ + Своё правило +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_ScenarioAdd.dc.html b/src/frontends/android/docs/design/final-2026/D_ScenarioAdd.dc.html new file mode 100644 index 000000000..90739c6a0 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_ScenarioAdd.dc.html @@ -0,0 +1,79 @@ + + + + +Тёмная · Новый сценарий + + + + + + + + +
+
+ +

Новый сценарий

+ + 1 · КОГДА +
+ + + +
+
+ TTelegram + YYouTube + + Выбрать +
+ + 2 · ЧТО СДЕЛАТЬ +
+ + + +
+
+ Сервер + Автоматически + +
+ +
Итог: когда открыт Telegram или YouTube → включить VPN. После закрытия — вернуть как было.
+ + +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_ScenarioSuggest.dc.html b/src/frontends/android/docs/design/final-2026/D_ScenarioSuggest.dc.html new file mode 100644 index 000000000..9f0502d3f --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_ScenarioSuggest.dc.html @@ -0,0 +1,108 @@ + + + + +Тёмная · Главная — предложение сценария + + + + + + + + +
+
+ shxvpn + + + + 2 + + + + + +
+ +
+ + VPN выключен + Выключен вручную · Home_5G +
+ +
+ + NL + + Амстердам + последний сервер + + Сменить + + + + +
+
+ + + + + Выключать VPN здесь автоматически? + Вы уже 3-й раз выключаете его в сети Home_5G. Вне этой сети VPN будет включаться сам. + +
+ +
+
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_ServerDelete.dc.html b/src/frontends/android/docs/design/final-2026/D_ServerDelete.dc.html new file mode 100644 index 000000000..1ff32ece4 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_ServerDelete.dc.html @@ -0,0 +1,40 @@ + + + + +Тёмная · Удалить сервер + + + + + + + + +
+
+ + + +

Удалить «Амстердам»?

+

Это текущий сервер — VPN отключится.

+

Вернуть можно, снова добавив профиль по ссылке, файлу или QR.

+ +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_Servers.dc.html b/src/frontends/android/docs/design/final-2026/D_Servers.dc.html new file mode 100644 index 000000000..60e67aca9 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_Servers.dc.html @@ -0,0 +1,95 @@ + + + + +Тёмная · Серверы + + + + + + + + +
+
+

Серверы

+ + + +
+ +
+ + +

МОИ СЕРВЕРЫ · 4

+
+ +
+ {{s.code}} + + {{s.name}}{{s.tag}} + {{s.meta}} + + + + +
+
+
+

Один сервер — один профиль .sswan. Резерв и мост включаются сами, когда основной недоступен.

+
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_Settings.dc.html b/src/frontends/android/docs/design/final-2026/D_Settings.dc.html new file mode 100644 index 000000000..ccb4f06dd --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_Settings.dc.html @@ -0,0 +1,102 @@ + + + + +Тёмная · Настройки + + + + + + + + +
+
+

Настройки

+
+ +
+ + + +
+

{{g.title}}

+ +
+
+
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_Share.dc.html b/src/frontends/android/docs/design/final-2026/D_Share.dc.html new file mode 100644 index 000000000..c0fa19118 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_Share.dc.html @@ -0,0 +1,85 @@ + + + + +Тёмная · Поделиться по QR + + + + + + + + +
+
+ + + +

Поделиться сервером

+
+ +
+

Пусть друг откроет SHX → «Серверы» → «+» → «Сканировать QR». Интернет не нужен.

+ +
+
+ + + + + + +
+
+ +
+ NL + + Амстердам + профиль .sswan · без пароля и ключа + +
+ +
+ +
Если профиль входит по сертификату, другу понадобится свой — в QR его нет.
+
+ + +
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_Stats.dc.html b/src/frontends/android/docs/design/final-2026/D_Stats.dc.html new file mode 100644 index 000000000..c9ff619ad --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_Stats.dc.html @@ -0,0 +1,96 @@ + + + + +Тёмная · Статистика трафика + + + + + + + + +
+
+ + + +

Статистика

+
+ +
+
+ + + +
+ +
+
+ 4 – 10 октября + 18,4 ГБ +
+
+ +
+
+
+
+
+ {{d.label}} +
+
+
+
+
+ Через VPN + 13,1 ГБ +
+
+ Напрямую (РФ) + 5,3 ГБ +
+
+
+ +
+

Приложения

+
+ +
+ {{a.letter}} + + {{a.name}}{{a.size}} + + +
+
+
+
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_StatsEmpty.dc.html b/src/frontends/android/docs/design/final-2026/D_StatsEmpty.dc.html new file mode 100644 index 000000000..b06a289bd --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_StatsEmpty.dc.html @@ -0,0 +1,66 @@ + + + + +Тёмная · Статистика — первый день + + + + + + + + +
+
+ + + +

Статистика

+
+ +
+
+ + + +
+ +
+ + Сегодня + 86 МБ + + +
+ +
+ + + История копится с сегодняшнего дня + Через неделю здесь будет видно, сколько трафика идёт через VPN и сколько напрямую, и какие приложения тратят больше всего. + +
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_Update.dc.html b/src/frontends/android/docs/design/final-2026/D_Update.dc.html new file mode 100644 index 000000000..5b828ab33 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_Update.dc.html @@ -0,0 +1,55 @@ + + + + +Тёмная · Обновление приложения + + + + + + + + +
+
+ +
+ + + + +

SHX VPN 2.17.0

+ У вас 2.16.0 · 18,4 МБ · подпись проверена +
+
+
+ ЧТО НОВОГО + + {{n}} + +
+
+ СкачиваниеСкачано · 18,4 МБ + +
+ + Текст «Что нового» берётся из заметок релиза +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_UpdateInstall.dc.html b/src/frontends/android/docs/design/final-2026/D_UpdateInstall.dc.html new file mode 100644 index 000000000..2497250ef --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_UpdateInstall.dc.html @@ -0,0 +1,57 @@ + + + + +Тёмная · Установка обновления + + + + + + + + +
+
+ +
+

Разрешите установку обновлений

+ SHX VPN обновляется сам, без Google Play. Android один раз спросит, можно ли приложению устанавливать обновления. +
+ +
+ ВЫ УВИДИТЕ ТАКОЙ ЭКРАН +
+ + Разрешить установку из этого источника + SHX VPN + + +
+ Включите переключатель и нажмите «Назад» — установка продолжится. +
+ +
+ + Безопасно: приложение ставит только файлы с подписью SHX и проверенной контрольной суммой. +
+ +
+ Не сейчас + +
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_VpnConsent.dc.html b/src/frontends/android/docs/design/final-2026/D_VpnConsent.dc.html new file mode 100644 index 000000000..9be97e130 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_VpnConsent.dc.html @@ -0,0 +1,50 @@ + + + + +Тёмная · Системный запрос VPN + + + + + + + + +
+
+ + + + + Сейчас Android спросит разрешение + Это стандартное окно для любого VPN. Нажмите «ОК» — без этого подключиться нельзя. + +
+ +
+ + + +

Запрос на подключение

+

Приложение «SHX VPN» пытается подключиться к сети VPN, что позволит ему отслеживать сетевой трафик. Продолжайте, только если доверяете источнику.

+
+ + ОК +
+
+ Окно рисует Android — его текст и вид изменить нельзя +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/D_Widgets.dc.html b/src/frontends/android/docs/design/final-2026/D_Widgets.dc.html new file mode 100644 index 000000000..29c49b6f4 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/D_Widgets.dc.html @@ -0,0 +1,47 @@ + + + + +Тёмная · Виджеты на рабочем столе + + + + + + + + +
+
+
+
4×2 · подробный
Защищено · 01:24Амстердам · 1,24 ГБ сегодняПаузаБыстрейшийСменить
+
2×1 · защищено и выключен
ЗащищеноNL · 01:24
Выключентап — Амстердам
+
2×1 · подключаемся и проблема
ПодключаемсяАмстердам
Нет ответаАмстердам
+
1×1 · значок со статусом
+
Как работает
  • Тап по кнопке — вкл/выкл, по тексту — открыть приложение.
  • Цвета берутся из Material You, как у приложения; в тёмной теме — тёмный фон.
  • Состояния те же, что на главной: защищено, выключен, подключаемся, проблема.
  • Размеры 1×1, 2×1 и 4×2; растягиваются по сетке лаунчера.
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/Diagnostics.dc.html b/src/frontends/android/docs/design/final-2026/Diagnostics.dc.html new file mode 100644 index 000000000..c4e2ceafb --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/Diagnostics.dc.html @@ -0,0 +1,91 @@ + + + + +Диагностика + + + + + + + + +
+
+ + + +

Почему не работает?

+
+ +
+
+
+ + + + Оператор включил белые списки +
+

Мобильная сеть пропускает только российские сайты. VPN-сервер недоступен, а РФ-сервисы работают напрямую.

+
+ + +
+
+ +
+ +
+ {{s.mark}} + + {{s.title}} + {{s.detail}} + +
+
+
+ +
+

Проверить сайт

+
+ + +
+
+ через VPNDNS туннеля · 142.250.•••.•• +
+
+ + +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_AppPicker.dc.html b/src/frontends/android/docs/design/final-2026/F_AppPicker.dc.html new file mode 100644 index 000000000..4876141ff --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_AppPicker.dc.html @@ -0,0 +1,55 @@ + + + + +Выбор приложений + + + + + + + + +
+
+ + + +

Приложения

+ Выбрано 2 +
+ +
+ + ЧАСТО ОТКРЫВАЕТЕ +
+ + + +
+
+ Готово +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_Appearance.dc.html b/src/frontends/android/docs/design/final-2026/F_Appearance.dc.html new file mode 100644 index 000000000..71f7e11c0 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_Appearance.dc.html @@ -0,0 +1,66 @@ + + + + +Оформление + + + + + + + + +
+
+ + + +

Оформление

+
+ +
+ ТЕМА +
+ + + +
+ +
+
+ + Цвета обоев (Material You) + Вместо фиолетового — цвета вашего телефона. Статусы остаются прежними. + + +
+
+ Язык + Как в системе + +
+
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_Apps.dc.html b/src/frontends/android/docs/design/final-2026/F_Apps.dc.html new file mode 100644 index 000000000..0cf965027 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_Apps.dc.html @@ -0,0 +1,126 @@ + + + + +Приложения напрямую + + + + + + + + +
+
+ + + +

Приложения напрямую

+
+ +
+

Включённые приложения ходят в сеть напрямую, мимо VPN. Банки и сервисы РФ часто не работают через VPN.

+ + + +
+ + + +
+ +
+ Быстро добавить +
+ + + +
+
+ + +
+

{{g.title}}

+
+ +
+ {{a.letter}} + + {{a.name}} + {{a.reason}} + + +
+
+
+
+
+ + +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_Automation.dc.html b/src/frontends/android/docs/design/final-2026/F_Automation.dc.html new file mode 100644 index 000000000..9826a613c --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_Automation.dc.html @@ -0,0 +1,80 @@ + + + + +Сценарии + + + + + + + + +
+
+ + + +

Сценарии

+
+ +
+

VPN сам включается, выключается или встаёт на паузу. Верхние сценарии важнее нижних.

+ +
+ + + + + {{r.when}} + {{r.then}} + + +
+
+ + Сервер для этих правил + Амстердам + + + +

ДОВЕРЕННЫЕ СЕТИ

+
+ +
+ + {{n}} + +
+
+ +
+
+ + + Сценарий +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_Battery.dc.html b/src/frontends/android/docs/design/final-2026/F_Battery.dc.html new file mode 100644 index 000000000..002fa92b0 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_Battery.dc.html @@ -0,0 +1,75 @@ + + + + +Экономия батареи + + + + + + + + +
+
+ + + +

Без экономии батареи

+
+ +
+

VPN почти не тратит заряд, но Android этого не знает и усыпляет его в фоне. Два шага:

+ +
+ 1Системное разрешение + Появится окно «Разрешить работу в фоне?» — нажмите «Разрешить». + +
+ +
+ 2Настройка телефона +
+ + + +
+ Определили: Xiaomi · HyperOS +
    + +
  1. {{s.n}}{{s.t}}
  2. +
    +
+ +
+ +
+
+ + Шаг 1 ещё не сделан — VPN может отключаться в фоне +
+ Проверить снова +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_CertExpiry.dc.html b/src/frontends/android/docs/design/final-2026/F_CertExpiry.dc.html new file mode 100644 index 000000000..cdf5cf547 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_CertExpiry.dc.html @@ -0,0 +1,98 @@ + + + + +Главная — сертификат истекает + + + + + + + + +
+
+ shxvpn + + + + 2 + + + + + +
+ +
+ + Защищено + 01:24:37 · РФ-сайты напрямую +
+ +
+ + NL + + Амстердам + IP 185.•••.•••.12 · 38 мс + + Сменить + + + + +
+ Сертификат истекает через 7 дней + «Амстердам» перестанет подключаться 18 октября. Попросите у администратора новый профиль и добавьте его. + +
+
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_Certs.dc.html b/src/frontends/android/docs/design/final-2026/F_Certs.dc.html new file mode 100644 index 000000000..3f0512e5f --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_Certs.dc.html @@ -0,0 +1,68 @@ + + + + +Сертификаты + + + + + + + + +
+
+ + + +

Сертификаты

+
+ +
+

Нужны, чтобы убедиться, что вы подключаетесь к настоящему серверу. Обычно приходят вместе с профилем — трогать ничего не нужно.

+
+ + + +
+ +
+ +
+ + + + + {{c.name}} + {{c.used}} + {{c.exp}} + + +
+
+
+ + +

Системные — те, которым доверяет Android.

+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_Check.dc.html b/src/frontends/android/docs/design/final-2026/F_Check.dc.html new file mode 100644 index 000000000..05195e8e9 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_Check.dc.html @@ -0,0 +1,123 @@ + + + + +Как ходит трафик + + + + + + + + +
+
+ + + +

Как ходит трафик

+
+ +
+
+ + + +
+ +
+ + +
+
+ + + +
+ +
+
+ + ИТОГ + Через VPN + + открывается · 41 мс +
+
+ Телефон + + VPN · NL + + youtube.com +
+ Почему: адресов нет в базе РФ, своих правил для сайта нет — значит, по умолчанию через VPN. +
+ +

ПРЯМОЙ ПУТЬ ДЛЯ СРАВНЕНИЯ

+
+ +
+ {{c.t}} + {{c.v}} +
+
+
+ +

DNS

+
+
+ Через туннель + 142.250.•••.14 · 142.250.•••.46 +
+
+ Через провайдера + 195.208.•••.3 +
+ Ответы различаются. Похоже, провайдер подменяет DNS — поэтому используем DNS туннеля. +
+ +

АДРЕСА · 2

+
+ +
+ + {{i.ip}} + {{i.why}} + + через VPN +
+
+
+ +
+ Изменить для youtube.com + +
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_Diag.dc.html b/src/frontends/android/docs/design/final-2026/F_Diag.dc.html new file mode 100644 index 000000000..ff12844bf --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_Diag.dc.html @@ -0,0 +1,106 @@ + + + + +Диагностика + + + + + + + + +
+
+ + + +

Диагностика

+ Журнал +
+ +
+
+ + + + + VPN работает нормально + Проверено 10 с назад + +
+ +
+ +
+ {{s.mark}} + {{s.title}} + {{s.value}} +
+
+
+ +

ЧТО-ТО НЕ ОТКРЫВАЕТСЯ?

+
+
+ + + +
+
+ + Проверить +
+
+ + СберБанк пущен напрямую + Банк не пускал через VPN + + +
+
+ +

НЕДОСТУПНЫЕ ХОСТЫ3

+
+ +
+ + {{h.host}} + {{h.meta}} + + +
+
+
+ + Отправить отчёт +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_ErrAuth.dc.html b/src/frontends/android/docs/design/final-2026/F_ErrAuth.dc.html new file mode 100644 index 000000000..5d8d807a1 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_ErrAuth.dc.html @@ -0,0 +1,93 @@ + + + + +Главная — вход отклонён + + + + + + + + +
+
+ shxvpn + + + + 2 + + + + + +
+ +
+ + Вход отклонён + Амстердам · ошибка аутентификации +
+ +
+ + NL + + Амстердам + IP 185.•••.•••.12 · 38 мс + + Сменить + + +
+ Сервер не принял сертификат + Скорее всего, у профиля закончился срок действия или администратор выпустил новый. Обновите профиль или выберите другой сервер. + +
+ + Подключиться к другому серверу + Отключить VPN +
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_ErrImport.dc.html b/src/frontends/android/docs/design/final-2026/F_ErrImport.dc.html new file mode 100644 index 000000000..dfa6ca896 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_ErrImport.dc.html @@ -0,0 +1,61 @@ + + + + +Профиль не добавлен + + + + + + + + +
+
+ +
+ + + + +

Не удалось скачать профиль

+ vpn.[ваш-домен]/nl1.sswan +
+
+ +
+ ВОЗМОЖНЫЕ ПРИЧИНЫ + + {{r.t}} — {{r.d}} + +
+ +
Попросите у администратора файл .sswan или QR — их можно добавить без интернета.
+ + + Подробности для поддержки +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_Help.dc.html b/src/frontends/android/docs/design/final-2026/F_Help.dc.html new file mode 100644 index 000000000..4877800b7 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_Help.dc.html @@ -0,0 +1,92 @@ + + + + +Помощь + + + + + + + + +
+
+ + + +

Помощь

+
+ +
+ + +

ЧАСТЫЕ ВОПРОСЫ

+
+ +
+ + +

{{q.a}}

+
+
+
+
+ +

О ПРИЛОЖЕНИИ

+
+
+ + + + + SHX VPN 2.17.0 + сборка 172 · на основе strongSwan · GPLv2 + +
+ + + {{l.t}} + + + +
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_Home.dc.html b/src/frontends/android/docs/design/final-2026/F_Home.dc.html new file mode 100644 index 000000000..3d8a9b9cb --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_Home.dc.html @@ -0,0 +1,101 @@ + + + + +Главная + + + + + + + + + + + + + diff --git a/src/frontends/android/docs/design/final-2026/F_HomeAlert.dc.html b/src/frontends/android/docs/design/final-2026/F_HomeAlert.dc.html new file mode 100644 index 000000000..5a3524147 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_HomeAlert.dc.html @@ -0,0 +1,81 @@ + + + + +Главная — проблема + + + + + + + + +
+
+ shxvpn + + + + +
+ +
+ + Оператор включил белые списки + Работают только российские сайты — банки и Госуслуги открываются. VPN подключится сам. +
+ +
+
+ + + Пробуем резервный сервер + Хельсинки · попытка 2 из 3 + + +
+
+ Что делать + +
+
+ Постоянный VPN выключен + Включить +
+
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_HomeConnecting.dc.html b/src/frontends/android/docs/design/final-2026/F_HomeConnecting.dc.html new file mode 100644 index 000000000..8259679a6 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_HomeConnecting.dc.html @@ -0,0 +1,88 @@ + + + + +Главная — подключаемся + + + + + + + + +
+
+ shxvpn + + + + 2 + + + + + +
+ +
+ + Подключаемся… + Амстердам · шаг 3 из 4 +
+ +
+ + NL + + Амстердам + IP 185.•••.•••.12 · 38 мс + + Сменить + + +
✓СетьLTE
✓Сервер ответил38 мс
…Проверка входа
Туннель и маршруты
+ + Отменить +
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_HomeEmpty.dc.html b/src/frontends/android/docs/design/final-2026/F_HomeEmpty.dc.html new file mode 100644 index 000000000..8bae523c9 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_HomeEmpty.dc.html @@ -0,0 +1,79 @@ + + + + +Главная — нет серверов + + + + + + + + +
+
+ shxvpn + + + + 2 + + + + + +
+ +
+ + Добавьте сервер + Чтобы подключиться, нужен профиль .sswan +
+ +
+ Сканировать QR + Ссылка, файл или вручную +
Где взять профиль?Его присылает администратор вашего VPN — файлом .sswan, ссылкой или QR-кодом. Можно отсканировать с экрана друга.
+
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_HomeOffline.dc.html b/src/frontends/android/docs/design/final-2026/F_HomeOffline.dc.html new file mode 100644 index 000000000..a54bdcfbe --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_HomeOffline.dc.html @@ -0,0 +1,70 @@ + + + + +Главная — нет интернета + + + + + + + + +
+
+ shxvpn + + + + 2 + + + + + +
+ +
+ + Нет интернета + Проблема не в VPN. Подключимся сами, как только появится сеть +
+ +
+
×Wi-Fiвыключен
×Мобильные данныенет сигнала
Сервер Амстердамждёт сеть
+
Приложения без сети — так и задуманоВключено «Без VPN — без сети»: пока туннеля нет, трафик не уйдёт напрямую.
+
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_HomePaused.dc.html b/src/frontends/android/docs/design/final-2026/F_HomePaused.dc.html new file mode 100644 index 000000000..1673fbee8 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_HomePaused.dc.html @@ -0,0 +1,88 @@ + + + + +Главная — пауза + + + + + + + + +
+
+ shxvpn + + + + 2 + + + + + +
+ +
+ + Пауза · 12:40 + VPN включится сам в 14:37 +
+ +
+ + NL + + Амстердам + IP 185.•••.•••.12 · 38 мс + + Сменить + + + + +
Весь трафик сейчас идёт напрямую, без защиты. Банки и РФ-сервисы работают как обычно.
+
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_HomeScenario.dc.html b/src/frontends/android/docs/design/final-2026/F_HomeScenario.dc.html new file mode 100644 index 000000000..76778e724 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_HomeScenario.dc.html @@ -0,0 +1,106 @@ + + + + +Главная — сценарий + + + + + + + + + + + + + diff --git a/src/frontends/android/docs/design/final-2026/F_HomeUnreachable.dc.html b/src/frontends/android/docs/design/final-2026/F_HomeUnreachable.dc.html new file mode 100644 index 000000000..fac9c6006 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_HomeUnreachable.dc.html @@ -0,0 +1,71 @@ + + + + +Главная — сервер не отвечает + + + + + + + + +
+
+ shxvpn + + + + 2 + + + + + +
+ +
+ + Сервер не отвечает + Амстердам молчит 40 с · снова пробуем через 12 с +
+ +
+
Интернет есть — не отвечает сам серверВозможно, он перегружен или недоступен из вашей сети. Франкфурт сейчас отвечает за 41 мс.
+ Переключаться автоматическиЕсли сервер молчит дольше минуты — на ближайший рабочий + Проверить, в чём делоСеть, сервер, DNS и белые списки за 10 секунд +
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_Import.dc.html b/src/frontends/android/docs/design/final-2026/F_Import.dc.html new file mode 100644 index 000000000..a3f82cbc1 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_Import.dc.html @@ -0,0 +1,63 @@ + + + + +Добавить сервер + + + + + + + + +
+
+ +
+

Добавить сервер

+ + + +
+ + + + + + + Сканировать QR + С экрана друга или с сайта + + + +
+ +
+ + + + Вставить +
+ Ссылку запомним и будем подтягивать изменения профиля +
+ + +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_ImportPreview.dc.html b/src/frontends/android/docs/design/final-2026/F_ImportPreview.dc.html new file mode 100644 index 000000000..2e509d277 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_ImportPreview.dc.html @@ -0,0 +1,73 @@ + + + + +Проверка профиля + + + + + + + + +
+
+ +
+ NL + +

Добавить сервер?

+ Профиль прочитан, всё в порядке +
+
+ +
+ + +
+ {{r.k}} + {{r.v}} +
+
+
+ +
+
+ + Обновлять по ссылке + Есть только у профилей, добавленных по ссылке + + +
+
+ Подключиться сразу + +
+
+ +
Такой сервер уже есть («Амстердам», добавлен 12 окт.). Новый профиль заменит его, ваши настройки останутся.
+ + +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_ImportQR.dc.html b/src/frontends/android/docs/design/final-2026/F_ImportQR.dc.html new file mode 100644 index 000000000..f3f424056 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_ImportQR.dc.html @@ -0,0 +1,60 @@ + + + + +Сканер QR + + + + + + + + +
+
+ + + + +
+ +
+
+ + + + + +
+ Наведите на QR с профилем .sswan или ссылкой на него +
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_Inbox.dc.html b/src/frontends/android/docs/design/final-2026/F_Inbox.dc.html new file mode 100644 index 000000000..9e77659fd --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_Inbox.dc.html @@ -0,0 +1,108 @@ + + + + +События + + + + + + + + +
+
+ + + +

События

+ +
+ +
+
+ + + + +
+ + +
+

{{d.title}}

+ + + +
+
+ +

Храним 30 дней на устройстве. Что приходит пушем, а что только сюда — в Настройки → Уведомления.

+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_KillSwitch.dc.html b/src/frontends/android/docs/design/final-2026/F_KillSwitch.dc.html new file mode 100644 index 000000000..6ec89d7b3 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_KillSwitch.dc.html @@ -0,0 +1,68 @@ + + + + +Без VPN — без сети + + + + + + + + +
+
+ + + +

Без VPN — без сети

+
+ +
+
+ + + + + Сейчас выключено + При обрыве VPN приложения на секунды выйдут в сеть напрямую + +
+ +

Android может блокировать интернет, пока VPN не подключён. Включается в системных настройках — это займёт 20 секунд.

+ +
    + +
  1. + {{s.n}} + {{s.t}} +
  2. +
    +
+ +
Приложения из списка «напрямую» продолжат работать через обычную сеть. Всё остальное, включая сайты РФ, будет ждать VPN.
+ +
+ +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_Log.dc.html b/src/frontends/android/docs/design/final-2026/F_Log.dc.html new file mode 100644 index 000000000..4e645cef2 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_Log.dc.html @@ -0,0 +1,65 @@ + + + + +Журнал + + + + + + + + +
+
+ + + +

Журнал

+ +
+ +
+
+ + + +
+ +
+ +
+ {{l.t}} + {{l.m}} +
+
+
+ +
В отчёт попадут журнал подключения и версия приложения.
+ Отправить отчёт +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_ManualAdd.dc.html b/src/frontends/android/docs/design/final-2026/F_ManualAdd.dc.html new file mode 100644 index 000000000..64dc1c739 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_ManualAdd.dc.html @@ -0,0 +1,67 @@ + + + + +Сервер вручную + + + + + + + + +
+
+ + + +

Сервер вручную

+
+ +
+ + + + + ВХОД +
+ + + +
+ + + + + +
+ Проверить и добавить +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_NotifSettings.dc.html b/src/frontends/android/docs/design/final-2026/F_NotifSettings.dc.html new file mode 100644 index 000000000..c00f62f03 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_NotifSettings.dc.html @@ -0,0 +1,82 @@ + + + + +Уведомления + + + + + + + + +
+
+ + + +

Уведомления

+
+ +
+

Все события всегда сохраняются в «Событиях». Здесь — что ещё приходит пушем.

+ + +
+

{{g.title}}

+
+ +
+ + {{r.title}}{{r.tag}} + {{r.sub}} + + +
+
+
+
+
+ + + Звук и вид — в настройках Android + + +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_Onboarding.dc.html b/src/frontends/android/docs/design/final-2026/F_Onboarding.dc.html new file mode 100644 index 000000000..8851d8138 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_Onboarding.dc.html @@ -0,0 +1,59 @@ + + + + +Онбординг + + + + + + + + +
+ + + + +
+ ШАГ 1 ИЗ 3 +

Российское — напрямую, остальное — через VPN

+

Банки и Госуслуги работают как обычно, а заблокированные сервисы открываются без переключений.

+
+ +
+ +
+ + + +
+ +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_Pause.dc.html b/src/frontends/android/docs/design/final-2026/F_Pause.dc.html new file mode 100644 index 000000000..309054d14 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_Pause.dc.html @@ -0,0 +1,53 @@ + + + + +Пауза VPN + + + + + + + + +
+
+ +
+

Пауза VPN

+ Весь трафик пойдёт напрямую. VPN включится сам. +
+
+ + + +
+ + Поставить на паузу 15 мин + Отменить можно с главной, из шторки или виджета +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_Permissions.dc.html b/src/frontends/android/docs/design/final-2026/F_Permissions.dc.html new file mode 100644 index 000000000..809405a24 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_Permissions.dc.html @@ -0,0 +1,76 @@ + + + + +Разрешения + + + + + + + + +
+
+ ШАГ 2 ИЗ 3 +

Чтобы VPN работал стабильно

+

Android может выключать VPN в фоне. Разрешите главное — остальное можно позже.

+
+ +
+ +
+ + + + + {{p.title}}{{p.tag}} + {{p.why}} + + + + + + + + {{p.btn}} + +
+
+
+ +
+
+ Продолжить + Всё это можно изменить в Настройки → Стабильная работа +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_Profile.dc.html b/src/frontends/android/docs/design/final-2026/F_Profile.dc.html new file mode 100644 index 000000000..1216885f2 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_Profile.dc.html @@ -0,0 +1,139 @@ + + + + +Сервер + + + + + + + + +
+
+ + + + + + Поделиться + +
+ +
+
+ NL + +

Амстердам

+ Подключён · 38 мс +
+
+ +

ИСТОЧНИК ПРОФИЛЯ

+
+
+ + + + + {{src.label}} + {{src.value}} + + + + +
+ +
+ + Обновлять автоматически + Раз в сутки · проверено 2 ч назад · изменений нет + + +
+
+ +
{{src.note}}
+
+ +
+ + +
+

{{g.title}}

+
+ +
+ + {{r.title}} + {{r.sub}} + + + + + + {{r.value}} + + +
+
+
+
+
+ + +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_ProfileFile.dc.html b/src/frontends/android/docs/design/final-2026/F_ProfileFile.dc.html new file mode 100644 index 000000000..401cfdfa2 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_ProfileFile.dc.html @@ -0,0 +1,139 @@ + + + + +Сервер — из файла + + + + + + + + +
+
+ + + + + + Поделиться + +
+ +
+
+ NL + +

Амстердам

+ Подключён · 38 мс +
+
+ +

ИСТОЧНИК ПРОФИЛЯ

+
+
+ + + + + {{src.label}} + {{src.value}} + + + + +
+ +
+ + Обновлять автоматически + Раз в сутки · проверено 2 ч назад · изменений нет + + +
+
+ +
{{src.note}}
+
+ +
+ + +
+

{{g.title}}

+
+ +
+ + {{r.title}} + {{r.sub}} + + + + + + {{r.value}} + + +
+
+
+
+
+ + +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_ProfileUpdate.dc.html b/src/frontends/android/docs/design/final-2026/F_ProfileUpdate.dc.html new file mode 100644 index 000000000..44d957e61 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_ProfileUpdate.dc.html @@ -0,0 +1,59 @@ + + + + +Обновление профиля + + + + + + + + +
+
+ +
+

В профиле есть изменения

+ Амстердам · проверено только что по ссылке +
+ +
+ +
+ {{d.k}} + + {{d.old}} + + {{d.new}} + +
+
+
+ +
+ + Останутся без изменений: запасные порты, резервный сервер, мост, DNS, правила и приложения. +
+ + +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_Protection.dc.html b/src/frontends/android/docs/design/final-2026/F_Protection.dc.html new file mode 100644 index 000000000..cccf1d1db --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_Protection.dc.html @@ -0,0 +1,75 @@ + + + + +DNS и реклама + + + + + + + + +
+
+ + + +

DNS и реклама

+
+ +
+
+ Блокировка включена + AdGuard DNS + Блокируются: реклама · трекеры · фишинг +
+ +

БЛОКИРОВАТЬ

+
+ +
+ + {{t.title}} + {{t.sub}} + + +
+
+
+

Реклама и трекеры блокируются вместе — через AdGuard DNS; только фишинг — через Cloudflare 1.1.1.2.

+ +

DNS-СЕРВЕР

+
+ + + +
+

Запросы к этому DNS идут через туннель — провайдер не сможет подменить ответ. Приложения, которые идут мимо VPN, используют DNS сети.

+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_QsTile.dc.html b/src/frontends/android/docs/design/final-2026/F_QsTile.dc.html new file mode 100644 index 000000000..564a4e0d8 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_QsTile.dc.html @@ -0,0 +1,47 @@ + + + + +Плитка в быстрых настройках + + + + + + + + +
+
+ 14:22LTE · 78% +
SHX VPNАмстердам
Интернет
Bluetooth
Фонарик
+
+ Состояния плитки SHX VPN +
Защищено — тап выключает
SHX VPNАмстердам
Выключен — тап подключает последний сервер
SHX VPNВыключен
Подключаемся — тап отменяет
SHX VPNПодключаемся…
Проблема — тап открывает приложение
SHX VPNСервер не отвечает
+
Долгое нажатие — экран «Серверы»Если серверов ещё нет, тап открывает «Добавить сервер». Плитку предлагаем добавить после первого подключения.
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_Recent.dc.html b/src/frontends/android/docs/design/final-2026/F_Recent.dc.html new file mode 100644 index 000000000..aeaff0fdf --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_Recent.dc.html @@ -0,0 +1,103 @@ + + + + +Недавние приложения + + + + + + + + +
+
+ + + + +

Недавние приложения

+ за последний час · обновляется вживую +
+
+ +
+
+ + + + +
+ +
+
+ Г + + Госуслуги не открываются + 7 неудачных соединений через VPN за 5 мин. Скорее всего, сервис не пускает зарубежные адреса. + +
+
+ + Подробнее +
+
+ + +
+

{{g.title}}

+
+ +
+ {{a.letter}} + + {{a.name}}НОВОЕ + {{a.route}}{{a.meta}} + + +
+
+
+
+
+ +

Переключатель — «напрямую, без VPN». Трафик приложений считается по системной статистике: нужен доступ «Статистика использования».

+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_RecentEmpty.dc.html b/src/frontends/android/docs/design/final-2026/F_RecentEmpty.dc.html new file mode 100644 index 000000000..81e7884c6 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_RecentEmpty.dc.html @@ -0,0 +1,48 @@ + + + + +Недавние приложения — нет доступа + + + + + + + + +
+
+ + + +

Недавние приложения

+
+ +
+ +

Покажем, какие приложения выходят в сеть

+

И каким путём — через VPN или напрямую. Так проще найти приложение, которое не работает. Для этого нужен доступ «Статистика использования».

+
Мы видим только объём трафика по приложениям. Содержимое и сайты остаются на телефоне.
+
+ Разрешить доступ + Не сейчас +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_Routing.dc.html b/src/frontends/android/docs/design/final-2026/F_Routing.dc.html new file mode 100644 index 000000000..1768383cc --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_Routing.dc.html @@ -0,0 +1,140 @@ + + + + +Маршруты + + + + + + + + +
+
+

Маршруты

+
+ +
+
+
+ + Раздельный туннель + Мимо VPN: сайты РФ · 24 приложения · 2 правила + + +
+
+
Через VPN 72%Напрямую 28%
+
+ +

САЙТЫ И СЕРВИСЫ РФ

+
+
+ + Сайты РФ напрямую + База: 12 480 сетей · сегодня + + + +
+
+ + +
+
+ +

ИСКЛЮЧЕНИЯ

+
+ + + + + + Приложения напрямую + 24 работают без VPN + + + + + +22 + + + + + + + + Правила + Домены, адреса и шаблоны пакетов + + 5 + + +
+ +

ПРОВЕРКА

+ + + Как ходит сайт, IP или приложение + + + + Недавние приложения + 2 с ошибками + + + + + + {{r.l}} + {{r.n}} + + + + +
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_RuleAdd.dc.html b/src/frontends/android/docs/design/final-2026/F_RuleAdd.dc.html new file mode 100644 index 000000000..7dc48ca20 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_RuleAdd.dc.html @@ -0,0 +1,65 @@ + + + + +Новое правило + + + + + + + + +
+
+ +

Новое правило

+ +
+ + + +
+ + + + + Куда направлять +
+ + +
+ +
Сейчас kinopoisk.ru и так идёт напрямую — по базе РФ. Правило закрепит это, даже если база изменится.
+ + +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_Rules.dc.html b/src/frontends/android/docs/design/final-2026/F_Rules.dc.html new file mode 100644 index 000000000..6907390e0 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_Rules.dc.html @@ -0,0 +1,88 @@ + + + + +Правила + + + + + + + + +
+
+ + + +

Правила

+
+ +
+

Куда идут сайты, адреса и приложения. Правило важнее базы РФ.

+ +
+ + + + +
+ + +
+

{{g.title}}

+
+ +
+ {{r.kind}} + + {{r.value}} + {{r.sub}} + + +
+
+
+
+
+
+ + + Правило + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_RulesEmpty.dc.html b/src/frontends/android/docs/design/final-2026/F_RulesEmpty.dc.html new file mode 100644 index 000000000..ef2a372c7 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_RulesEmpty.dc.html @@ -0,0 +1,62 @@ + + + + +Правила — пусто + + + + + + + + +
+
+ + + +

Правила

+
+ +
+
+ + + + Правил пока нет — и это нормально + Сайты РФ и выбранные приложения уже идут напрямую. Правило нужно, только если какой-то сайт идёт не тем путём. +
+ + ЧАСТО ДОБАВЛЯЮТ + + +
+ + Своё правило +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_ScenarioAdd.dc.html b/src/frontends/android/docs/design/final-2026/F_ScenarioAdd.dc.html new file mode 100644 index 000000000..91d6ac69c --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_ScenarioAdd.dc.html @@ -0,0 +1,79 @@ + + + + +Новый сценарий + + + + + + + + +
+
+ +

Новый сценарий

+ + 1 · КОГДА +
+ + + +
+
+ TTelegram + YYouTube + + Выбрать +
+ + 2 · ЧТО СДЕЛАТЬ +
+ + + +
+
+ Сервер + Автоматически + +
+ +
Итог: когда открыт Telegram или YouTube → включить VPN. После закрытия — вернуть как было.
+ + +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_ScenarioSuggest.dc.html b/src/frontends/android/docs/design/final-2026/F_ScenarioSuggest.dc.html new file mode 100644 index 000000000..8992e71b0 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_ScenarioSuggest.dc.html @@ -0,0 +1,108 @@ + + + + +Главная — предложение сценария + + + + + + + + +
+
+ shxvpn + + + + 2 + + + + + +
+ +
+ + VPN выключен + Выключен вручную · Home_5G +
+ +
+ + NL + + Амстердам + последний сервер + + Сменить + + + + +
+
+ + + + + Выключать VPN здесь автоматически? + Вы уже 3-й раз выключаете его в сети Home_5G. Вне этой сети VPN будет включаться сам. + +
+ +
+
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_ServerDelete.dc.html b/src/frontends/android/docs/design/final-2026/F_ServerDelete.dc.html new file mode 100644 index 000000000..3499797a1 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_ServerDelete.dc.html @@ -0,0 +1,40 @@ + + + + +Удалить сервер + + + + + + + + +
+
+ + + +

Удалить «Амстердам»?

+

Это текущий сервер — VPN отключится.

+

Вернуть можно, снова добавив профиль по ссылке, файлу или QR.

+ +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_Servers.dc.html b/src/frontends/android/docs/design/final-2026/F_Servers.dc.html new file mode 100644 index 000000000..dcd77a31d --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_Servers.dc.html @@ -0,0 +1,95 @@ + + + + +Серверы + + + + + + + + +
+
+

Серверы

+ + + +
+ +
+ + +

МОИ СЕРВЕРЫ · 4

+
+ +
+ {{s.code}} + + {{s.name}}{{s.tag}} + {{s.meta}} + + + + +
+
+
+

Один сервер — один профиль .sswan. Резерв и мост включаются сами, когда основной недоступен.

+
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_Settings.dc.html b/src/frontends/android/docs/design/final-2026/F_Settings.dc.html new file mode 100644 index 000000000..95aeaf0ac --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_Settings.dc.html @@ -0,0 +1,102 @@ + + + + +Настройки + + + + + + + + +
+
+

Настройки

+
+ +
+ + + +
+

{{g.title}}

+ +
+
+
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_Shade.dc.html b/src/frontends/android/docs/design/final-2026/F_Shade.dc.html new file mode 100644 index 000000000..4a0bc6693 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_Shade.dc.html @@ -0,0 +1,81 @@ + + + + +Уведомление и виджет + + + + + + + + +
+
+ + +
+ +
+
+ + + + SHX VPN · 01:24:37 +
+
+ Защищено · Амстердам + РФ-сайты идут напрямую +
+
+ + Сменить + +
+
+ +
+ +
+
+
+ SHX + +
+
+ NL · 38 мс + 1,24 ГБ сегодня +
+
+ +
+ Обновлено +
+ Что нового в 2.17 + Выбор локации, статистика и сценарии +
+
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_Share.dc.html b/src/frontends/android/docs/design/final-2026/F_Share.dc.html new file mode 100644 index 000000000..d09aec986 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_Share.dc.html @@ -0,0 +1,85 @@ + + + + +Поделиться по QR + + + + + + + + +
+
+ + + +

Поделиться сервером

+
+ +
+

Пусть друг откроет SHX → «Серверы» → «+» → «Сканировать QR». Интернет не нужен.

+ +
+
+ + + + + + +
+
+ +
+ NL + + Амстердам + профиль .sswan · без пароля и ключа + +
+ +
+ +
Если профиль входит по сертификату, другу понадобится свой — в QR его нет.
+
+ + +
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_Stats.dc.html b/src/frontends/android/docs/design/final-2026/F_Stats.dc.html new file mode 100644 index 000000000..6d62a6ea4 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_Stats.dc.html @@ -0,0 +1,96 @@ + + + + +Статистика трафика + + + + + + + + +
+
+ + + +

Статистика

+
+ +
+
+ + + +
+ +
+
+ 4 – 10 октября + 18,4 ГБ +
+
+ +
+
+
+
+
+ {{d.label}} +
+
+
+
+
+ Через VPN + 13,1 ГБ +
+
+ Напрямую (РФ) + 5,3 ГБ +
+
+
+ +
+

Приложения

+
+ +
+ {{a.letter}} + + {{a.name}}{{a.size}} + + +
+
+
+
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_StatsEmpty.dc.html b/src/frontends/android/docs/design/final-2026/F_StatsEmpty.dc.html new file mode 100644 index 000000000..eb2510987 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_StatsEmpty.dc.html @@ -0,0 +1,66 @@ + + + + +Статистика — первый день + + + + + + + + +
+
+ + + +

Статистика

+
+ +
+
+ + + +
+ +
+ + Сегодня + 86 МБ + + +
+ +
+ + + История копится с сегодняшнего дня + Через неделю здесь будет видно, сколько трафика идёт через VPN и сколько напрямую, и какие приложения тратят больше всего. + +
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_SysNotifs.dc.html b/src/frontends/android/docs/design/final-2026/F_SysNotifs.dc.html new file mode 100644 index 000000000..f40d092ad --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_SysNotifs.dc.html @@ -0,0 +1,88 @@ + + + + +Системные уведомления + + + + + + + + +
+ +
+
+ + + + SHX VPN · Статус · постоянное +
+ Подключаемся к Хельсинки… + Сеть, сервер, вход, туннель +
+ +
+
+ + +
+
+ + + + SHX VPN · {{n.channel}} + {{n.time}} +
+ {{n.title}} + {{n.text}} + + {{n.a1}} + {{n.a2}} + +
+
+ +
+ КАНАЛЫ УВЕДОМЛЕНИЙ + +
+ + {{c.name}} + {{c.desc}} + + {{c.level}} +
+
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_Update.dc.html b/src/frontends/android/docs/design/final-2026/F_Update.dc.html new file mode 100644 index 000000000..110eb02dd --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_Update.dc.html @@ -0,0 +1,55 @@ + + + + +Обновление приложения + + + + + + + + +
+
+ +
+ + + + +

SHX VPN 2.17.0

+ У вас 2.16.0 · 18,4 МБ · подпись проверена +
+
+
+ ЧТО НОВОГО + + {{n}} + +
+
+ СкачиваниеСкачано · 18,4 МБ + +
+ + Текст «Что нового» берётся из заметок релиза +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_UpdateInstall.dc.html b/src/frontends/android/docs/design/final-2026/F_UpdateInstall.dc.html new file mode 100644 index 000000000..abef8b3aa --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_UpdateInstall.dc.html @@ -0,0 +1,57 @@ + + + + +Установка обновления + + + + + + + + +
+
+ +
+

Разрешите установку обновлений

+ SHX VPN обновляется сам, без Google Play. Android один раз спросит, можно ли приложению устанавливать обновления. +
+ +
+ ВЫ УВИДИТЕ ТАКОЙ ЭКРАН +
+ + Разрешить установку из этого источника + SHX VPN + + +
+ Включите переключатель и нажмите «Назад» — установка продолжится. +
+ +
+ + Безопасно: приложение ставит только файлы с подписью SHX и проверенной контрольной суммой. +
+ +
+ Не сейчас + +
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_VpnConsent.dc.html b/src/frontends/android/docs/design/final-2026/F_VpnConsent.dc.html new file mode 100644 index 000000000..0ec55ee0c --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_VpnConsent.dc.html @@ -0,0 +1,50 @@ + + + + +Системный запрос VPN + + + + + + + + +
+
+ + + + + Сейчас Android спросит разрешение + Это стандартное окно для любого VPN. Нажмите «ОК» — без этого подключиться нельзя. + +
+ +
+ + + +

Запрос на подключение

+

Приложение «SHX VPN» пытается подключиться к сети VPN, что позволит ему отслеживать сетевой трафик. Продолжайте, только если доверяете источнику.

+
+ + ОК +
+
+ Окно рисует Android — его текст и вид изменить нельзя +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/F_Widgets.dc.html b/src/frontends/android/docs/design/final-2026/F_Widgets.dc.html new file mode 100644 index 000000000..5fe23e085 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/F_Widgets.dc.html @@ -0,0 +1,47 @@ + + + + +Виджеты на рабочем столе + + + + + + + + +
+
+
+
4×2 · подробный
Защищено · 01:24Амстердам · 1,24 ГБ сегодняПаузаБыстрейшийСменить
+
2×1 · защищено и выключен
ЗащищеноNL · 01:24
Выключентап — Амстердам
+
2×1 · подключаемся и проблема
ПодключаемсяАмстердам
Нет ответаАмстердам
+
1×1 · значок со статусом
+
Как работает
  • Тап по кнопке — вкл/выкл, по тексту — открыть приложение.
  • Цвета берутся из Material You, как у приложения; в тёмной теме — тёмный фон.
  • Состояния те же, что на главной: защищено, выключен, подключаемся, проблема.
  • Размеры 1×1, 2×1 и 4×2; растягиваются по сетке лаунчера.
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/Import.dc.html b/src/frontends/android/docs/design/final-2026/Import.dc.html new file mode 100644 index 000000000..31926a40d --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/Import.dc.html @@ -0,0 +1,85 @@ + + + + +Добавить профиль + + + + + + + + +
+
+ + + +

Добавить профиль

+
+ +
+
+
+ + + + + +
+ QR с конфигурацией или ссылкой на .sswan +
+ +
+ +
+ + + + +
+ Профиль strongSwan (.sswan). Ссылку запомним, чтобы подтягивать изменения конфигурации +
+ +
+

Добавлены по ссылке

+
+
+ + + + + SHX · Амстердам + профиль .sswan · проверен 2 ч назад + + +
+
+
+ +
+ + +
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/Locations.dc.html b/src/frontends/android/docs/design/final-2026/Locations.dc.html new file mode 100644 index 000000000..a70dbf05e --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/Locations.dc.html @@ -0,0 +1,96 @@ + + + + +Выбор локации + + + + + + + + +
+
+ + + +

Локация

+ +
+ +
+ + + + +
+ + + + +
+ +
Ваши профили · 6
+
+ + + +
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/Logo.dc.html b/src/frontends/android/docs/design/final-2026/Logo.dc.html new file mode 100644 index 000000000..c5ca780cd --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/Logo.dc.html @@ -0,0 +1,122 @@ + + + + +Логотип SHX + + + + + + + + +
+ +
+
+ ЗНАК · ЦЕЛЕВОЙ +

Щит-S

+

Щит — защита, S — SHX. Буква вырезана в щите, поэтому знак остаётся одним силуэтом: читается в 24 px и сам по себе работает как значок строки состояния.

+
+ +
+ + + + +
+ +
+ +
+
+ +
+ {{s.label}} +
+
+
+
+ +
+
+
+ + + + shxvpn +
+
+ + + + shxvpn +
+
+ +
+
+ + + + SHX VPN + Рабочий стол +
+
+ + + + SHX VPN + Тематический значок +
+
+
+ + +
+ Строка состояния и уведомления +
+
+ +
+ НАПРАВЛЕНИЯ +
+
+ + + + A · РазвилкаПро раздельный туннель +
+
+ + + + B · Щит-SВыбрано +
+
+ + + + C · ТоннельБуквально про туннель +
+
+
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/Main.dc.html b/src/frontends/android/docs/design/final-2026/Main.dc.html new file mode 100644 index 000000000..019e0405b --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/Main.dc.html @@ -0,0 +1,109 @@ + + + + +Главная + + + + + + + + + + + + + diff --git a/src/frontends/android/docs/design/final-2026/MainAlert.dc.html b/src/frontends/android/docs/design/final-2026/MainAlert.dc.html new file mode 100644 index 000000000..32f4439f1 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/MainAlert.dc.html @@ -0,0 +1,98 @@ + + + + +Главная — алерты + + + + + + + + +
+
+
SHX VPN
+ + + + +
+ +
+
+
+ + + + + Белые списки у оператора + Работают только российские сайты. VPN подключится сам, когда ограничение снимут. + +
+
+ Что делать + +
+
+ +
+ + Постоянный VPN выключен + +
+
+ +
+
+ Ожидание сети · повтор через 2:00 +
+ +
+ +
+ + NL + + Нидерланды · Амстердам + Сервер недоступен из этой сети + + + +
+ + Банки и Госуслуги работают напрямую +
+
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/O_Analysis.dc.html b/src/frontends/android/docs/design/final-2026/O_Analysis.dc.html new file mode 100644 index 000000000..6edbbe35c --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/O_Analysis.dc.html @@ -0,0 +1,97 @@ + + + + +Что есть и чего не хватает + + + + + + + + +
+
+ АНАЛИЗ · SHX VPN 2.16.0 (ANDROID) +

Что есть сейчас и чего не хватает

+

Приложение на strongSwan (IKEv2/IPsec), Jetpack Compose, Material 3 Expressive. 4 вкладки: Подключение, Профили, Маршрутизация, Настройки. Языки: русский, английский, немецкий.

+
+ +
+
+

Уже есть

+ +
+ {{h.t}} + {{h.d}} +
+
+
+ +
+
+

Не хватает

+ +
+ + {{m.t}} — {{m.d}} +
+
+
+ +
+

Важно помнить

+

.sswan — это конфигурация одного профиля strongSwan (один сервер), а не подписка. Сервера подписок нет; «подписка» потребовала бы нового формата на сервере.

+

Импорт сейчас: файл или ссылка на .sswan, deeplink shxvpn://, ручной ввод, MDM.

+
+ +
+

Палитра приложения

+
+ +
+ + {{c.hex}} +
+
+
+
+
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/O_Decisions.dc.html b/src/frontends/android/docs/design/final-2026/O_Decisions.dc.html new file mode 100644 index 000000000..ea0ff4e8a --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/O_Decisions.dc.html @@ -0,0 +1,112 @@ + + + + +Решения по дизайну + + + + + + + + +
+
+ РЕШЕНИЯ +

Как пришли к финалу

+
+ +
+ +
+ {{d.tag}} + {{d.t}} + {{d.d}} +
+
+
+ +
+
+

Что изменилось в «Финал 2026»

+ +
+ {{c.n}} + + {{c.t}} + {{c.d}} + +
+
+
+ +
+
+

Принципы UX

+ + {{r.n}}. {{r.t}} + +
+
+

Ваши поправки

+ .sswan ≠ подписка — импорт переименован в «Добавить сервер / ссылка на профиль». + «Приложения напрямую» — оставлены как в текущем приложении: иконки, фильтры, наборы, причина у каждого. + Сценарии живут в Настройки → Автоматизация. +
+
+ + + + + Логотип «Щит-S» + Щит — защита, S — SHX; один силуэт для всех размеров + +
+
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/O_Features.dc.html b/src/frontends/android/docs/design/final-2026/O_Features.dc.html new file mode 100644 index 000000000..078bc4155 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/O_Features.dc.html @@ -0,0 +1,110 @@ + + + + +Фичи по приоритетам + + + + + + + + +
+
+
+ ФИЧИ +

Что добавить — по приоритетам

+
+
+ На макете + Нужна новая логика +
+
+ +
+
+

Для пользователей

+ +
+ {{f.p}} + + {{f.t}} + {{f.d}} + + {{f.s}} +
+
+
+ +
+
+

Против массовых блокировок

+

IKEv2/IPsec режут первым (UDP 500/4500). Главное — пережить блокировку, а не новые экраны.

+ +
+ {{f.n}} + + {{f.t}} + {{f.d}} + + {{f.s}} +
+
+
+ +
+

Не советую

+ «Скрыть VPN от банков» — на Android надёжно не сделать, обещать нельзя. + Обфускация IKE / поверх TCP-TLS — IPsec так не замаскировать; нужен второй транспорт, это отдельный проект. +
+
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/O_Screens.dc.html b/src/frontends/android/docs/design/final-2026/O_Screens.dc.html new file mode 100644 index 000000000..d5cd8171e --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/O_Screens.dc.html @@ -0,0 +1,73 @@ + + + + +Карта экранов + + + + + + + + +
+
+
+ КАРТА ЭКРАНОВ +

52 экрана «Финал 2026»

+

По разделам нижнего меню. Курсивом — состояния и шторки, которые не открываются как отдельная страница. Под названием — файл на странице «Финал 2026».

+
+
+ Экран + Состояние / шторка +
+
+ +
+ +
+
+

{{s.title}}

+ {{s.count}} +
+ +
+ {{i.t}} + {{i.f}} +
+
+
+
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/Onboarding.dc.html b/src/frontends/android/docs/design/final-2026/Onboarding.dc.html new file mode 100644 index 000000000..ad497cfab --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/Onboarding.dc.html @@ -0,0 +1,59 @@ + + + + +Онбординг + + + + + + + + +
+ + + + +
+ ШАГ 1 ИЗ 3 +

Российское — напрямую, остальное — через VPN

+

Банки и Госуслуги работают как обычно, а заблокированные сервисы открываются без переключений.

+
+ +
+ +
+ + + +
+ +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/Protection.dc.html b/src/frontends/android/docs/design/final-2026/Protection.dc.html new file mode 100644 index 000000000..8483bbdbb --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/Protection.dc.html @@ -0,0 +1,87 @@ + + + + +DNS и защита + + + + + + + + +
+
+ + + +

DNS и защита

+
+ +
+
+ + Заблокировано за неделю + 1 284 + реклама 812 · трекеры 459 · фишинг 13 + + +
+ +
+ +
+ + {{t.title}} + {{t.detail}} + + +
+
+
+ +
+

DNS-сервер

+
+ + + +
+
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/RouteCheck.dc.html b/src/frontends/android/docs/design/final-2026/RouteCheck.dc.html new file mode 100644 index 000000000..881deef96 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/RouteCheck.dc.html @@ -0,0 +1,84 @@ + + + + +Проверка маршрута + + + + + + + + +
+
+ + + +

Проверка маршрута

+
+ +
+
+ + +
+ +
+ Итог + Идёт напрямую, мимо VPN + Все адреса попадают в RU-диапазоны +
+ +

DNS

+
+
+ Через DNS туннеля + 213.180.•••.10 · 213.180.•••.11 +
+
+ Через DNS прямой сети + 213.180.•••.10 +
+
+ +

МАРШРУТЫ

+
+ +
+ + {{r.ip}} + {{r.why}} + + напрямую +
+
+
+ +
+ Изменить для этого доменаНОВОЕ + Всегда через VPN +
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/Routing.dc.html b/src/frontends/android/docs/design/final-2026/Routing.dc.html new file mode 100644 index 000000000..167b48670 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/Routing.dc.html @@ -0,0 +1,141 @@ + + + + +Маршрутизация + + + + + + + + +
+
+

Маршрутизация

+
+ +
+
+
+ + + Раздельный туннель + Мимо VPN: сайты РФ · 24 приложения + + +
+ + + Как идёт сайт? Введите домен + НОВОЕ + +
+ +

САЙТЫ И СЕРВИСЫ РФ

+
+
+ RU + + Сайты РФ напрямую + Российские адреса идут мимо VPN + + +
+ Способ +
+ + +
+
+ База адресов: 12 480 сетей · обновлена сегодня + +
+
+ +

ПРИЛОЖЕНИЯ

+
+ + + + + + Приложения напрямую + 24 приложения работают без VPN + + + С + Г + W + +21 + + + +
+ В + Установлен «ВкусВилл». Пустить напрямую? + +
+
+ +

ДОПОЛНИТЕЛЬНО

+
+ + + + {{r.title}} + {{r.sub}} + + {{r.count}} + + + +
+
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/RoutingApps.dc.html b/src/frontends/android/docs/design/final-2026/RoutingApps.dc.html new file mode 100644 index 000000000..bfff4d762 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/RoutingApps.dc.html @@ -0,0 +1,126 @@ + + + + +Приложения напрямую + + + + + + + + +
+
+ + + +

Приложения напрямую

+
+ +
+

Включённые приложения ходят в сеть напрямую, мимо VPN. Банки и сервисы РФ часто не работают через VPN.

+ + + +
+ + + +
+ +
+ Быстро добавить +
+ + + +
+
+ + +
+

{{g.title}}

+
+ +
+ {{a.letter}} + + {{a.name}} + {{a.reason}} + + +
+
+
+
+
+ + +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/RoutingDead.dc.html b/src/frontends/android/docs/design/final-2026/RoutingDead.dc.html new file mode 100644 index 000000000..d8ce17001 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/RoutingDead.dc.html @@ -0,0 +1,65 @@ + + + + +Недоступные хосты + + + + + + + + +
+
+ + + +

Недоступные хосты

+
+ +
+

Приложения стучатся к этим адресам напрямую, но те не отвечают. Давно молчащие хосты сами переводятся в туннель до смены сети.

+
+ +
+ + {{h.host}} + {{h.meta}} + + + через туннель + + + + +
+
+
+

«Через VPN» добавляет адрес в список «Всегда через VPN».

+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/RoutingForce.dc.html b/src/frontends/android/docs/design/final-2026/RoutingForce.dc.html new file mode 100644 index 000000000..14501aee6 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/RoutingForce.dc.html @@ -0,0 +1,78 @@ + + + + +Всегда через VPN + + + + + + + + +
+
+ + + +

Всегда через VPN

+
+ +
+

Адреса, подсети и домены, которые всегда идут через туннель, даже если попадают в RU-диапазоны.

+
+ +
+ + {{e.value}} + {{e.kind}}НОВОЕ + + + +
+
+ +
+
+ +
+
+

Адрес, подсеть или домен

+ +
+ + +
+
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/RoutingPatterns.dc.html b/src/frontends/android/docs/design/final-2026/RoutingPatterns.dc.html new file mode 100644 index 000000000..ab101d5d3 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/RoutingPatterns.dc.html @@ -0,0 +1,69 @@ + + + + +Шаблоны пакетов + + + + + + + + +
+
+ + + +

Шаблоны пакетов

+
+ +
+

Шаблон выбирает приложения по имени пакета. «ru.*» — начинается с, «*yandex*» — содержит, «*.beta» — заканчивается на.

+
+ +
+
+ + {{p.value}} + {{p.count}} + + +
+
+ + {{i.l}} + + Показать все + НОВОЕ +
+
+
+ +
+

Приложение можно исключить из шаблона: выключите его в списке «Приложения напрямую» — оно пойдёт через VPN.

+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/Settings.dc.html b/src/frontends/android/docs/design/final-2026/Settings.dc.html new file mode 100644 index 000000000..03efb3a2c --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/Settings.dc.html @@ -0,0 +1,91 @@ + + + + +Настройки + + + + + + + + + + + + + diff --git a/src/frontends/android/docs/design/final-2026/Shade.dc.html b/src/frontends/android/docs/design/final-2026/Shade.dc.html new file mode 100644 index 000000000..2fbfed10a --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/Shade.dc.html @@ -0,0 +1,81 @@ + + + + +Уведомление и виджет + + + + + + + + +
+
+ + +
+ +
+
+ + + + SHX VPN · 01:24:37 +
+
+ Защищено · Амстердам + ↓ 4,2 МБ/с · ↑ 310 КБ/с · сегодня 1,24 ГБ +
+
+ + + +
+
+ +
+ +
+
+
+ SHX + +
+
+ NL · 38 мс + 1,24 ГБ сегодня +
+
+ +
+ Обновлено +
+ Что нового в 2.17 + Выбор локации, статистика и сценарии +
+
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/SimpleFix.dc.html b/src/frontends/android/docs/design/final-2026/SimpleFix.dc.html new file mode 100644 index 000000000..d986ccf49 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/SimpleFix.dc.html @@ -0,0 +1,71 @@ + + + + +Что не открывается + + + + + + + + +
+
+ +
+

Что не открывается?

+ + + +
+

Выберите приложение или введите сайт — проверим и починим сами.

+ +
+ + + +
+ + + +
+
+ + + + + СберБанк теперь работает + Банк не пускал через VPN — пустили его напрямую. Применили автоматически. + +
+
+ Готово + +
+
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/SimpleHome.dc.html b/src/frontends/android/docs/design/final-2026/SimpleHome.dc.html new file mode 100644 index 000000000..fd33e2c29 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/SimpleHome.dc.html @@ -0,0 +1,59 @@ + + + + +Простая главная + + + + + + + + +
+
+ SHX VPN + + + +
+ +
+ +
+ Всё работает + Российские сайты и банки — напрямую,
остальное — через Нидерланды
+
+
+ + +
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/SimpleProblem.dc.html b/src/frontends/android/docs/design/final-2026/SimpleProblem.dc.html new file mode 100644 index 000000000..8a08c781d --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/SimpleProblem.dc.html @@ -0,0 +1,54 @@ + + + + +Простая главная — проблема + + + + + + + + +
+
+ SHX VPN + + + +
+ +
+ +
+ Интернет ограничен оператором + Сейчас открываются только российские сайты — банки и Госуслуги работают. VPN включится сам, когда ограничение снимут. +
+
+ +
+
+ + Пробуем резервный сервер… + 2 из 3 +
+ + Почему так? +
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/SimpleSettings.dc.html b/src/frontends/android/docs/design/final-2026/SimpleSettings.dc.html new file mode 100644 index 000000000..622a63109 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/SimpleSettings.dc.html @@ -0,0 +1,84 @@ + + + + +Простые настройки + + + + + + + + + + + + + diff --git a/src/frontends/android/docs/design/final-2026/Stats.dc.html b/src/frontends/android/docs/design/final-2026/Stats.dc.html new file mode 100644 index 000000000..fdfd9ac1c --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/Stats.dc.html @@ -0,0 +1,96 @@ + + + + +Статистика трафика + + + + + + + + +
+
+ + + +

Статистика

+
+ +
+
+ + + +
+ +
+
+ 4 – 10 октября + 18,4 ГБ +
+
+ +
+
+
+
+
+ {{d.label}} +
+
+
+
+
+ Через VPN + 13,1 ГБ +
+
+ Напрямую (РФ) + 5,3 ГБ +
+
+
+ +
+

Приложения

+
+ +
+ {{a.letter}} + + {{a.name}}{{a.size}} + + +
+
+
+
+
+
+
+ + + diff --git a/src/frontends/android/docs/design/final-2026/canvas.json b/src/frontends/android/docs/design/final-2026/canvas.json new file mode 100644 index 000000000..7f0e7ec78 --- /dev/null +++ b/src/frontends/android/docs/design/final-2026/canvas.json @@ -0,0 +1,1613 @@ +{ + "v": 3, + "attachments": {}, + "boards": { + "AdvApps.dc.html": { + "h": 1200, + "page": "explore", + "title": "4 · Приложения без VPN", + "w": 390, + "x": 1410, + "y": 5352 + }, + "AdvDiag.dc.html": { + "h": 1100, + "page": "explore", + "title": "6 · Диагностика (проверка + хосты + журнал)", + "w": 390, + "x": 2350, + "y": 5352 + }, + "AdvHub.dc.html": { + "h": 1120, + "page": "explore", + "title": "1 · Для опытных — всё в одном месте", + "w": 390, + "x": 0, + "y": 5352 + }, + "AdvProfile.dc.html": { + "h": 1240, + "page": "explore", + "title": "5 · Профиль + устойчивость", + "w": 390, + "x": 1880, + "y": 5352 + }, + "AdvRouting.dc.html": { + "h": 1000, + "page": "explore", + "title": "2 · Маршруты", + "w": 390, + "x": 470, + "y": 5352 + }, + "AdvRules.dc.html": { + "h": 940, + "page": "explore", + "title": "3 · Правила (адреса + домены + шаблоны)", + "w": 390, + "x": 940, + "y": 5352 + }, + "Automation.dc.html": { + "h": 844, + "page": "explore", + "title": "P2 · Сценарии", + "w": 390, + "x": 1410, + "y": 1264 + }, + "Diagnostics.dc.html": { + "h": 844, + "page": "explore", + "title": "P1 · Диагностика в один тап", + "w": 390, + "x": 1410, + "y": 0 + }, + "F_Apps.dc.html": { + "h": 1380, + "page": "final", + "title": "Приложения напрямую", + "w": 390, + "x": 470, + "y": 1540 + }, + "F_Diag.dc.html": { + "h": 1240, + "page": "final", + "title": "Диагностика (всё в одном)", + "w": 390, + "x": 1880, + "y": 0 + }, + "F_Home.dc.html": { + "h": 844, + "page": "final", + "title": "Главная", + "w": 390, + "x": 0, + "y": 0 + }, + "F_HomeAlert.dc.html": { + "h": 844, + "page": "final", + "title": "Главная — проблема", + "w": 390, + "x": 470, + "y": 0 + }, + "F_Import.dc.html": { + "h": 844, + "page": "final", + "title": "Добавить сервер", + "w": 390, + "x": 470, + "y": 3620 + }, + "F_Onboarding.dc.html": { + "h": 844, + "page": "final", + "title": "Онбординг", + "w": 390, + "x": 940, + "y": 3620 + }, + "F_Profile.dc.html": { + "h": 1100, + "page": "final", + "title": "Сервер — добавлен по ссылке", + "w": 390, + "x": 1880, + "y": 3620 + }, + "F_Routing.dc.html": { + "h": 1340, + "page": "final", + "title": "Маршруты", + "w": 390, + "x": 0, + "y": 1540 + }, + "F_Rules.dc.html": { + "h": 900, + "page": "final", + "title": "Правила", + "w": 390, + "x": 940, + "y": 1540 + }, + "F_Servers.dc.html": { + "h": 844, + "page": "final", + "title": "Серверы (локации + профили)", + "w": 390, + "x": 940, + "y": 0 + }, + "F_Settings.dc.html": { + "h": 1200, + "page": "final", + "title": "Настройки", + "w": 390, + "x": 0, + "y": 3620 + }, + "F_Shade.dc.html": { + "h": 844, + "page": "final", + "title": "Уведомление и виджет", + "w": 390, + "x": 1410, + "y": 3620 + }, + "F_Share.dc.html": { + "h": 844, + "page": "final", + "title": "Поделиться по QR", + "w": 390, + "x": 2350, + "y": 3620 + }, + "F_Stats.dc.html": { + "h": 844, + "page": "final", + "title": "Статистика", + "w": 390, + "x": 1410, + "y": 0 + }, + "Import.dc.html": { + "h": 844, + "page": "explore", + "title": "P1 · Импорт профиля .sswan и QR", + "w": 390, + "x": 0, + "y": 1264 + }, + "Locations.dc.html": { + "h": 844, + "page": "explore", + "title": "P1 · Выбор локации", + "w": 390, + "x": 470, + "y": 0 + }, + "Logo.dc.html": { + "h": 880, + "page": "final", + "title": "Логотип SHX — «Щит-S»", + "w": 1280, + "x": 0, + "y": 4764 + }, + "Main.dc.html": { + "h": 844, + "page": "explore", + "title": "Главная 2.0 — локация, пауза, трафик, защита", + "w": 390, + "x": 0, + "y": 0 + }, + "MainAlert.dc.html": { + "h": 844, + "page": "explore", + "title": "Главная — алерты (белые списки, kill switch)", + "w": 390, + "x": 1880, + "y": 0 + }, + "O_Analysis.dc.html": { + "h": 1180, + "page": "overview", + "title": "1 · Что есть и чего не хватает", + "w": 1280, + "x": 0, + "y": 0 + }, + "O_Decisions.dc.html": { + "h": 1400, + "page": "overview", + "title": "3 · Решения по дизайну", + "w": 1280, + "x": 2720, + "y": 0 + }, + "O_Features.dc.html": { + "h": 1500, + "page": "overview", + "title": "2 · Фичи по приоритетам", + "w": 1280, + "x": 1360, + "y": 0 + }, + "Onboarding.dc.html": { + "h": 844, + "page": "explore", + "title": "P1 · Онбординг", + "w": 390, + "x": 470, + "y": 1264 + }, + "Protection.dc.html": { + "h": 844, + "page": "explore", + "title": "P2 · DNS и защита", + "w": 390, + "x": 940, + "y": 1264 + }, + "RouteCheck.dc.html": { + "h": 960, + "page": "explore", + "title": "6 · Проверка маршрута", + "w": 390, + "x": 2350, + "y": 2528 + }, + "Routing.dc.html": { + "h": 1180, + "page": "explore", + "title": "1 · Маршрутизация (главный экран)", + "w": 390, + "x": 0, + "y": 2528 + }, + "RoutingApps.dc.html": { + "h": 1380, + "page": "explore", + "title": "2 · Приложения напрямую", + "w": 390, + "x": 470, + "y": 2528 + }, + "RoutingDead.dc.html": { + "h": 844, + "page": "explore", + "title": "5 · Недоступные хосты", + "w": 390, + "x": 1880, + "y": 2528 + }, + "RoutingForce.dc.html": { + "h": 844, + "page": "explore", + "title": "3 · Всегда через VPN", + "w": 390, + "x": 940, + "y": 2528 + }, + "RoutingPatterns.dc.html": { + "h": 844, + "page": "explore", + "title": "4 · Шаблоны пакетов", + "w": 390, + "x": 1410, + "y": 2528 + }, + "Settings.dc.html": { + "h": 844, + "page": "explore", + "title": "Настройки — где живут сценарии", + "w": 390, + "x": 2350, + "y": 0 + }, + "Shade.dc.html": { + "h": 844, + "page": "explore", + "title": "P3 · Уведомление и виджет", + "w": 390, + "x": 1880, + "y": 1264 + }, + "SimpleFix.dc.html": { + "h": 844, + "page": "explore", + "title": "B · «Что-то не открывается?»", + "w": 390, + "x": 470, + "y": 4208 + }, + "SimpleHome.dc.html": { + "h": 844, + "page": "explore", + "title": "A · Главная — всё на одном экране", + "w": 390, + "x": 0, + "y": 4208 + }, + "SimpleProblem.dc.html": { + "h": 844, + "page": "explore", + "title": "C · Проблема — одно действие", + "w": 390, + "x": 940, + "y": 4208 + }, + "SimpleSettings.dc.html": { + "h": 844, + "page": "explore", + "title": "D · Настройки — просто и «для опытных»", + "w": 390, + "x": 1410, + "y": 4208 + }, + "Stats.dc.html": { + "h": 844, + "page": "explore", + "title": "P1 · История трафика", + "w": 390, + "x": 940, + "y": 0 + }, + "F_Check.dc.html": { + "x": 1410, + "y": 1540, + "w": 390, + "h": 1420, + "title": "Как ходит трафик (сайт · IP · приложение)", + "page": "final" + }, + "F_Recent.dc.html": { + "x": 1880, + "y": 1540, + "w": 390, + "h": 1160, + "title": "Недавние приложения", + "page": "final" + }, + "F_Inbox.dc.html": { + "x": 0, + "y": 6244, + "w": 390, + "h": 1300, + "title": "Центр уведомлений в приложении", + "page": "final" + }, + "F_SysNotifs.dc.html": { + "x": 470, + "y": 6244, + "w": 390, + "h": 1060, + "title": "Системные уведомления Android", + "page": "final" + }, + "F_ProfileFile.dc.html": { + "x": 2820, + "y": 3620, + "w": 390, + "h": 1100, + "title": "Сервер — добавлен из файла", + "page": "final" + }, + "F_ImportQR.dc.html": { + "x": 0, + "y": 8144, + "w": 390, + "h": 844, + "title": "Сканер QR", + "page": "final" + }, + "F_ImportPreview.dc.html": { + "x": 470, + "y": 8144, + "w": 390, + "h": 1000, + "title": "Проверка профиля перед добавлением", + "page": "final" + }, + "F_ProfileUpdate.dc.html": { + "x": 940, + "y": 8144, + "w": 390, + "h": 844, + "title": "Обновление профиля: что изменится", + "page": "final" + }, + "F_Pause.dc.html": { + "x": 0, + "y": 9744, + "w": 390, + "h": 844, + "title": "Пауза VPN", + "page": "final" + }, + "F_RuleAdd.dc.html": { + "x": 470, + "y": 9744, + "w": 390, + "h": 844, + "title": "Новое правило", + "page": "final" + }, + "F_Automation.dc.html": { + "x": 940, + "y": 9744, + "w": 390, + "h": 1000, + "title": "Сценарии", + "page": "final" + }, + "F_Protection.dc.html": { + "x": 1410, + "y": 9744, + "w": 390, + "h": 1000, + "title": "DNS и реклама", + "page": "final" + }, + "F_KillSwitch.dc.html": { + "x": 1880, + "y": 9744, + "w": 390, + "h": 844, + "title": "Без VPN — без сети", + "page": "final" + }, + "F_NotifSettings.dc.html": { + "x": 2350, + "y": 9744, + "w": 390, + "h": 1000, + "title": "Настройки уведомлений", + "page": "final" + }, + "F_ScenarioAdd.dc.html": { + "x": 2820, + "y": 9744, + "w": 390, + "h": 1000, + "title": "Новый сценарий", + "page": "final" + }, + "F_Log.dc.html": { + "x": 0, + "y": 11344, + "w": 390, + "h": 1000, + "title": "Журнал и отчёт", + "page": "final" + }, + "F_ManualAdd.dc.html": { + "x": 470, + "y": 11344, + "w": 390, + "h": 1000, + "title": "Сервер вручную", + "page": "final" + }, + "F_Update.dc.html": { + "x": 940, + "y": 11344, + "w": 390, + "h": 844, + "title": "Обновление приложения", + "page": "final" + }, + "F_ServerDelete.dc.html": { + "x": 1410, + "y": 11344, + "w": 390, + "h": 844, + "title": "Удалить сервер", + "page": "final" + }, + "F_AppPicker.dc.html": { + "x": 1880, + "y": 11344, + "w": 390, + "h": 1000, + "title": "Выбор приложений", + "page": "final" + }, + "F_Appearance.dc.html": { + "x": 2350, + "y": 11344, + "w": 390, + "h": 844, + "title": "Оформление", + "page": "final" + }, + "F_HomeScenario.dc.html": { + "x": 2350, + "y": 0, + "w": 390, + "h": 844, + "title": "Главная — VPN выключен сценарием", + "page": "final" + }, + "F_ScenarioSuggest.dc.html": { + "x": 2820, + "y": 0, + "w": 390, + "h": 844, + "title": "Главная — предложение сценария", + "page": "final" + }, + "F_Permissions.dc.html": { + "x": 0, + "y": 12944, + "w": 390, + "h": 1100, + "title": "Чтобы VPN работал стабильно", + "page": "final" + }, + "F_Battery.dc.html": { + "x": 470, + "y": 12944, + "w": 390, + "h": 1000, + "title": "Экономия батареи — инструкция", + "page": "final" + }, + "F_VpnConsent.dc.html": { + "x": 940, + "y": 12944, + "w": 390, + "h": 844, + "title": "Системный запрос VPN", + "page": "final" + }, + "F_UpdateInstall.dc.html": { + "x": 1410, + "y": 12944, + "w": 390, + "h": 844, + "title": "Установка обновления вне Google Play", + "page": "final" + }, + "F_HomeConnecting.dc.html": { + "x": 0, + "y": 14644, + "w": 390, + "h": 844, + "title": "Главная — подключаемся", + "page": "final" + }, + "F_HomePaused.dc.html": { + "x": 470, + "y": 14644, + "w": 390, + "h": 844, + "title": "Главная — пауза", + "page": "final" + }, + "F_HomeEmpty.dc.html": { + "x": 940, + "y": 14644, + "w": 390, + "h": 844, + "title": "Главная — нет серверов", + "page": "final" + }, + "F_ErrImport.dc.html": { + "x": 1410, + "y": 14644, + "w": 390, + "h": 844, + "title": "Ошибка: профиль не добавлен", + "page": "final" + }, + "F_ErrAuth.dc.html": { + "x": 1880, + "y": 14644, + "w": 390, + "h": 844, + "title": "Ошибка: вход отклонён", + "page": "final" + }, + "F_CertExpiry.dc.html": { + "x": 2350, + "y": 14644, + "w": 390, + "h": 844, + "title": "Сертификат скоро истекает", + "page": "final" + }, + "F_RecentEmpty.dc.html": { + "x": 0, + "y": 16088, + "w": 390, + "h": 844, + "title": "Пусто: недавние без разрешения", + "page": "final" + }, + "F_StatsEmpty.dc.html": { + "x": 470, + "y": 16088, + "w": 390, + "h": 844, + "title": "Пусто: статистика в первый день", + "page": "final" + }, + "F_RulesEmpty.dc.html": { + "x": 940, + "y": 16088, + "w": 390, + "h": 844, + "title": "Пусто: правил ещё нет", + "page": "final" + }, + "F_Help.dc.html": { + "x": 1410, + "y": 16088, + "w": 390, + "h": 1240, + "title": "Помощь и о приложении", + "page": "final" + }, + "F_Certs.dc.html": { + "x": 1880, + "y": 16088, + "w": 390, + "h": 1000, + "title": "Сертификаты", + "page": "final" + }, + "O_Screens.dc.html": { + "x": 4080, + "y": 0, + "w": 1280, + "h": 1400, + "title": "4 · Карта экранов «Финал 2026»", + "page": "overview" + }, + "D_Home.dc.html": { + "x": 0, + "y": 0, + "w": 390, + "h": 844, + "title": "Главная", + "page": "final_dark" + }, + "D_HomeAlert.dc.html": { + "x": 470, + "y": 0, + "w": 390, + "h": 844, + "title": "Главная — проблема", + "page": "final_dark" + }, + "D_Servers.dc.html": { + "x": 940, + "y": 0, + "w": 390, + "h": 844, + "title": "Серверы (локации + профили)", + "page": "final_dark" + }, + "D_Routing.dc.html": { + "x": 0, + "y": 1540, + "w": 390, + "h": 1340, + "title": "Маршруты", + "page": "final_dark" + }, + "D_Diag.dc.html": { + "x": 1880, + "y": 0, + "w": 390, + "h": 1240, + "title": "Диагностика (всё в одном)", + "page": "final_dark" + }, + "D_Settings.dc.html": { + "x": 0, + "y": 3620, + "w": 390, + "h": 1200, + "title": "Настройки", + "page": "final_dark" + }, + "D_AppPicker.dc.html": { + "x": 1880, + "y": 11344, + "w": 390, + "h": 1000, + "title": "Выбор приложений", + "page": "final_dark" + }, + "D_Appearance.dc.html": { + "x": 2350, + "y": 11344, + "w": 390, + "h": 844, + "title": "Оформление", + "page": "final_dark" + }, + "D_Apps.dc.html": { + "x": 470, + "y": 1540, + "w": 390, + "h": 1380, + "title": "Приложения напрямую", + "page": "final_dark" + }, + "D_Automation.dc.html": { + "x": 940, + "y": 9744, + "w": 390, + "h": 1000, + "title": "Сценарии", + "page": "final_dark" + }, + "D_Battery.dc.html": { + "x": 470, + "y": 12944, + "w": 390, + "h": 1000, + "title": "Экономия батареи — инструкция", + "page": "final_dark" + }, + "D_CertExpiry.dc.html": { + "x": 2350, + "y": 14644, + "w": 390, + "h": 844, + "title": "Сертификат скоро истекает", + "page": "final_dark" + }, + "D_Certs.dc.html": { + "x": 1880, + "y": 16088, + "w": 390, + "h": 1000, + "title": "Сертификаты", + "page": "final_dark" + }, + "D_Check.dc.html": { + "x": 1410, + "y": 1540, + "w": 390, + "h": 1420, + "title": "Как ходит трафик (сайт · IP · приложение)", + "page": "final_dark" + }, + "D_ErrAuth.dc.html": { + "x": 1880, + "y": 14644, + "w": 390, + "h": 844, + "title": "Ошибка: вход отклонён", + "page": "final_dark" + }, + "D_ErrImport.dc.html": { + "x": 1410, + "y": 14644, + "w": 390, + "h": 844, + "title": "Ошибка: профиль не добавлен", + "page": "final_dark" + }, + "D_Help.dc.html": { + "x": 1410, + "y": 16088, + "w": 390, + "h": 1240, + "title": "Помощь и о приложении", + "page": "final_dark" + }, + "D_HomeConnecting.dc.html": { + "x": 0, + "y": 14644, + "w": 390, + "h": 844, + "title": "Главная — подключаемся", + "page": "final_dark" + }, + "D_HomeEmpty.dc.html": { + "x": 940, + "y": 14644, + "w": 390, + "h": 844, + "title": "Главная — нет серверов", + "page": "final_dark" + }, + "D_HomePaused.dc.html": { + "x": 470, + "y": 14644, + "w": 390, + "h": 844, + "title": "Главная — пауза", + "page": "final_dark" + }, + "D_HomeScenario.dc.html": { + "x": 2350, + "y": 0, + "w": 390, + "h": 844, + "title": "Главная — VPN выключен сценарием", + "page": "final_dark" + }, + "D_Import.dc.html": { + "x": 470, + "y": 3620, + "w": 390, + "h": 844, + "title": "Добавить сервер", + "page": "final_dark" + }, + "D_ImportPreview.dc.html": { + "x": 470, + "y": 8144, + "w": 390, + "h": 1000, + "title": "Проверка профиля перед добавлением", + "page": "final_dark" + }, + "D_ImportQR.dc.html": { + "x": 0, + "y": 8144, + "w": 390, + "h": 844, + "title": "Сканер QR", + "page": "final_dark" + }, + "D_Inbox.dc.html": { + "x": 0, + "y": 6244, + "w": 390, + "h": 1300, + "title": "Центр уведомлений в приложении", + "page": "final_dark" + }, + "D_KillSwitch.dc.html": { + "x": 1880, + "y": 9744, + "w": 390, + "h": 844, + "title": "Без VPN — без сети", + "page": "final_dark" + }, + "D_Log.dc.html": { + "x": 0, + "y": 11344, + "w": 390, + "h": 1000, + "title": "Журнал и отчёт", + "page": "final_dark" + }, + "D_ManualAdd.dc.html": { + "x": 470, + "y": 11344, + "w": 390, + "h": 1000, + "title": "Сервер вручную", + "page": "final_dark" + }, + "D_NotifSettings.dc.html": { + "x": 2350, + "y": 9744, + "w": 390, + "h": 1000, + "title": "Настройки уведомлений", + "page": "final_dark" + }, + "D_Onboarding.dc.html": { + "x": 940, + "y": 3620, + "w": 390, + "h": 844, + "title": "Онбординг", + "page": "final_dark" + }, + "D_Pause.dc.html": { + "x": 0, + "y": 9744, + "w": 390, + "h": 844, + "title": "Пауза VPN", + "page": "final_dark" + }, + "D_Permissions.dc.html": { + "x": 0, + "y": 12944, + "w": 390, + "h": 1100, + "title": "Чтобы VPN работал стабильно", + "page": "final_dark" + }, + "D_Profile.dc.html": { + "x": 1880, + "y": 3620, + "w": 390, + "h": 1100, + "title": "Сервер — добавлен по ссылке", + "page": "final_dark" + }, + "D_ProfileFile.dc.html": { + "x": 2820, + "y": 3620, + "w": 390, + "h": 1100, + "title": "Сервер — добавлен из файла", + "page": "final_dark" + }, + "D_ProfileUpdate.dc.html": { + "x": 940, + "y": 8144, + "w": 390, + "h": 844, + "title": "Обновление профиля: что изменится", + "page": "final_dark" + }, + "D_Protection.dc.html": { + "x": 1410, + "y": 9744, + "w": 390, + "h": 1000, + "title": "DNS и реклама", + "page": "final_dark" + }, + "D_Recent.dc.html": { + "x": 1880, + "y": 1540, + "w": 390, + "h": 1160, + "title": "Недавние приложения", + "page": "final_dark" + }, + "D_RecentEmpty.dc.html": { + "x": 0, + "y": 16088, + "w": 390, + "h": 844, + "title": "Пусто: недавние без разрешения", + "page": "final_dark" + }, + "D_RuleAdd.dc.html": { + "x": 470, + "y": 9744, + "w": 390, + "h": 844, + "title": "Новое правило", + "page": "final_dark" + }, + "D_Rules.dc.html": { + "x": 940, + "y": 1540, + "w": 390, + "h": 900, + "title": "Правила", + "page": "final_dark" + }, + "D_RulesEmpty.dc.html": { + "x": 940, + "y": 16088, + "w": 390, + "h": 844, + "title": "Пусто: правил ещё нет", + "page": "final_dark" + }, + "D_ScenarioAdd.dc.html": { + "x": 2820, + "y": 9744, + "w": 390, + "h": 1000, + "title": "Новый сценарий", + "page": "final_dark" + }, + "D_ScenarioSuggest.dc.html": { + "x": 2820, + "y": 0, + "w": 390, + "h": 844, + "title": "Главная — предложение сценария", + "page": "final_dark" + }, + "D_ServerDelete.dc.html": { + "x": 1410, + "y": 11344, + "w": 390, + "h": 844, + "title": "Удалить сервер", + "page": "final_dark" + }, + "D_Share.dc.html": { + "x": 2350, + "y": 3620, + "w": 390, + "h": 844, + "title": "Поделиться по QR", + "page": "final_dark" + }, + "D_Stats.dc.html": { + "x": 1410, + "y": 0, + "w": 390, + "h": 844, + "title": "Статистика", + "page": "final_dark" + }, + "D_StatsEmpty.dc.html": { + "x": 470, + "y": 16088, + "w": 390, + "h": 844, + "title": "Пусто: статистика в первый день", + "page": "final_dark" + }, + "D_Update.dc.html": { + "x": 940, + "y": 11344, + "w": 390, + "h": 844, + "title": "Обновление приложения", + "page": "final_dark" + }, + "D_UpdateInstall.dc.html": { + "x": 1410, + "y": 12944, + "w": 390, + "h": 844, + "title": "Установка обновления вне Google Play", + "page": "final_dark" + }, + "D_VpnConsent.dc.html": { + "x": 940, + "y": 12944, + "w": 390, + "h": 844, + "title": "Системный запрос VPN", + "page": "final_dark" + }, + "F_HomeOffline.dc.html": { + "x": 0, + "y": 17928, + "w": 390, + "h": 844, + "title": "Главная — нет интернета", + "page": "final" + }, + "F_HomeUnreachable.dc.html": { + "x": 470, + "y": 17928, + "w": 390, + "h": 844, + "title": "Главная — сервер не отвечает", + "page": "final" + }, + "F_Widgets.dc.html": { + "x": 940, + "y": 17928, + "w": 390, + "h": 1000, + "title": "Виджеты на рабочем столе", + "page": "final" + }, + "F_QsTile.dc.html": { + "x": 1410, + "y": 17928, + "w": 390, + "h": 900, + "title": "Плитка в быстрых настройках", + "page": "final" + }, + "D_HomeOffline.dc.html": { + "x": 0, + "y": 17928, + "w": 390, + "h": 844, + "title": "Главная — нет интернета", + "page": "final_dark" + }, + "D_HomeUnreachable.dc.html": { + "x": 470, + "y": 17928, + "w": 390, + "h": 844, + "title": "Главная — сервер не отвечает", + "page": "final_dark" + }, + "D_QsTile.dc.html": { + "x": 1410, + "y": 17928, + "w": 390, + "h": 900, + "title": "Плитка в быстрых настройках", + "page": "final_dark" + }, + "D_Widgets.dc.html": { + "x": 940, + "y": 17928, + "w": 390, + "h": 1000, + "title": "Виджеты на рабочем столе", + "page": "final_dark" + } + }, + "createdOnFiles": { + "at": "2026-10-10T12:00:00Z", + "v": 1 + }, + "designSystems": [], + "launch": { + "page": "overview", + "view": "canvas" + }, + "notes": { + "fA": { + "color": "green", + "kind": "title1", + "maxW": 3210, + "page": "final", + "text": "Финал 2026 · Подключение", + "w": 240, + "x": 0, + "y": -300 + }, + "fB": { + "color": "green", + "kind": "title1", + "maxW": 2270, + "page": "final", + "text": "Финал 2026 · Маршруты", + "w": 240, + "x": 0, + "y": 1240 + }, + "fC": { + "color": "green", + "kind": "title1", + "maxW": 3210, + "page": "final", + "text": "Финал 2026 · Серверы, настройки, система", + "w": 240, + "x": 0, + "y": 3320 + }, + "fD": { + "color": "green", + "kind": "title1", + "maxW": 1280, + "page": "final", + "text": "Финал 2026 · Логотип", + "w": 240, + "x": 0, + "y": 4620 + }, + "oA": { + "color": "purple", + "kind": "title1", + "maxW": 5360, + "page": "overview", + "text": "SHX VPN — новые фичи: всё, что обсудили", + "w": 240, + "x": 0, + "y": -300 + }, + "row1": { + "color": "green", + "kind": "title1", + "maxW": 2740, + "page": "explore", + "text": "ЦЕЛЕВОЙ (ряды 1–3) · Подключение: локации, статистика, диагностика, алерты, настройки", + "w": 240, + "x": 0, + "y": -300 + }, + "row2": { + "kind": "title1", + "maxW": 2270, + "page": "explore", + "text": "Импорт, онбординг, защита, сценарии, шторка", + "w": 240, + "x": 0, + "y": 964 + }, + "row3": { + "kind": "title1", + "maxW": 2740, + "page": "explore", + "text": "Маршрутизация — полный путь", + "w": 240, + "x": 0, + "y": 2228 + }, + "row4": { + "kind": "title1", + "maxW": 1800, + "page": "explore", + "text": "Простой интерфейс — без настроек, от проблемы к решению", + "w": 240, + "x": 0, + "y": 3908 + }, + "row5": { + "kind": "title1", + "maxW": 2740, + "page": "explore", + "text": "Для опытных — стиль One UI / iOS в палитре SHX", + "w": 240, + "x": 0, + "y": 5052 + }, + "target": { + "bold": true, + "fill": "green", + "maxH": 300, + "page": "explore", + "size": 40, + "text": "Целевая основа — ряды 1–3.\nФинальная версия — на странице «Финал 2026».", + "w": 400, + "x": -520, + "y": 0 + }, + "fE": { + "x": 0, + "y": 5944, + "text": "Финал 2026 · Уведомления", + "kind": "title1", + "maxW": 860, + "page": "final", + "color": "green", + "w": 240 + }, + "fF": { + "x": 0, + "y": 7844, + "text": "Финал 2026 · Добавление и обновление сервера", + "kind": "title1", + "maxW": 1330, + "page": "final", + "color": "green", + "w": 240 + }, + "fG": { + "x": 0, + "y": 9444, + "text": "Финал 2026 · Пауза, правила, настройки", + "kind": "title1", + "maxW": 3210, + "page": "final", + "color": "green", + "w": 240 + }, + "fH": { + "x": 0, + "y": 11044, + "text": "Финал 2026 · Журнал, ручной ввод, обновление, оформление", + "kind": "title1", + "maxW": 2740, + "page": "final", + "color": "green", + "w": 240 + }, + "fI": { + "x": 0, + "y": 12644, + "text": "Финал 2026 · Первый запуск и разрешения", + "kind": "title1", + "maxW": 1800, + "page": "final", + "color": "green", + "w": 240 + }, + "fJ": { + "x": 0, + "y": 14344, + "text": "Финал 2026 · Состояния главной и ошибки", + "kind": "title1", + "maxW": 2740, + "page": "final", + "color": "green", + "w": 240 + }, + "fK": { + "x": 0, + "y": 15788, + "text": "Финал 2026 · Пустые экраны, помощь, сертификаты", + "kind": "title1", + "maxW": 2270, + "page": "final", + "color": "green", + "w": 240 + }, + "dfA": { + "color": "purple", + "kind": "title1", + "maxW": 3210, + "page": "final_dark", + "text": "Тёмная тема · Подключение", + "w": 240, + "x": 0, + "y": -300 + }, + "dfB": { + "color": "purple", + "kind": "title1", + "maxW": 2270, + "page": "final_dark", + "text": "Тёмная тема · Маршруты", + "w": 240, + "x": 0, + "y": 1240 + }, + "dfC": { + "color": "purple", + "kind": "title1", + "maxW": 3210, + "page": "final_dark", + "text": "Тёмная тема · Серверы, настройки, система", + "w": 240, + "x": 0, + "y": 3320 + }, + "dfF": { + "x": 0, + "y": 7844, + "text": "Тёмная тема · Добавление и обновление сервера", + "kind": "title1", + "maxW": 1330, + "page": "final_dark", + "color": "purple", + "w": 240 + }, + "dfG": { + "x": 0, + "y": 9444, + "text": "Тёмная тема · Пауза, правила, настройки", + "kind": "title1", + "maxW": 3210, + "page": "final_dark", + "color": "purple", + "w": 240 + }, + "dfH": { + "x": 0, + "y": 11044, + "text": "Тёмная тема · Журнал, ручной ввод, обновление, оформление", + "kind": "title1", + "maxW": 2740, + "page": "final_dark", + "color": "purple", + "w": 240 + }, + "dfI": { + "x": 0, + "y": 12644, + "text": "Тёмная тема · Первый запуск и разрешения", + "kind": "title1", + "maxW": 1800, + "page": "final_dark", + "color": "purple", + "w": 240 + }, + "dfJ": { + "x": 0, + "y": 14344, + "text": "Тёмная тема · Состояния главной и ошибки", + "kind": "title1", + "maxW": 2740, + "page": "final_dark", + "color": "purple", + "w": 240 + }, + "dfK": { + "x": 0, + "y": 15788, + "text": "Тёмная тема · Пустые экраны, помощь, сертификаты", + "kind": "title1", + "maxW": 2270, + "page": "final_dark", + "color": "purple", + "w": 240 + }, + "dfE": { + "x": 0, + "y": 5944, + "text": "Тёмная тема · События (системные — уже тёмные)", + "kind": "title1", + "maxW": 860, + "page": "final_dark", + "color": "purple", + "w": 240 + }, + "fM": { + "x": 0, + "y": 17628, + "text": "Финал 2026 · Сеть, сервер, виджеты и плитка", + "kind": "title1", + "maxW": 1800, + "page": "final", + "color": "green", + "w": 240 + }, + "dfM": { + "x": 0, + "y": 17628, + "text": "Тёмная тема · Сеть, сервер, виджеты и плитка", + "kind": "title1", + "maxW": 1800, + "page": "final_dark", + "color": "purple", + "w": 240 + } + }, + "order": [ + "Main.dc.html", + "Locations.dc.html", + "Stats.dc.html", + "Diagnostics.dc.html", + "MainAlert.dc.html", + "Settings.dc.html", + "Import.dc.html", + "Onboarding.dc.html", + "Protection.dc.html", + "Automation.dc.html", + "Shade.dc.html", + "Routing.dc.html", + "RoutingApps.dc.html", + "RoutingForce.dc.html", + "RoutingPatterns.dc.html", + "RoutingDead.dc.html", + "RouteCheck.dc.html", + "SimpleHome.dc.html", + "SimpleFix.dc.html", + "SimpleProblem.dc.html", + "SimpleSettings.dc.html", + "AdvHub.dc.html", + "AdvRouting.dc.html", + "AdvRules.dc.html", + "AdvApps.dc.html", + "AdvProfile.dc.html", + "AdvDiag.dc.html", + "O_Analysis.dc.html", + "O_Features.dc.html", + "O_Decisions.dc.html", + "F_Home.dc.html", + "F_HomeAlert.dc.html", + "F_Servers.dc.html", + "F_Stats.dc.html", + "F_Diag.dc.html", + "F_Routing.dc.html", + "F_Apps.dc.html", + "F_Rules.dc.html", + "F_Settings.dc.html", + "F_Import.dc.html", + "F_Onboarding.dc.html", + "F_Shade.dc.html", + "Logo.dc.html", + "F_Profile.dc.html", + "F_Share.dc.html", + "F_Check.dc.html", + "F_Recent.dc.html", + "F_Inbox.dc.html", + "F_SysNotifs.dc.html", + "F_ProfileFile.dc.html", + "F_ImportQR.dc.html", + "F_ImportPreview.dc.html", + "F_ProfileUpdate.dc.html", + "F_Pause.dc.html", + "F_RuleAdd.dc.html", + "F_Automation.dc.html", + "F_Protection.dc.html", + "F_KillSwitch.dc.html", + "F_NotifSettings.dc.html", + "F_ScenarioAdd.dc.html", + "F_Log.dc.html", + "F_ManualAdd.dc.html", + "F_Update.dc.html", + "F_ServerDelete.dc.html", + "F_AppPicker.dc.html", + "F_Appearance.dc.html", + "F_HomeScenario.dc.html", + "F_ScenarioSuggest.dc.html", + "F_Permissions.dc.html", + "F_Battery.dc.html", + "F_VpnConsent.dc.html", + "F_UpdateInstall.dc.html", + "F_HomeConnecting.dc.html", + "F_HomePaused.dc.html", + "F_HomeEmpty.dc.html", + "F_ErrImport.dc.html", + "F_ErrAuth.dc.html", + "F_CertExpiry.dc.html", + "F_RecentEmpty.dc.html", + "F_StatsEmpty.dc.html", + "F_RulesEmpty.dc.html", + "F_Help.dc.html", + "F_Certs.dc.html", + "O_Screens.dc.html", + "D_Home.dc.html", + "D_HomeAlert.dc.html", + "D_Servers.dc.html", + "D_Routing.dc.html", + "D_Diag.dc.html", + "D_Settings.dc.html", + "D_AppPicker.dc.html", + "D_Appearance.dc.html", + "D_Apps.dc.html", + "D_Automation.dc.html", + "D_Battery.dc.html", + "D_CertExpiry.dc.html", + "D_Certs.dc.html", + "D_Check.dc.html", + "D_ErrAuth.dc.html", + "D_ErrImport.dc.html", + "D_Help.dc.html", + "D_HomeConnecting.dc.html", + "D_HomeEmpty.dc.html", + "D_HomePaused.dc.html", + "D_HomeScenario.dc.html", + "D_Import.dc.html", + "D_ImportPreview.dc.html", + "D_ImportQR.dc.html", + "D_Inbox.dc.html", + "D_KillSwitch.dc.html", + "D_Log.dc.html", + "D_ManualAdd.dc.html", + "D_NotifSettings.dc.html", + "D_Onboarding.dc.html", + "D_Pause.dc.html", + "D_Permissions.dc.html", + "D_Profile.dc.html", + "D_ProfileFile.dc.html", + "D_ProfileUpdate.dc.html", + "D_Protection.dc.html", + "D_Recent.dc.html", + "D_RecentEmpty.dc.html", + "D_RuleAdd.dc.html", + "D_Rules.dc.html", + "D_RulesEmpty.dc.html", + "D_ScenarioAdd.dc.html", + "D_ScenarioSuggest.dc.html", + "D_ServerDelete.dc.html", + "D_Share.dc.html", + "D_Stats.dc.html", + "D_StatsEmpty.dc.html", + "D_Update.dc.html", + "D_UpdateInstall.dc.html", + "D_VpnConsent.dc.html", + "F_HomeOffline.dc.html", + "F_HomeUnreachable.dc.html", + "F_Widgets.dc.html", + "F_QsTile.dc.html", + "D_HomeOffline.dc.html", + "D_HomeUnreachable.dc.html", + "D_QsTile.dc.html", + "D_Widgets.dc.html" + ], + "pages": [ + { + "id": "overview", + "name": "Обзор" + }, + { + "id": "final", + "name": "Финал 2026" + }, + { + "id": "final_dark", + "name": "Финал 2026 · тёмная" + }, + { + "id": "explore", + "name": "Исследование" + } + ], + "title": "SHX VPN — новые фичи" +} \ No newline at end of file diff --git a/src/frontends/android/docs/ui-ux-plan.md b/src/frontends/android/docs/ui-ux-plan.md index 66047caa1..f63cb53bf 100644 --- a/src/frontends/android/docs/ui-ux-plan.md +++ b/src/frontends/android/docs/ui-ux-plan.md @@ -1,3 +1,5 @@ +> **Архив.** План 2026-09 и статус редизайна 2.15. Текущий дизайн — макет «Финал 2026» ([design/README.md](design/README.md)), описание приложения — [README.md](README.md). + # План доработки UI/UX — Material 3 Expressive > Утверждён 2026-09-19. Всё сверено через Context7 (`/websites/developer_android_reference_kotlin_androidx_compose_material3`,