Skip to content

Трей, состояние прокси и рефакторинг модулей#449

Open
deexsed wants to merge 5 commits intoFlowseal:mainfrom
deexsed:refactor/dry_in_tray
Open

Трей, состояние прокси и рефакторинг модулей#449
deexsed wants to merge 5 commits intoFlowseal:mainfrom
deexsed:refactor/dry_in_tray

Conversation

@deexsed
Copy link
Copy Markdown
Contributor

@deexsed deexsed commented Mar 27, 2026

Кратко

Вынос общей логики трея в utils/ и ui/, добавление отображения состояния прокси (иконка с бейджем, диагностика TCP, lock второго экземпляра) и секцию статуса в окне настроек с обновлением README.

Детально

  • Общая логика трея (пути, lock, конфиг, прокси, IPv6, обновления) вынесена в utils/tray_* и ui/tray_*; точки входа windows.py / linux.py / macos.py упрощены.
  • Добавлены .editorconfig и .gitattributes (в т.ч. нормализация окончаний строк).
  • В README кратко описана структура исходников.
  • ProxyRuntimeState и tray_diagnostics: фазы работы прокси, форматирование отчёта по TCP; в tg_ws_proxy — колбэк on_listening.
  • Иконка трея: цветной бейдж (зелёный — слушает, красный — ошибка, жёлтый — прочие состояния); подсказка к иконке с краткой легендой.
  • Меню: один пункт «Статус и проверка TCP…»; проверка порта до запуска; WinError 10013 трактуется как конфликт порта.
  • SingleInstanceLock: не снимать lock, если PID в lock-файле всё ещё жив; более устойчивое сопоставление «своего» процесса.
  • Windows: диалоги MessageBox с родительским HWND трея и флагами SYSTEMMODAL / SETFOREGROUND (корректный фокус и модальность).
  • Обновления: last_check_at, подписи в офлайне; при verbose обновления логируются в INFO.
  • Первый запуск: подсказки по типичным проблемам; macOS: PNG с бейджем для rumps.
  • В форме настроек (CustomTkinter) добавлена секция «Статус»: индикатор фазы, текст состояния и uptime при прослушивании, периодическое обновление.
  • ctk_theme: цвета для «таблетки» статуса (status_pill_bg, status_pill_border).
  • tray_proxy_state / tray_icons: упрощение подсказок и отображения (без лишней второй строки легенды в tooltip там, где это убрано в пользу минимального UI).
  • README и точки входа (windows / linux) синхронизированы с новым поведением.

Важно

Изменения были протестированы только на windows, перед мерджем обязательно протестировать на linux, macos так как изменения глобально влияют на подход к работе программы

Часть кода была написана с использованием ИИ

deexsed and others added 5 commits March 27, 2026 13:35
Вынесена общая логика tray (пути, lock, конфиг, прокси, IPv6, обновления) в utils/tray_* и ui/tray_*; точки входа windows/linux/macos упрощены.

Добавлены .editorconfig и .gitattributes; в README кратко описана структура исходников.
Добавлены ProxyRuntimeState и tray_diagnostics; колбэк on_listening в tg_ws_proxy.

Иконка: цветной бейдж (зелёный слушает / красный ошибка / жёлтый прочее), легенда в tooltip.

Один пункт меню «Статус и проверка TCP»; проверка порта до запуска; WinError 10013 как конфликт порта.

SingleInstanceLock: не снимать lock с живым PID; устойчивее определение своего процесса.

Windows: MessageBox с родительским HWND трея и SYSTEMMODAL.

Обновления: last_check_at; подписи для офлайна; verbose — update в INFO.

Первый запуск: подсказки по типичным проблемам; macOS — PNG с бейджем для rumps.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants