- shorts.js подписан на SSE shorts_changed с дебаунсом и реконнектом
- dispatchEvent больше не отдаёт любой неизвестный тип как
entries_changed: entries_changed/lessons_changed/shorts_changed
теперь маршрутизируются по имени (иначе правка короткого
сообщения будила журнал с ложным тостом о новой записи)
- добавлен aiLimiter (30/мин на cache.rateLimitStore('ai')) и
навешен на оба вызова модели: /api/ai/correct и
/api/shorts/ai-correct