CI (.gitea/workflows/ci.yaml):
- go 1.23 -> 1.25 (modernc.org/sqlite v1.56.0 требует go 1.25; старый CI падал
на сборке ещё до тестов).
- CGO_ENABLED=0 на уровне workflow: CI собирает/тестирует только headless
(ui_noui), не тянет Fyne/glfw и C-компилятор.
- timeout 120s -> 300s (worker один ~30-60s на быстрой машине).
- build-and-package: только linux/amd64 (headless). Windows-бинарь с UI — локально.
Локальная сборка UI + публикация:
- scripts/build-publish-ui.ps1: собирает ratatoskr-windows-amd64.exe (CGO_ENABLED=1,
WinLibs gcc), вшивает commit-<sha7> + updateToken, пишет .version/.sha256 и
публикует в Gitea Packages в ту же версию, что и CI; самопроверка (U4).
- scripts/.gitea-creds.example + .gitignore (scripts/.gitea-creds) — секреты не
попадают в репозиторий.
README: CI=headless + публикация Windows-UI локальным скриптом; обновлён intro
(бинарь по умолчанию headless, окно — опционально с cgo).
Gitea: при параллельных PUT матрицы (6 платформ) псевдо-версия 'latest'
переуказывается на каждый снимок, companion-файлы и бинарь разъезжаются
между версиями — checksum U4 ломался.
- CI: публикует бинарь+.version+.sha256 в (commit-<sha7>), latest не используется
- Updater.ResolveLatest: новейшая commit-* версия из листинга /api/v1/packages/{owner}/generic/{package},
берём макс id у которой есть бинарь текущей платформы
- Download/Verify/checksum читают ТУ ЖЕ version, а не latest
- Убран update.owner из конфига, ldflag -X main.updateOwner, vars.TC_GITEA_OWNER и UPDATE_OWNER в Make.
- Владелец пакета = packageOwner (kamelion), совпадает с владельцем репо и создателем токена.
- app.New снова с 3 аргументами; тесты обновлены.
- -X main.updateOwner (из vars.TC_GITEA_OWNER / Make UPDATE_OWNER), фоллбэк на update.owner в конфиге.
- update.owner больше не обязателен: гейты в startAutoCheck и handleUpdateCmd требуют только update.base_url.
- Обновлены main, app.New (сигнатура), CI, Makefile, тесты.
- update.base_url (env UPDATE_BASE_URL) — хост обновления, БЕЗ фоллбэка на git.base_url: пустое значение отключает update.
- Убран git.token из пути обновления: теперь отдельный токен.
- Токен read:package вшивается при сборке (-X main.updateToken из секрета TC_UPDATE_TOKEN), приоритет над update.token из конфига.
- Обновлены app.New (сигнатура), main, Makefile, CI, config.example, тесты.