0.136.0
Added
- **Поле
timezoneв профиле пользователя **: миграция 083 (SQLite + PostgreSQL) добавляет колонкуtimezone TEXT NOT NULL DEFAULT ''. ПолеUser.Timezoneв store, обновлённые SQL-запросы (userColumns/pgUserCols/UpdateUserProfile). Handlerprofile.go:TimezoneвprofileParams+ валидация черезtime.LoadLocation(HTTP 400invalid_timezoneпри невалидной IANA-зоне). Экспорт Markdown и промпт импорта обновлены. Frontend: поле сdatalistпопулярных IANA-зон (web/src/lib/utils/timezones.ts) в админской модалке (settings/users), детальной странице (users/[id]), собственном профиле (ProfileForm.svelte). ПолеbioНЕ добавляется —profile_freeformзакрывает потребность «О себе». - **Загрузка аватара админом **: новые эндпоинты
POST /api/v1/users/{id}/avatarиDELETE /api/v1/users/{id}/avatarподRequireGlobalAdmin. Рефакторингavatar.go— вынесеныsaveUserAvatarFiles(w, r, targetID)иremoveUserAvatar(w, r, targetID). Frontend:uploadUserAvatar/deleteUserAvatarвendpoints.ts,AvatarControlпараметризованtargetUserId,AvatarSectionпринимаетuserIdprop. Аватар встроен в админскую модалку с обрезкой черезAvatarCrop. - **WebSocket-события
update.***: real-time прогресс установки автообновления через WS вместо polling. EventBroadcaster интерфейс вupdater.Service(по образцуembeddings/reindex.go), точки emit:update.check_started/completed,update.install_started,update.progress(throttle 250мс),update.installed,update.restart_imminent,update.failed. МетодWSHub.BroadcastUpdateEventчерезBroadcastAll(глобальные события без привязки к chat_id). Frontend: глобальныйglobalUpdatesstore (web/src/lib/stores/updates.svelte.ts), bridge вchat.svelte.ts:handleWSEvent. - **Бейдж «🔔 vX.Y.Z» в навигации **: глобальный polling статуса обновлений каждые 10 минут (для админа), реактивный бейдж в
AppSidebar.svelteприhasUpdate && isAdmin(). Клик →/settings/system.
Changed
docs/auto-update-spec.mdраздел 6: формат WS-envelope приведён к конвенции кода (event+dataвместоtype+data), добавлена frontend-обработка.docs/todo.md: пункт «UI профилей пользователей» перемещён в архив (выполнено). Из задачи «Автообновление — доработки этап 2» вычеркнуты 2 подпункта (WS-события, бейдж), осталось 2 (миграцияupdate_history,.github/workflows/release.yml).