docs: ui plan status - deferred items completed

This commit is contained in:
Denozordec committed 2026-10-10 00:33:20 +07:00
1 parent dc6e1e32fb
commit 8ef7c0a53b
1 file changed
+4 -3
+4 -3
View File
@@ -139,9 +139,10 @@
- **Тема (этап 1) ✅:** `MaterialExpressiveTheme` + `MotionScheme.expressive()`, тональная палитра с `surfaceContainer*`, токены `ShxSpacing`/`ShxShapes`, выбор темы системная/светлая/тёмная (`ShxThemeSettings.themeMode`), сплэш/окно/системные панели совпадают с Compose-поверхностью (`shx_*` в `colors.xml`).
- **Компоненты ✅:** `ShxSectionCard`, `ShxListRow`, `ShxStatusPill`/`ShxConnectedPill`, `ShxEmptyState`, `ShxSnackbarHost`; переходы между вкладками — fade-through на motion scheme, «назад» с любой вкладки ведёт на «Подключение», `LoadingIndicator`/`LinearWavyProgressIndicator`, Snackbar вместо Toast в `ShxApp`, Настройках, форме профиля; хаптика подключения/отключения.
- **«Подключение» ✅:** hero-кнопка с морфингом формы (круг → cookie), чип профиля с exit-IP + выбор профиля в bottom sheet (дублирующий список профилей убран), плитки трафика, один слот баннера (ошибка приоритетнее белого списка), «Доступность» свёрнута в сводку. Файл разбит на `home/*`. На ширине ≥ 840dp две колонки.
- **«Профили» ✅:** свайп-удаление с Undo, поиск только при > 5 профилей. List-detail **не сделан** (форма профиля остаётся отдельной Activity).
- **«Профили» ✅:** свайп-удаление с Undo, поиск только при > 5 профилей. На ширине ≥ 840dp — list-detail (`ListDetailPaneScaffold`), форма профиля в detail-панели (`ProfileEditorPane`); на телефоне форма остаётся отдельной Activity.
- **«Маршрутизация» ✅:** режим/GeoIP/force-префиксы в блоке «Дополнительно»; строка про kill switch и исключённые приложения (исключённые идут мимо VPN, lockdown их не блокирует: они в `addDisallowedApplication`). Разбито на `routing/*`.
- **«Настройки» ✅:** корень (быстрые: kill switch, автоподключение) + 5 страниц (оформление, автоматизация, безопасность, обновления, поддержка), ширина ≤ 640dp.
- **Системные поверхности:** виджет Glance 2×1 (`ui/widget/ShxWidget.kt`, состояние публикует `VpnStateService`, кнопка идёт через `VpnProfileControlActivity`, как плитка); плитка QS показывает профиль в subtitle. `ProgressStyle` для загрузки обновления и категория плитки connectivity — **не сделаны**.
- **Системные поверхности:** виджет Glance 2×1 (`ui/widget/ShxWidget.kt`, состояние публикует `VpnStateService`, кнопка идёт через `VpnProfileControlActivity`, как плитка); плитка QS показывает профиль в subtitle, категория `CATEGORY_CONNECTIVITY`, toggleable. Загрузка обновления — уведомление `Notification.ProgressStyle` + Live Update на API 36+ (`POST_PROMOTED_NOTIFICATIONS` — обычное разрешение, без запроса), на старых версиях обычный прогресс-бар.
- **Доступность/тексты:** `heading()` у заголовков секций, `toggleable(role = Switch)` у строк-переключателей, liveRegion у статуса подключения, недостающие строки `values-de`.
- **Не сделано (вторичные экраны):** ImportScreen как bottom sheet, фильтр уровней и моноширинный шрифт в журнале, поиск по приложениям, карточка разрешения геолокации в «Доверенных сетях». Toast остался в `LogActivity`, `VpnProfileControlActivity`, `UpdateInstallStatusReceiver` (вне Compose-хоста).
- **Вторичные экраны ✅:** импорт профиля — Expressive bottom sheet в прозрачной Activity; журнал — чипы фильтра уровней (Все/Предупреждения/Ошибки) + Snackbar; выбор приложений — поиск (был), скрытие системных приложений с переключателем; «Доверенные сети» — встроенная карточка с объяснением, зачем нужна геолокация (запрос разрешения только по кнопке); проверка маршрута — карточки с `ShxStatusPill`. Predictive back: `PredictiveBackScale` для страниц настроек и деталей инструкции; `ModalBottomSheet` (редактор наборов, импорт) использует встроенный predictive back.
- **Toast оставлен** только там, где нет Compose-поверхности, которая переживёт `finish()`: `UpdateInstallStatusReceiver` (ресивер), `VpnProfileControlActivity`, `VpnProfileImportActivity`, `TrustedCertificateImportActivity` (прозрачные Activity, закрываются сразу после показа результата).