- Добавлены active_chat_* поля в user_presence и endpoint /api/devices/active-chat
- Сервер не шлёт Web Push/Pushy, если получатель смотрит в тот же чат на видимой вкладке
- Клиент сообщает серверу и Service Worker об активном чате из Chat.tsx и TaskChat.tsx
- TaskChat: входящие сообщения автоматически отмечаются прочитанными при видимой вкладке
- SW: подавляет foreground/system push, если активный чат совпадает