# Карта: Конференции (Talk) Приложение «Конференции» (`/apps/spreed/`) на forbion.f7cloud.ru. Структура кнопок/меню/переходов снята **из кода** (метод mail/078): апстрим `nextcloud/spreed` **v22.0.12** (`src/**/*.vue` — точная версия с forbion, совпадает с серверным форком `f7_talk 22.0.12-f7.N`) + мобильная тема forbion (`design-reference/forbion-theme/css/pages/pages-mobile/_mobile-spreed.css`, 4495 строк; `css/pages/app-spreed/`). Натив-эталон для сверки — мой `vendor/talk-android` v23 + `feature/talk`. Живой мобильный web (Browser 1, `cloude`, mail/079) — только визуальная сверка «как выглядит/порядок»; **строго read-only** (mail/073): ничего не создаётся/не меняется/не удаляется, **звонки не инициируются** (mail/073 п.4). Приватность: реальные имена собеседников/содержимое чатов не фиксируются — только структура UI и дерево переходов. > Статус визуальной сверки на живом forbion: **левый сайдбар (список обсуждений) пройден > 2026-07-13** (Browser 1, `cloude`, same-origin iframe 390px, read-only — ни одной пишущей > операции). Реальные русские подписи forbion внесены (`сверено:`). **Экран беседы/чата > live НЕ проходился намеренно**: открытие комнаты выставляет read-marker на сервере (запись, > аналог `\Seen` у почты — см. mail.md) → узлы «Беседа», «Звонок», «Детали беседы», меню > сообщения достроены из кода апстрима, помечены `не-пройдено-live`. ## Компоненты-источники (nextcloud/spreed v22.0.12) Левый сайдбар (список): `LeftSidebar/LeftSidebar.vue` (+ `ConversationsList/`, `SearchConversationsResults/`, `OpenConversationsList/`, `InvitationHandler.vue`, `CallPhoneDialog/`). Создание: `NewConversationDialog/` (`NewConversationDialog.vue`, `NewConversationContactsPage.vue`, `NewConversationSetupPage.vue`). Топбар беседы/звонка: `TopBar/TopBar.vue` (+ `CallButton.vue`, `CallTime.vue`, `TopBarMenu.vue`, `TopBarMediaControls.vue`, `ReactionMenu.vue`, `TasksCounter.vue`). Чат: `ChatView.vue`, `MessagesList/` (+ `MessagesGroup/Message/…/MessageButtonsBar.vue` — меню сообщения). Композер: `NewMessage/`. Звонок: `CallView/`, `MediaSettings/`. Правый сайдбар (детали): `RightSidebar/RightSidebar.vue` (+ `Participants/`, `SharedItems/`, `Threads/`, `SearchMessages/`, `BreakoutRooms/`, `LobbyStatus.vue`, `SipSettings.vue`). Настройки беседы: `ConversationSettings/ConversationSettingsDialog.vue`. Личные настройки: `SettingsDialog/SettingsDialog.vue`. Пусто-состояние: `EmptyView.vue`. ## Вход Нижняя плавающая панель оболочки → «Конференции», либо шторка приложений («три полоски»), либо прямой URL `/apps/spreed/`. Оболочку (нижняя панель, шторка, бургер) описывает `shell.md` (зона лида) — здесь только специфика приложения. На мобильном (узкий вьюпорт ~390px) тема (`_mobile-spreed.css`) показывает **сначала левый сайдбар на весь экран** (список обсуждений); выбор беседы разворачивает беседу на весь экран, правый сайдбар (детали) и модалки — тоже `height:100%`, «назад» возвращает к списку. ## Экран: Список обсуждений (левый сайдбар — `LeftSidebar`) Лендинг приложения на мобильном. **Шапка:** - Поле «**Поиск …**» (Search) → фильтрация списка + поиск людей/открытых обсуждений (`SearchConversationsResults`, `OpenConversationsList`). - Иконка-фильтр (ползунки, `Filter conversations by`) → меню фильтров: «**Непрочитанные**» (Unread), «**Упоминания**» (Mentions), «**Встречи**» (Meetings/Meeting conversations), «**Очистить фильтр**» (Clear filter/Clear filters). `сверено:` на forbion рядом с полем поиска. - Зелёная кнопка «**+**» → меню создания (см. ниже). `сверено:` FAB зелёный, справа от поиска. - (Над сайдбаром — общий NC-хедер оболочки: «Объединённый поиск», «Меню настроек», «Уведомления» — это `shell.md`, не Talk.) **Тело:** список обсуждений (`ConversationsList` → `Conversation`). Каждая строка: аватар/иконка, имя, превью последнего сообщения, бейдж непрочитанных, индикатор звонка «Call in progress». `сверено:` на forbion у `cloude` видны «Личные заметки» (Note to self, создано системой), «Давайте начнём!» (группа, бейдж 7), «Обновления приложения "Конференции"» (бейдж 57). **Действия строки (свайп/⋯ — `Conversation actions`):** - «**Отметить как прочитанное / непрочитанное**» (Mark as read / unread). - «**Добавить в избранное / Убрать из избранного**» (Add to / Remove from favorites). - «**Уведомления**» (Notifications) → подменю: «Уведомлять о звонках» (Notify about calls), «@-упоминания» (@-mentions only), «Все сообщения» (All messages), «Выкл» (Off), «Игнорировать "Не беспокоить"» (Ignore "Do not disturb"). - «**Настройки обсуждения**» (Conversation settings) → диалог настроек беседы (см. ниже). - «**Скрыть текст сообщения**» (Hide message text — приватность превью). - «**Архивировать / Разархивировать обсуждение**» (Archive / Unarchive conversation). - «**Копировать ссылку**» (Copy link). - «**Покинуть обсуждение**» (Leave conversation) → подтверждение «Do you really want to leave…»; предупреждение «You need to promote a new moderator before you can leave». - «**Удалить обсуждение**» (Delete conversation) → подтверждение «Do you really want to delete…». - Метки: «Важное обсуждение» (Important), «Чувствительное обсуждение» (Sensitive conversation). *(Все перечисленные — потенциально write; на live НЕ жму.)* **Прочие пункты сайдбара (навигация/`TopBarMenu` списка):** «**Архивные обсуждения**» (Archived conversations / «You have no archived conversations»), «**Обсуждения-встречи**» (Meeting conversations), «**Треды**» (Threads / «No followed threads» / «Show more threads»), «**Ожидающие приглашения**» (Pending invitations, `InvitationHandler`), «**Настройки приложения**» (App settings) → личные настройки (см. «Настройки Talk»). **Пусто-состояния:** «Обсуждения не найдены» (No conversations found), «Нет совпадений» (No matches found), «У вас нет непрочитанных упоминаний/сообщений». ## Экран: Меню «+» (создание) — `NewConversationDialog` + пункты Открывается зелёной «+». Пункты (`сверено:` порядок с live forbion): - «**Начать встречу сейчас**» (Start meeting now) → создаёт беседу и сразу входит в звонок. *(write — не жму.)* - «**Создать новое обсуждение**» (Create a new conversation) → мастер создания (см. ниже). - «**Присоединиться к открытым обсуждениям**» (Join open conversations) → список открытых (`OpenConversationsList`) → «Присоединиться к обсуждению» (Join conversation). - «**Проверить устройства**» (Check devices) → `MediaSettings` (превью камеры/микрофона, выбор устройств, размытие фона) — read-only-превью, без входа в звонок. - (Также доступно) «**Позвонить на телефонный номер**» (Call a phone number, `CallPhoneDialog`), «**Новая личная заметка**» (New personal note). ### Подэкран: Мастер «Создать новое обсуждение» (`NewConversationDialog`) Два шага: 1. **Contacts page** (`NewConversationContactsPage`): «**Найти участников или телефонные номера**» (Search participants or phone numbers), «**Добавить участников**» (Add participants), «**Добавить телефонный номер**» (Add a phone number). 2. **Setup page** (`NewConversationSetupPage`): поля «**Имя**» (Name / «Enter a name…»), «**Описание**» (Description), «**Изображение**» (Picture — аватар беседы); переключатели «**Видимость обсуждения**» (Conversation visibility), «**Разрешить гостям вход по ссылке**» (Allow guests to join via link → «Копировать ссылку»), «**Защита паролем**» (Password protection → «Ввести пароль»/«Копировать пароль»). Кнопки: «**Назад**», «**Создать обсуждение**» (Create conversation). *(write — мастер открываю без сохранения / на live не прохожу.)* ## Экран: Беседа (чат) — `ChatView` + `TopBar` + `NewMessage` *(не-пройдено-live)* **Шапка беседы (`TopBar`):** - «**Назад**» (Back) → список обсуждений (мобильный). - Имя беседы/аватар → «**Настройки обсуждения**» / «**Детали**» (правый сайдбар). - «**Начать звонок**» / «**Присоединиться к звонку**» (Start call / Join call, `CallButton`; «Start call silently» — тихий старт). При обновлении сервера: «Nextcloud Talk was updated, you cannot start or join a call». - «**Ещё действия**» (More actions, `TopBarMenu`): «Настройки обсуждения», «Действия обсуждения», «Проверить устройства», «Открыть чат» (Open chat), полноэкранный режим (Full screen / F). **Тело:** лента сообщений (`MessagesList`); «Нет сообщений» (No messages), «Все сообщения истекли или были удалены», «Это обсуждение только для чтения» (read-only conversation), «Прокрутить вниз» (Scroll to bottom), «Кто-то печатает…» (Someone is typing…). **Композер (`NewMessage`):** - Поле «**Отправить сообщение**» (Post message / Send message); «Отправить» (Send). - «**Добавить эмодзи**» (Add emoji). - «**Поделиться файлами в обсуждении**» (Share files): «Поделиться из Файлов» (Share from Files), «Загрузить» (Add more files), «Создать и поделиться новым файлом» (Create and share a new file). - «**Умный подборщик**» (Smart picker). - «**Создать опрос**» (Create new poll, `PollViewer`). - «**Записать голосовое сообщение**» (Record voice message → «Завершить и отправить»/«Отменить»). - «**Создать тред**» (Create a thread / silently). - Тихая отправка: «Отправить без уведомления» (Send without notification / Send message silently). - Редактирование: «Изменить сообщение» (Edit message), «Отменить редактирование». ### Меню сообщения (`MessageButtonsBar`) *(не-пройдено-live)* Долгое нажатие/⋯ на сообщении: - «**Ответить**» (Reply) / «**Ответить лично**» (Reply privately). - «**Добавить реакцию**» (Add a reaction; «React with {emoji}», меню реакций). - «**Переслать сообщение**» (Forward message / «в "Личные заметки"» — Note to self). - «**Копировать сообщение**» / «**Копировать ссылку на сообщение**» (Copy message / message link). - «**Напоминание**» (Set reminder): «Сегодня позже», «Завтра», «В выходные», «На следующей неделе», «Задать своё…»; «Очистить напоминание». - «**Отметить как непрочитанное**» (Mark as unread). - «**Перейти к файлу**» (Go to file) / «**Перейти к треду**» (Go to thread). - «**Изменить сообщение**» (Edit message) / «**Изменить детали треда**». - «**Перевести**» (Translate). - «**Скачать файл**» (Download file). - «**Удалить**» (Delete). ## Экран: Активный звонок — `CallView` + `TopBar`/`bottom-bar` *(не-пройдено-live, звонки запрещены)* Нижняя панель звонка (тема `.bottom-bar-call-controls`, `.buttons-bar`): - «**Микрофон вкл/выкл**», «**Видео вкл/выкл**» (Disable video), «**Размытие фона**» (Disable background blur / Select virtual background). - «**Показать экран**» (Show your screen / Enable screensharing / Screensharing options). - «**Отправить реакцию**» (Send a reaction). - «**Поднять руку**» (Raise/lower hand). - «**Добавить участников**» (Add participants to this call). - «**Запись**» (Start/Stop recording; «Starting the recording», согласие на запись). - «**Комнаты обсуждения**» (Set up breakout rooms; «Back to main room»). - «**Полный экран**» (Full screen / Exit full screen). - «**Покинуть звонок**» (Leave call) / «**Завершить звонок для всех**» (End call for everyone). - «**Скачать список присутствия**» (Download attendance list). ## Экран: Детали беседы (правый сайдбар — `RightSidebar`) *(частично не-пройдено-live)* Табы (`RightSidebarContent`): - «**Детали**» (Details) — инфо о беседе, «Предстоящие встречи» (Upcoming meetings, `CalendarEventsDialog`). - «**Участники ({count})**» (Participants) — список; действия участника (`ParticipantItem`): «Повысить/понизить модератора» (Promote/Demote moderator), «Изменить права» (Edit permissions: Grant all / Remove all / default), «Переместить в лобби» (Move back to lobby), «Переместить в обсуждение» (Move to conversation), «Удалить участника» (Remove participant), «Забанить» (Also ban…), телефонные (Dial out / Mute / Hold / Hang up / Copy phone number). Строка поиска «Добавить участников». - «**Чат**» (Chat / Open chat) — на узком экране. - «**Общие ресурсы**» (Shared items, `SharedItems`) — файлы/медиа/ссылки беседы. - «**Треды**» (Threads in {name}). - «**Поиск сообщений**» (Search messages / Search in {name}). - «**Комнаты обсуждения**» (Breakout rooms), «**Лобби**» (LobbyStatus), «**SIP**» (SipSettings) — когда включены. ## Экран: Настройки обсуждения (`ConversationSettingsDialog`) *(write-разделы — не жму)* Секции (модалка на весь экран): «**Основная информация**» (Basic Info + `ConversationAvatarEditor`), «**Обзор настройки**» (Setup overview), «**Личное**» (Personal), «**Модерация**» (Moderation), «**Права**» (Permissions), «**Встреча**» (Meeting), «**Комнаты обсуждения**» (Breakout Rooms), «**Живая транскрипция**» (Live transcription), «**Боты**» (Bots), «**Matterbridge**», «**Опасная зона**» (Danger zone: «Архивировать обсуждение», удаление/покидание). > Контрактно важно: разделы «Боты» и «Живая транскрипция» завязаны на серверный форк > `f7_talk 22.0.12-f7.N` (bot API /api/v1, транскрипция ячейки A) — предмет моей сверки, не вёрстки. ## Экран: Настройки Talk (личные — `SettingsDialog`) Открывается «Настройки приложения» (App settings) из сайдбара. Секции: - «**Внешний вид и звуки**» (Appearance & Sounds): «Компактный список обсуждений» (Compact conversations list), «Звуки уведомлений чата и звонков», «Проигрывать звуки при входе/выходе». - «**Устройства**» (Devices): «Проверить устройства» (Check devices), «Размывать фон камеры по умолчанию» (Blur camera background by default), «Пропускать предпросмотр устройства перед звонком» (Skip device preview), «Камера вкл/выкл», «Микрофон вкл/выкл». - «**Приватность**» (Privacy): «Отправлять уведомления о прочтении» (Send read receipts), «Делиться статусом набора» (Share typing status). - «**Вложения**» (Attachments): «Папка вложений» (Attachments folder → «Выбрать расположение»). - «**Уведомления**» (Notification settings). - «**Горячие клавиши**» (Shortcuts while in a call / in a chat) — не актуально на мобильном. ## Расхождения / бэклог (натив `feature/talk` ↔ живой forbion) Заполняется при функциональной сверке нативного клиента (задача №1 после карты). Кандидаты из беглого сопоставления кода `feature/talk` (Compose-UI на spreed OCS **/api/v4**) с апстримом v22: - `расхождение:` проверить наличие в нативе: **тредов** (Threads), **напоминаний по сообщению** (Set reminder), **опросов** (Poll), **умного подборщика** (Smart picker), **пересылки** (Forward), **комнат обсуждения** (Breakout rooms), **живой транскрипции**. - `расхождение:` состав меню создания «+» (в нативе — есть ли «Начать встречу сейчас» / «Присоединиться к открытым» / «Позвонить на номер»). - `расхождение:` секции «Настройки обсуждения» (модерация/права/лобби/SIP) — покрытие в нативе. - Звонок (натив = `vendor/talk-android` v23 CallActivity): сверить панель управления звонком (реакции, поднятая рука, запись, breakout, шаринг экрана) — отдельно от Compose-UI чата. - EOL-баннер «server almost EOL» (порог мажора 26 у v23 против сервера 22) — гасим в vendor (решение лида, mail/071); зафиксировать в `vendor/talk-android/README.F7CLOUD.md`. Открытые (?) (доберу при функциональной сверке на устройстве / доп. live-проходе без записи): точные подписи меню сообщения и действий участника на forbion; поведение фильтра списка; состав правого сайдбара на узком вьюпорте (какие табы прячет тема).