- Удалено поле last_read_at из ChatReadState, используется только last_read_message FK - Исправлена логика автоотметки: отмечается последнее ЗАГРУЖЕННОЕ сообщение, а не последнее в чате - Убран вызов chat.mark_read() при WebSocket open_chat (отмечал последнее в чате вместо загруженного) - Добавлен signal для мониторинга изменений ChatReadState - Исправлена логика скролла: убран автоскролл при дозагрузке вниз - Добавлена проверка разрывов при WebSocket сообщениях (предотвращает пропуск сообщений) - Реализована автоотметка WebSocket сообщений (только если пользователь внизу) - Асимметричная загрузка: 24 контекста + 6 новых сообщений - Добавлен ScrollableMessageList компонент для корректной работы скролла - Миграции: 0028 (удаление last_read_at), 0029 (индекс на last_read_message)
Руководства разработчика
Активные гайды и инструкции для работы с проектом.
📚 Доступные руководства
Валидация и формы
- LIVE_VALIDATION_GUIDE.md - живая валидация форм
- NAME_VALIDATION.md - валидация имен
Миграция и обновление
- REALTIME_MIGRATION_GUIDE.md - миграция на realtime
- WEBSOCKET_UNIFIED_MIGRATION.md - унифицированный WebSocket
Быстрый старт
- MESSENGER_QUICKSTART.md - быстрый старт с мессенджером
UX и интерфейс
- RECIPIENT_PICKER_UX_IMPROVEMENTS.md - улучшения выбора получателей
Кэширование и оптимизация
- CACHE_OPTIMIZATION_SUMMARY.md - оптимизация кэширования
- CACHING_SETUP.md - настройка кэша
Безопасность
- IP_RESTRICTIONS_README.md - IP ограничения
- IP_REGISTRATION_RESTRICTIONS.md - ограничения регистрации
🎯 Использование
Эти гайды содержат актуальные инструкции для разработчиков. При внесении изменений в функционал - обновляйте соответствующие гайды.