- go build: -ldflags со пробелами передавались одним токеном и падали
("invalid value $ldflags for flag -ldflags"). Вместо этого собираем
массив $goArgs и вызываем go через splatting - каждый аргумент отдельным
токеном.
- Файл перекодирован в UTF-8 с BOM: PowerShell 5.1 без BOM читал .ps1 как
ANSI (cp1251) и ломал парсинг кириллических строк.
- .gitignore: игнорировать companion-файлы публикации
(ratatoskr-*.sha256 / ratatoskr-*.version).
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).