0.38.0
Fixed
- Auth flow: восстановлена работа авторизации за HTTPS reverse-proxy (chat.a2v.space)
- PostgreSQL
GetRefreshTokenByHash: pgx не сканируетtimestamptzв*string, scan падал и refresh-токены считались просроченными — переписано черезtime.Timeс форматированием в RFC3339Nano Securecookie: helperisSecure(r)теперь учитываетX-Forwarded-Proto: httpsот прокси, иначе Chrome отклонял non-Secure cookie на HTTPS-странице (вauth.go,csrf.go,securityheaders.go)authstore: callbackonAuthRefreshтеперь обновляетisAuthenticated, без этого после SPA-навигации все защищённые layout зависали на «Перенаправление…»- Memory page: убран бесконечный цикл
$effectна вкладках Dream/Scratchpad — добавлены флагиdreamRunsLoaded/scratchpadLoadedвместо проверки длины массива - Логирование причин отказа в
Token()handler (grant_type, has_refresh_cookie, has_refresh_body, error)
Changed
client.ts: refresh-токен снова в теле ответа/oauth/token+ хранится вlocalStorage(в окружении за HTTPS-прокси cookie не доходят до браузера, fallback на токен в теле обязателен)client.ts:api.login()сохраняет refresh_token в localStorage;api.logout()чистит егоclient.ts:doRefresh()отправляетrefresh_tokenв теле POST-запроса вместо опоры только на cookie
Added
- Эндпоинты памяти агента:
dream/runs(история запусков),scratchpad(рабочая память),facts/{id}/history(история изменений факта) - Миграция
031_dream_runs_soul_evolved(SQLite + PostgreSQL): таблицаdream_runs, полеagents.soul_evolved - WebUI: вкладка Dream с историей запусков, вкладка Scratchpad, история изменений факта
- Soul page: отображение и очистка
soul_evolved
Notes
- Документ
docs/todo.mdотмечает: cookie-based auth остаётся целевым решением; текущий localStorage-fallback нужен из-за невозможности передатьSet-Cookieчерез текущую цепочку прокси на проде. Возврат к cookie-only — после настройки terminating-прокси с правильнымSet-Cookiepassthrough.