0.134.87

Fixed

  • Retention handler: http.ErrorwriteJSONError: неконсистентный формат ответа при ошибке записи (отсутствовали Content-Type: application/json и X-API-Version).
  • Retention handler: удалена мёртвая normalized map: копировала req без трансформации, заменена прямой итерацией.
  • WebUI «Настройки логов» — валидация: невалидные значения (не-число, вне диапазона, пустое поле) теперь показывают toast.error вместо молчаливого пропуска и ложного «Нет изменений».
  • WebUI «Настройки логов» — isChanged / reset: бейдж «изменено» и кнопка «Сброс» теперь корректно работают от последнего сохранённого значения, а не от default.
  • WebUI «Настройки логов» — refetch после save: данные обновляются с сервера после сохранения.
  • WebUI «Настройки логов» — success toast: показывается до refetch, чтобы избежать противоречия при ошибке загрузки.

Changed

  • Purge-методы Store: 7 идентичных методов Purge*Before в SQLite/Postgres сведены к приватному хелперу purgeCreatedBefore с allowlist таблиц allowedPurgeTables (единый в store.go).
  • Cleanup service: defaults для retention-параметров читаются из settings.RegistryDefaultInt вместо hardcoded-значений.
  • Иконка «Настройки логов»: уникальная иконка clipboard вместо дублирующей иконки колбы.

Added

  • settings.RegistryDefaultInt: хелпер для чтения default из ParamRegistry с fallback.
  • Тесты retention handler (retention_test.go): 10 тестов — Get (группа, значения, defaults), Update (valid, min/max, invalid, unknown-key, multi), формат ошибок.
  • Тесты Purge-методов (purge_test.go): 7 тестов — PurgeAuditLog (базовый, пустая таблица, граница), PurgeToolAudit, PurgeWebhookRequests, PurgeRevokedRefreshTokens (revoked + active not deleted).