Files
Go-VPN-Client/Markdown/CHANGELOG_GUI.md
arkonsadter e0a5f0f746 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
2026-04-06 18:57:58 +06:00

7.1 KiB
Raw Blame History

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:

go build -ldflags="-s -w -H windowsgui" -o vpn-client-gui.exe main.go
  • -s -w - уменьшение размера
  • -H windowsgui - скрытие консоли

Linux/macOS:

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 требует установки официального клиента

Планы на будущее

  • Темная тема
  • Системный трей
  • Автозапуск при старте системы
  • Экспорт/импорт конфигураций
  • Графики статистики трафика
  • Уведомления о событиях
  • Мультиязычность
  • Автоматическая настройка системного прокси
  • Профили подключений
  • История подключений