vojo/docs/ai/desired_features.md

7 KiB
Raw Blame History

  1. Звонки по аудиосвязи в чатах

  2. Понятное сообщение при регистрации на сервере с забаненным ником

  3. Хочу скинуть ник-диплинк и чтобы сразу открылся сразу чат с юзером в приложении

  4. Разобраться с текущими доменами и навести там порядок. Сейчас caddy заведен неправильно, web тоже не совсем правильно. Предложение Тогда структура: vojo.chat — красивый лендинг с описанием проекта, скриншоты, кнопка "Попробовать" app.vojo.chat — сам мессенджер (Cinny) docs.vojo.chat — документация matrix.vojo.chat — Matrix API (технический поддомен, пользователи туда не ходят) matrix-rtc.vojo.chat — LiveKit (технический)

  5. Связанное ограничение по федерации (сейчас в env lk-jwt-service): LIVEKIT_FULL_ACCESS_HOMESERVERS: "vojo.chat" — инициировать звонки могут только юзеры @…:vojo.chat, федеративные — только join к существующим. При первых реальных кросс-homeserver кейсах ослабить до "*" или whitelist (правка в env, клиент не меняется).

  6. Миграция unstable-префикса MSC4143 → stable, когда спека финализируется. Сейчас .well-known/matrix/client объявляет RTC-фокусы под ключом org.matrix.msc4143.rtc_foci (unstable prefix). Когда MSC4143 примут, ключ станет m.rtc_foci. Что понадобится:

    • В ~/vojo/caddy/Caddyfile блок .well-known/matrix/client — добавить оба ключа на переходный период, потом выпилить старый.
    • В клиенте src/app/hooks/useLivekitSupport.ts сейчас читается только org.matrix.msc4143.rtc_foci — расширить на оба ключа (или дождаться matrix-js-sdk апдейта, который сделает это сам).
    • Этот же паттерн относится к о всем msc-событиям в RTC-стеке: MSC4075 (org.matrix.msc4075.rtc.notification), MSC4195, MSC4310 (org.matrix.msc4310.rtc.decline). При stable-переходе спек все префиксы поменяются синхронно — миграцию делать вместе.
  7. Пофиксить follow страницы с чатами 1-1. Потому что сейчас они не автоскролятся вниз. Происходит это на нативе когда открываешь клавиатуру (она не сдвигает ui вверх как это делают обычные приложения с клавиатурой, по ощущениям просто перекрывает часть страницы сдвигая просто форму с вводом)

  8. (из Phase 2 DM-звонков, 2026-04-19) Верифицировать на сервере: шифрует ли Element Call widget сам m.rtc.notification при отправке в encrypted room (ring от A → B). Теоретически SDK шифрует любой sendEvent в encrypted room прозрачно, и widget должен идти через тот же путь — но sendRtcDecline (наш, не widget) делегирует в client.sendEvent и это проверено (client.js:2457), а m.rtc.notification widget шлёт через свой postMessage канал — не перепроверяли. Как проверить: в encrypted DM у A нажать startCall, в DevTools Network tab смотреть PUT на /rooms/{roomId}/send/... — body должно быть encrypted (ключи algorithm, ciphertext, sender_key, session_id), не plain JSON с "m.rtc.notification". Если plain — widget игнорит encryption, нужен апстрим-фикс Element Call либо наша обёртка. См. docs/plans/dm_calls_techdebt.md 5.9.

  9. Когда открываешь чат уведомления из пуш бара не исчезают

  10. Пофиксить цвет полос снизу и сверху при разных бекграундах цветовых (Сейчас они не синхронны на темной теме)

  11. Как то по умнее схлопывать переходы назад. Возможно уникальные переходы схлопывать. Контекст такой: приложение сохраняет все походы юзера по экрану и так можно навигироваться без конца. Особенно это странно работает при входящих уведомлениях из одного чата: можно положить в этот стеш очень много ивентов этого окна и сидеть жать кнопку назад очень долго

  12. Не очень понятно что делать со звонками в пуше на андроиде. Если пришел пуш-звонок, надо показывать на экране чата внизу сам эвент со звонком как на вебе?

  13. UI friendly боты (в т.ч. телеграм бот)

  14. Убрать странное читат чат

  15. Баг с присоединться в комнату, перекидывает не в чат, а в комнаты. При чем у одного юзера отображается чат, а у другого комната. Из-за этого нельзя позовнить например — пофикшено: глобальный useAutoDirectSync listener, прямая навигация в Invites, smart push routing, HomeRouteRoomProvider redirect.

  16. Тех-долг: one-shot repair для исторически сломанных DM-комнат. После фикса #15 новые join-ы корректно обновляют m.direct, но комнаты у юзеров, которые уже приняли инвайт до фикса, остаются в "Комнатах". Нужна миграция или команда /repairDMs, которая пройдёт по joined rooms, проверит getDMInviter(), и добавит в m.direct. Осложнение: prev_content.is_direct не исчезает после /converttoroom, поэтому наивный sweep откатит ручную конвертацию — нужен tombstone-маркер или whitelist.