hermes-hub/installer
ochenstarik-ui fc4707d9d9 fix(linux): значок .desktop-записи не рендерился; хаб нельзя было остановить
Найдено и проверено живым прогоном на этой машине (реальный GTK-рабочий
стол, реальные профили agy) — не по чтению кода.

1. Значок .desktop-записи был .ico. Измерено:
   GdkPixbuf.Pixbuf.new_from_file на HermesHub.ico падает с "Compressed
   icons are not supported". .desktop-файл с нерендерящейся иконкой меню
   приложений и файловый менеджер просто показывают пустым — без ошибки,
   молча. PNG в тех же ассетах уже был и загружается (проверено: 256x256).
   Подставлен app_icon_256.png.

2. Хаб нельзя было остановить иначе как из терминала. На Windows сервер
   стартует из HermesHubWeb.exe, который держит значок в системном трее —
   оттуда «Exit» останавливает процесс. На Linux сервер остаётся в фоне
   после закрытия окна браузера (так и задумано — не переустанавливать
   каждый раз), но ни кнопки в интерфейсе (её нет ни на одной платформе),
   ни трея, ни пункта меню не было вовсе. launcher/hermes-hub-stop.sh —
   недостающий эквивалент «Exit из трея»: доступен из меню приложений
   через собственный .desktop-пункт, использует ту же функцию, что и
   install/uninstall. Проверено живым прогоном: сервер запущен, остановлен
   через новый лаунчер, curl после этого получает connection refused.

3. uninstall-linux.sh не останавливал работающий хаб перед удалением файлов
   — та же причина, что install уже чинил для установки: с
   --purge-user-data это ещё и rm -rf каталогов, на которые у живого
   процесса открыты файловые дескрипторы. Измерено: сервер, запущенный в
   песочнице, оставался в списке процессов после uninstall-linux.sh до этой
   правки. Добавлена та же остановка, тем же кодом.

4. stop_running_hub была вписана отдельно в install-linux.sh и
   uninstall-linux.sh — две копии, которые разошлись бы при правке одной
   незамеченной для другой. Вынесена в installer/lib_stop_running_hub.sh,
   источается обоими скриптами и новым лаунчером остановки.

Всё проверено дважды: прямым запуском install-linux.sh/uninstall-linux.sh
в изолированной песочнице (не ~/.hermes) и через собранный
dist/hermes-hub-setup.sh — тот самый файл, который уходит в релиз.

Тесты: 738 -> 740 passed, 2 skipped, 4 deselected. Новый тест на .ico падает
на прежней версии install-linux.sh (проверено git stash) и проходит после
фикса. ruff check . чисто.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-03 22:02:43 +07:00
..
build_installer.ps1 fix: проверка готовности всегда врала, установщик показывал зашитую версию 2026-08-24 09:47:00 +07:00
build_installer_linux.sh fix(installer): нормализация переводов строк молча зависела от нерабочего python3 2026-08-31 01:54:12 +07:00
HermesHubSetup.cs fix(antigravity): вход через терминал не регистрировал аккаунт 2026-09-02 02:05:08 +07:00
HermesHubSetup.py feat(hub): A34 восстановление подключения аккаунтов, OpenRouter, NVIDIA, удаление десктопа 2026-08-31 00:23:27 +07:00
install-linux.sh fix(linux): значок .desktop-записи не рендерился; хаб нельзя было остановить 2026-09-03 22:02:43 +07:00
lib_stop_running_hub.sh fix(linux): значок .desktop-записи не рендерился; хаб нельзя было остановить 2026-09-03 22:02:43 +07:00
README.md feat: production update feed architecture, host allowlist, and truthful release gate 2026-08-20 17:25:30 +07:00
uninstall-linux.sh fix(linux): значок .desktop-записи не рендерился; хаб нельзя было остановить 2026-09-03 22:02:43 +07:00

Hermes Hub — Installer Architecture

Canonical Windows Installer

  • Canonical Binary: HermesHubSetup.exe (built from HermesHubSetup.cs)
  • Build Script: build_installer.ps1 (compiles HermesHubSetup.cs using standard .NET Framework csc.exe present on all Windows 10/11 machines without extra toolchains).

Development & Helper Scripts

  • HermesHubSetup.py: Internal development helper script for testing installer logic in Python. Not distributed as a primary installer artifact.
  • install.ps1: Deprecated legacy bootstrap script for earlier development environments.

Testing Policy (S7)

  • Unit Tests: Must NEVER modify user Windows Registry (HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall) or Start Menu shortcuts.
  • Integration Tests: Executed against isolated sandbox mock directories.
  • Live VM Tests: Real Windows installer execution is reserved for disposable CI/VM environments.