# Карта: Конференции (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; поведение фильтра списка;
состав правого сайдбара на узком вьюпорте (какие табы прячет тема).
