0.136.1
Fixed
- Atomicity аватарок на partial write failure (ocr review к #162):
writeAvatarFiles(kind, id, r)— единый хелпер с двухфазной записью. Фаза 1: все размеры в.tmpс rollback при ошибке (старые аватары не затронуты). Фаза 2: атомарныйRenameвсех.tmp → финал. Явныйfile.Close()послеio.Copy(неdeferв цикле — убирает гонку close/remove).UploadAgentAvatarрефакторён — 60 строк дублированного кода заменены вызовом хелпера. - Lock-ordering
installMu → s.muв updater (ocr review к #162):emitProgressбольше не берётs.mu(write lock) на каждом чанке скачивания. ПолеlastProgressEmit→atomic.Int64(UnixNano), throttle черезatomic.Load/Store. Убирает contention сStatus()читателями в download hot-path. - AvatarCrop смонтирован всегда (ocr review к #162):
<AvatarCrop>перенесён внутрь{#if showProfileModal}— кроппер монтируется только при открытии модалки. Backdrop-click теперь вызываетcloseProfileModal()(сбрасываетavatarCtrl = null).