0.136.0

Added

  • **Поле timezone в профиле пользователя **: миграция 083 (SQLite + PostgreSQL) добавляет колонку timezone TEXT NOT NULL DEFAULT ''. Поле User.Timezone в store, обновлённые SQL-запросы (userColumns/pgUserCols/UpdateUserProfile). Handler profile.go: Timezone в profileParams + валидация через time.LoadLocation (HTTP 400 invalid_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 принимает userId prop. Аватар встроен в админскую модалку с обрезкой через 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: глобальный globalUpdates store (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).