Release Notes: v1.5.6-beta4
Release date: 2026-06-02
Security and static-analysis hardening release. No schema migrations and no UI
feature changes. The only integrator-visible change is the new APIv2 401
status (see Upgrade).
What changed
- Static analysis to zero —
staticcheck,golangci-lint, andgosec
report no findings;go vet,go test ./...(incl.-race),govulncheck,
and the frontend suites are green. Deprecatedsing/common/atomic.Int64and
net.Error.Temporary()replaced; dead code removed; previously unchecked
errors handled. - APIv2 auth status — invalid/expired bearer tokens on
/apiv2/*now return
HTTP401instead of200withsuccess:false. The browser UI (cookie
sessions on/api) is unaffected. - Opt-in strict cookies — new
sessionSameSiteStrictsetting (default off)
issuesSameSite=Strictsession cookies; the default staysLax. - SSRF hardening — reject credentials in Telegram proxy URLs and
private/loopback/link-local/multicast IP-literal hosts in optional HTTP URL
settings. - Token comparison — constant-time API-token-scope check hardened against
length-multiple-of-256 truncation. - Audit & backup — successful settings saves emit
settings_save_succeeded;
backup → restore strictly preserves table row counts (incl. the no-TLS
sentinel).
Upgrade
No manual migration; existing data is preserved. If you call /apiv2 with
bearer tokens, treat HTTP 401 (not a 200 body) as the auth-failure signal.
sessionSameSiteStrict defaults to off.
Примечания к релизу: v1.5.6-beta4
Дата релиза: 2026-06-02
Релиз усиления безопасности и статического анализа. Без миграций схемы и без
изменений функций UI. Единственное заметное для интеграций изменение — новый
статус APIv2 401 (см. «Обновление»).
Что изменилось
- Статический анализ до нуля —
staticcheck,golangci-lintиgosecбез
замечаний;go vet,go test ./...(вкл.-race),govulncheckи
фронтенд-наборы зелёные. Устаревшиеsing/common/atomic.Int64и
net.Error.Temporary()заменены; мёртвый код удалён; ранее непроверявшиеся
ошибки обработаны. - Статус аутентификации APIv2 — невалидный/истёкший bearer-токен на
/apiv2/*теперь возвращает HTTP401вместо200сsuccess:false.
Браузерный UI (cookie-сессии на/api) не затронут. - Строгие cookies (опционально) — новая настройка
sessionSameSiteStrict
(по умолчанию выключена) выдаёт session cookies сSameSite=Strict; по
умолчанию остаётсяLax. - Защита от SSRF — отклоняются учётные данные в URL Telegram-прокси и
приватные/loopback/link-local/multicast IP-литералы в опциональных HTTP-URL
настройках. - Сравнение токенов — constant-time сравнение scope API-токена защищено от
усечения при разнице длин, кратной 256. - Аудит и бэкап — успешное сохранение настроек пишет
settings_save_succeeded;
backup → restore строго сохраняет число строк таблиц (вкл. no-TLS sentinel).
Обновление
Ручная миграция не нужна, данные сохраняются. Если вы обращаетесь к /apiv2 с
bearer-токенами, считайте сигналом ошибки аутентификации HTTP 401 (а не тело
200). sessionSameSiteStrict по умолчанию выключена.