0.134.88
Fixed
- Symlink path traversal в
LoadEntryBody:filepath.EvalSymlinks+ повторная проверкаisUnder(baseDir)для защиты от символьных ссылок, выходящих за пределы каталога логов. - FD leak при ошибке записи: при ошибке
f.Writeфайловый дескриптор корректно закрывается и удаляется из внутренних мапLogger. SessionID *int64: тип изменён сint64на*int64для корректной обработки SQL NULL в nullable-колонкеsession_id.- Dangling FK
REFERENCES sessions(id): миграция 082 убирает FK на несуществующую таблицуsessions(удалена в миграции 049). Первичные миграции 079 (SQLite + PostgreSQL) также исправлены — fresh install больше не ломается. - Кнопка «Повторить» в WebUI LLM-логов: заменена
toggleExpandнаloadDetailс captureidxчерез@const, корректный рефетч при ошибке. - Race condition в
SetStore: записьl.storeтеперь защищена мьютексомl.mu. context.Background()→r.Context():GetEntryиListEntriesпринимаютcontext.Context, handler передаёт контекст запроса для корректной отмены при отключении клиента.LastInsertIdв SQLite:AddLLMRequestLogтеперь записывает сгенерированный ID вentry.IDчерезres.LastInsertId().normalizeDateFilterс ошибкой: возвращает(string, error)вместо молчаливого возврата невалидной строки; невалидные даты — 400 вместо пустого ответа.- Форматирование
allowedPurgeTables: выравнивание пробелов.
Changed
- Константы:
maxLimit→maxLogListLimitв SQLite и PostgreSQL;pgLLMRequestLogCols— общая константа для списка колонок в PostgreSQL. RETURNING id:AddLLMRequestLogв PostgreSQL возвращает ID черезQueryRow.ScanвместоExec.- Doc comments: ~25 godoc-комментариев на экспортируемые типы и методы в
logger.go,dual.go,handler/llmlog.go.
Added
- TypeScript типы:
LLMLogStatus = 'success' | 'error',LLMUsage,LLMLogDetail extends LLMLogEntry,error_message: string | null,session_id: number | null. - Тесты LLM Request Log (
llm_request_log_test.go): 8 тестов — Add+Get (с SessionID, nil SessionID), NotFound, List по AgentID, Limit cap, Date filter, Purge, Purge keeps newer. - Миграция 082: пересоздание таблицы
llm_request_logбез dangling FK (SQLite + PostgreSQL).