feat(tui): add safe client and backup workflows

This commit is contained in:
2026-10-14 22:49:31 +03:00
parent 8b40b8cd65
commit 06c7171e91
5 changed files with 925 additions and 46 deletions
+12 -6
View File
@@ -50,7 +50,8 @@ not inspect or modify host WireGuard state.
## M4 client creation
`add NAME` creates a client transactionally. The optional forms are
`--mode full-tunnel|split-tunnel` and `--endpoint HOST`; unknown or extra
`--mode full-tunnel|split-tunnel`, optional `--split-networks CIDRS` for
split-tunnel, and `--endpoint HOST`; unknown or extra
arguments are rejected. Names are restricted to ASCII letters, digits, `.`,
`_`, and `-` (without a leading `-`). Root is required for production use;
tests enable only an isolated `WG_MANAGER_TEST_MODE` under `TEST_ROOT`.
@@ -84,17 +85,22 @@ for an operational read/export/QR failure. `config NAME --show` is the only
inspection form that writes the complete client configuration to stdout;
ordinary `show`, `config`, and `qr` output remains secret-safe.
## M9 TUI
## M9–M10 TUI
Запуск без аргументов или командой `tui` открывает read-only интерфейс `gum` в
Запуск без аргументов или командой `tui` открывает интерфейс `gum` в
терминале. `gum` разрешается в порядке `WG_MANAGER_GUM`, локального `bin/gum`,
затем `PATH`; необходимые подкоманды проверяются до вывода интерфейса. Нужны
одновременно интерактивные stdin и stdout. Escape и отмена возвращают на
предыдущий экран или завершают меню без изменений. Доступны status, clients/show,
diagnose, log и backups; add/remove в M9 являются placeholder-действиями и не
выполняют мутаций. CLI работает независимо от `gum`; отсутствие или неполная
diagnose, log и backups. В M10 также доступны add/remove, создание backup и
restore через те же backend-функции, что и CLI; подтверждение и отмена остаются
обязательными для мутаций, а критический rollback завершает TUI с ненулевым кодом.
Для клиента сначала показываются безопасные детали; конфигурация и QR требуют
отдельного явного действия, при отсутствии `qrencode` показывается понятный
fallback. CLI работает независимо от `gum`; отсутствие или неполная
возможность `gum` даёт код `69` только для TUI, а неинтерактивный запуск TUI —
код `64`.
код `64`. Восстановление требует ввода полного идентификатора выбранной копии;
несовпадение или отмена не изменяют состояние.
## M6 удаление клиента