feat(gui): add GUI (Test) implementation with documentation and admin support
- Add GUI (Test) module with Fyne-based interface (internal/gui/gui.go, internal/gui/server.go) - Add CLI monitoring capability (internal/cli/monitor.go) - Add main_cli.go entry point for CLI-only builds - Add comprehensive documentation suite covering setup, build, quick start, and changelog - Add admin manifest (admin.manifest) for Windows UAC elevation support - Add rsrc.syso.json configuration for resource embedding - Update .gitignore to exclude build scripts (*.bat, *.sh) - Update main.go and cli.go to support dual GUI (Test)/CLI modes - Update README.md with new project information - Enables users to build and run both GUI (Test)and CLI versions with proper admin privileges on Windows
This commit is contained in:
185
Markdown/CHANGELOG_GUI.md
Normal file
185
Markdown/CHANGELOG_GUI.md
Normal file
@@ -0,0 +1,185 @@
|
||||
# Changelog - GUI Version
|
||||
|
||||
## [2.0.0] - 2026-04-05
|
||||
|
||||
### Добавлено
|
||||
- ✨ Современный графический интерфейс (GUI) на базе Fyne
|
||||
- 🎨 Material Design стиль интерфейса
|
||||
- 📊 Панель статуса в реальном времени с индикатором подключения
|
||||
- ⏱️ Отображение времени подключения
|
||||
- 📈 Статистика трафика для WireGuard (прием/передача)
|
||||
- 🔄 Автоматическое обновление статуса каждые 2 секунды
|
||||
- 🎯 Три вкладки: WireGuard, VLESS, Подписки
|
||||
- 🧪 Тестирование серверов с визуальным прогрессом
|
||||
- 📋 Просмотр конфигураций из подписок
|
||||
- 🔍 Массовое тестирование серверов из подписки
|
||||
- 💾 Добавление WireGuard конфигов из файла
|
||||
- 🎨 Кастомная цветовая тема
|
||||
- ⚡ Асинхронные операции с индикаторами прогресса
|
||||
- 🔔 Диалоговые окна для подтверждения действий
|
||||
- 📱 Адаптивный интерфейс
|
||||
|
||||
### Изменено
|
||||
- 🔧 main.go теперь поддерживает два режима: GUI (по умолчанию) и CLI (--cli флаг)
|
||||
- 📦 Обновлены зависимости в go.mod (добавлен Fyne v2.4.5)
|
||||
- 📝 Обновлен README.md с инструкциями по GUI
|
||||
- 🛠️ Новые скрипты сборки: build_gui.bat, build_gui.sh
|
||||
- 🔧 Новые скрипты инициализации: init_gui.bat, init_gui.sh
|
||||
|
||||
### Сохранено
|
||||
- ✅ Весь функционал CLI версии
|
||||
- ✅ Поддержка WireGuard
|
||||
- ✅ Поддержка VLESS через Xray
|
||||
- ✅ Управление подписками
|
||||
- ✅ Тестирование серверов
|
||||
- ✅ Детальное логирование
|
||||
- ✅ Кроссплатформенность
|
||||
|
||||
### Технические детали
|
||||
|
||||
#### Новые файлы
|
||||
- `internal/gui/gui.go` - основной модуль GUI (1000+ строк)
|
||||
- `build_gui.bat` - скрипт сборки для Windows
|
||||
- `build_gui.sh` - скрипт сборки для Linux/macOS
|
||||
- `init_gui.bat` - инициализация зависимостей для Windows
|
||||
- `init_gui.sh` - инициализация зависимостей для Linux/macOS
|
||||
- `GUI_GUIDE.md` - подробное руководство пользователя GUI
|
||||
|
||||
#### Архитектура GUI
|
||||
|
||||
**Структура интерфейса:**
|
||||
```
|
||||
MainWindow
|
||||
├── Header (Title + Status)
|
||||
│ ├── StatusIcon (Circle indicator)
|
||||
│ ├── StatusLabel
|
||||
│ └── ConnectionInfo
|
||||
├── Tabs
|
||||
│ ├── WireGuard Tab
|
||||
│ │ ├── Config List
|
||||
│ │ └── Action Buttons
|
||||
│ ├── VLESS Tab
|
||||
│ │ ├── Config List
|
||||
│ │ └── Action Buttons
|
||||
│ └── Subscriptions Tab
|
||||
│ ├── Subscription List
|
||||
│ └── Action Buttons
|
||||
└── Footer
|
||||
└── Disconnect Button
|
||||
```
|
||||
|
||||
**Основные компоненты:**
|
||||
|
||||
1. **GUI struct**
|
||||
- app: fyne.App
|
||||
- window: fyne.Window
|
||||
- statusLabel: динамический статус
|
||||
- statusIcon: индикатор подключения
|
||||
- connectionInfo: детальная информация
|
||||
- statusTimer: таймер обновления
|
||||
|
||||
2. **Функции WireGuard**
|
||||
- connectWireGuard()
|
||||
- addWireGuardManual()
|
||||
- addWireGuardFromFile()
|
||||
- deleteWireGuard()
|
||||
|
||||
3. **Функции VLESS**
|
||||
- connectVLESS()
|
||||
- addVLESS()
|
||||
- testVLESS()
|
||||
- deleteVLESS()
|
||||
|
||||
4. **Функции подписок**
|
||||
- addSubscription()
|
||||
- updateSubscription()
|
||||
- showSubscriptionConfigs()
|
||||
- testSubscriptionConfigs()
|
||||
- deleteSubscription()
|
||||
|
||||
5. **Утилиты**
|
||||
- updateStatus() - обновление статуса
|
||||
- disconnect() - отключение VPN
|
||||
- makeCard() - создание карточек UI
|
||||
- customTheme - кастомная тема
|
||||
|
||||
#### Особенности реализации
|
||||
|
||||
**Асинхронность:**
|
||||
- Все длительные операции выполняются в горутинах
|
||||
- Используются dialog.NewProgressInfinite для индикации
|
||||
- UI остается отзывчивым во время операций
|
||||
|
||||
**Обновление статуса:**
|
||||
- Автоматическое обновление каждые 2 секунды
|
||||
- Изменение цвета индикатора (серый/зеленый)
|
||||
- Отображение времени подключения в формате HH:MM:SS
|
||||
- Статистика трафика для WireGuard
|
||||
|
||||
**Тестирование серверов:**
|
||||
- Визуальный прогресс-бар
|
||||
- Отображение текущего тестируемого сервера
|
||||
- Сортировка результатов по пингу
|
||||
- Топ-10 лучших серверов
|
||||
|
||||
**Диалоги:**
|
||||
- Подтверждение удаления
|
||||
- Формы ввода данных
|
||||
- Информационные сообщения
|
||||
- Ошибки с детальным описанием
|
||||
|
||||
#### Зависимости
|
||||
|
||||
**Новые:**
|
||||
- fyne.io/fyne/v2 v2.4.5 - GUI фреймворк
|
||||
- Множество транзитивных зависимостей Fyne
|
||||
|
||||
**Существующие:**
|
||||
- github.com/fatih/color v1.16.0 - для CLI
|
||||
- golang.org/x/sys v0.16.0 - системные вызовы
|
||||
|
||||
#### Сборка
|
||||
|
||||
**Windows:**
|
||||
```bash
|
||||
go build -ldflags="-s -w -H windowsgui" -o vpn-client-gui.exe main.go
|
||||
```
|
||||
- `-s -w` - уменьшение размера
|
||||
- `-H windowsgui` - скрытие консоли
|
||||
|
||||
**Linux/macOS:**
|
||||
```bash
|
||||
go build -ldflags="-s -w" -o vpn-client-gui main.go
|
||||
```
|
||||
|
||||
#### Размер приложения
|
||||
|
||||
- Исполняемый файл: ~25-30 MB (с GUI)
|
||||
- CLI версия: ~10-15 MB
|
||||
- Потребление RAM: 50-100 MB (GUI), 20-30 MB (CLI)
|
||||
|
||||
### Совместимость
|
||||
|
||||
- ✅ Windows 10/11
|
||||
- ✅ Linux (Ubuntu, Debian, Fedora, Arch и др.)
|
||||
- ✅ macOS 10.13+
|
||||
- ✅ Обратная совместимость с CLI режимом
|
||||
|
||||
### Известные ограничения
|
||||
|
||||
- GUI требует графическую среду (X11/Wayland/Windows)
|
||||
- Для серверов рекомендуется использовать CLI режим
|
||||
- WireGuard на Windows требует установки официального клиента
|
||||
|
||||
### Планы на будущее
|
||||
|
||||
- [ ] Темная тема
|
||||
- [ ] Системный трей
|
||||
- [ ] Автозапуск при старте системы
|
||||
- [ ] Экспорт/импорт конфигураций
|
||||
- [ ] Графики статистики трафика
|
||||
- [ ] Уведомления о событиях
|
||||
- [ ] Мультиязычность
|
||||
- [ ] Автоматическая настройка системного прокси
|
||||
- [ ] Профили подключений
|
||||
- [ ] История подключений
|
||||
Reference in New Issue
Block a user