[PR #1341] [CLOSED] feat(macos): add native updates and desktop integration #118

Closed
opened 2026-09-14 05:20:37 +03:00 by mirror-bot · 0 comments

📋 Pull Request Information

Original PR: https://github.com/Flowseal/tg-ws-proxy/pull/1341
Author: @f4rceful
Created: 9/13/2026
Status: ❌ Closed

Base: main ← Head: feat/macos-desktop-parity


📝 Commits (3)

  • baf58b6 feat(macos): add native updates and desktop integration
  • 4c170b9 Style macOS update progress window
  • 59384f3 Remove redundant macOS touchpad scroll handler

📊 Changes

14 files changed (+616 additions, -47 deletions)

View changed files

📝 docs/EN/README.macos.md (+16 -0)
📝 docs/EN/TrayConfig.md (+3 -2)
📝 docs/RU/README.macos.md (+16 -0)
📝 docs/RU/TrayConfig.md (+3 -2)
📝 macos.py (+169 -37)
📝 packaging/macos.spec (+3 -2)
📝 pyproject.toml (+1 -0)
➕ tests/test_macos_integration.py (+140 -0)
📝 tests/test_update_check.py (+29 -0)
📝 ui/ctk_tray_ui.py (+3 -2)
📝 ui/i18n/en.json (+7 -1)
📝 ui/i18n/ru.json (+7 -1)
➕ utils/macos_integration.py (+210 -0)
📝 utils/tray_common.py (+9 -0)

📄 Description

Проблема

Версия для macOS отстаёт от Windows по нескольким пользовательским функциям: в ней нет настройки автозапуска, уведомление об обновлении только открывает страницу релизов, в настройках отсутствует действие для установки обновления. Кроме того, в верхней панели используется старая синяя иконка вместо адаптивной системной.

Что изменено

  • Добавлен автозапуск при входе в macOS через пользовательский LaunchAgent в ~/Library/LaunchAgents. Управлять им можно из настроек приложения.
  • Кнопка обновления добавлена в настройки и меню верхней панели. Она появляется при наличии более новой версии, а стартовое уведомление открывает тот же диалог установки.
  • Реализована установка официального обновления для macOS: приложение скачивает DMG, проверяет SHA-256 из релиза GitHub, монтирует образ только для чтения, проверяет идентификатор приложения, исполняемый файл и подпись, после чего подготавливает замену и перезапускает приложение.
  • Предыдущая версия .app сохраняется для восстановления. Если новую версию не удаётся установить или запустить, установщик возвращает старую. При следующем запуске удаляются устаревшие резервные папки, а последняя копия сохраняется.
  • Иконка приложения для macOS теперь использует тот же логотип, что и Windows. Для верхней панели используется уменьшенная адаптивная иконка: круг с прозрачной буквой T, который автоматически меняет цвет вместе с оформлением macOS.
  • Добавлены русские и английские строки интерфейса, обновлены существующие инструкции для macOS и описание конфигурации Tray.

Обновление внутри приложения доступно только для собранной .app, установленной в постоянную папку с правом записи. При запуске из исходников открывается страница релиза. Обновление из смонтированного DMG или временного пути App Translocation блокируется с понятным сообщением об ошибке.

Официальный релиз не устанавливался поверх разрабатываемой сборки, поскольку текущая опубликованная версия ещё не содержит этих изменений. Процесс замены приложения проверялся на отдельной временной .app и локальном DMG.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/Flowseal/tg-ws-proxy/pull/1341 **Author:** [@f4rceful](https://github.com/f4rceful) **Created:** 9/13/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `feat/macos-desktop-parity` --- ### 📝 Commits (3) - [`baf58b6`](https://github.com/Flowseal/tg-ws-proxy/commit/baf58b6b11b22a77eb590e569381a9bc48d72287) feat(macos): add native updates and desktop integration - [`4c170b9`](https://github.com/Flowseal/tg-ws-proxy/commit/4c170b9e643a46f82c827ddf074fb929dd788ebb) Style macOS update progress window - [`59384f3`](https://github.com/Flowseal/tg-ws-proxy/commit/59384f3a3694ea5bf78bb94b5a9211c65badbd1c) Remove redundant macOS touchpad scroll handler ### 📊 Changes **14 files changed** (+616 additions, -47 deletions) <details> <summary>View changed files</summary> 📝 `docs/EN/README.macos.md` (+16 -0) 📝 `docs/EN/TrayConfig.md` (+3 -2) 📝 `docs/RU/README.macos.md` (+16 -0) 📝 `docs/RU/TrayConfig.md` (+3 -2) 📝 `macos.py` (+169 -37) 📝 `packaging/macos.spec` (+3 -2) 📝 `pyproject.toml` (+1 -0) ➕ `tests/test_macos_integration.py` (+140 -0) 📝 `tests/test_update_check.py` (+29 -0) 📝 `ui/ctk_tray_ui.py` (+3 -2) 📝 `ui/i18n/en.json` (+7 -1) 📝 `ui/i18n/ru.json` (+7 -1) ➕ `utils/macos_integration.py` (+210 -0) 📝 `utils/tray_common.py` (+9 -0) </details> ### 📄 Description ## Проблема Версия для macOS отстаёт от Windows по нескольким пользовательским функциям: в ней нет настройки автозапуска, уведомление об обновлении только открывает страницу релизов, в настройках отсутствует действие для установки обновления. Кроме того, в верхней панели используется старая синяя иконка вместо адаптивной системной. ## Что изменено - Добавлен автозапуск при входе в macOS через пользовательский `LaunchAgent` в `~/Library/LaunchAgents`. Управлять им можно из настроек приложения. - Кнопка обновления добавлена в настройки и меню верхней панели. Она появляется при наличии более новой версии, а стартовое уведомление открывает тот же диалог установки. - Реализована установка официального обновления для macOS: приложение скачивает DMG, проверяет SHA-256 из релиза GitHub, монтирует образ только для чтения, проверяет идентификатор приложения, исполняемый файл и подпись, после чего подготавливает замену и перезапускает приложение. - Предыдущая версия `.app` сохраняется для восстановления. Если новую версию не удаётся установить или запустить, установщик возвращает старую. При следующем запуске удаляются устаревшие резервные папки, а последняя копия сохраняется. - Иконка приложения для macOS теперь использует тот же логотип, что и Windows. Для верхней панели используется уменьшенная адаптивная иконка: круг с прозрачной буквой `T`, который автоматически меняет цвет вместе с оформлением macOS. - Добавлены русские и английские строки интерфейса, обновлены существующие инструкции для macOS и описание конфигурации Tray. Обновление внутри приложения доступно только для собранной `.app`, установленной в постоянную папку с правом записи. При запуске из исходников открывается страница релиза. Обновление из смонтированного DMG или временного пути App Translocation блокируется с понятным сообщением об ошибке. Официальный релиз не устанавливался поверх разрабатываемой сборки, поскольку текущая опубликованная версия ещё не содержит этих изменений. Процесс замены приложения проверялся на отдельной временной `.app` и локальном DMG. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
mirror-bot added the pull-request label 2026-09-14 05:20:37 +03:00
mirror-bot changed title from [PR #1341] feat(macos): add native updates and desktop integration to [PR #1341] [CLOSED] feat(macos): add native updates and desktop integration 2026-10-05 00:00:19 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Utilities/tg-ws-proxy#118