feat(messages): счётчики упоминаний, квота приглашений и read state автора

- упоминания в сообщении увеличивают счётчик упоминаний комнаты у упомянутых
  (store.BumpMentionCount) и отправляют им READ_STATE_UPDATE на все устройства;
- отправка сообщения отмечает его прочитанным для автора;
- подтверждение прочтения сбрасывает упоминания;
- суточная квота 10 приглашений на пользователя (AGENT.md 8.6), администратор
  инстанса её обходит; httpx.NewRateLimiterWindow для произвольных окон;
- тест на рост и сброс счётчика упоминаний.
This commit is contained in:
2026-09-19 23:37:02 +03:00
parent 0e39b8e027
commit 8619f37cd5
15 changed files with 186 additions and 6 deletions
+2 -1
View File
@@ -93,8 +93,9 @@ export function Menu({ open, label, onClose, children, anchorRef, className = ''
const onKeyDown = (event: ReactKeyboardEvent<HTMLDivElement>): void => {
if (event.key === 'Tab') {
// Меню — не часть tab-порядка: уводим фокус дальше по странице.
// Меню — не часть tab-порядка: закрываем его и оставляем фокус на якоре.
onClose();
anchorRef?.current?.focus();
return;
}
const items = Array.from(panelRef.current?.querySelectorAll<HTMLElement>(ITEM_SELECTOR) ?? []);