From e37833d4196d128b14cb92edf4464ee0aeac5798 Mon Sep 17 00:00:00 2001 From: b-mob-conf Date: Mon, 13 Jul 2026 05:48:32 +0000 Subject: [PATCH] =?UTF-8?q?docs(app-map):=20=D0=BA=D0=B0=D1=80=D1=82=D0=B0?= =?UTF-8?q?=20=D0=9A=D0=BE=D0=BD=D1=84=D0=B5=D1=80=D0=B5=D0=BD=D1=86=D0=B8?= =?UTF-8?q?=D0=B9=20(talk.md)=20=D0=B8=D0=B7=20=D0=BA=D0=BE=D0=B4=D0=B0=20?= =?UTF-8?q?spreed=20v22.0.12=20+=20=D1=82=D0=B5=D0=BC=D0=B0,=20=D1=81?= =?UTF-8?q?=D0=B0=D0=B9=D0=B4=D0=B1=D0=B0=D1=80=20=D1=81=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BD=D0=B0=20forbion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/app-map/talk.md | 216 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 216 insertions(+) create mode 100644 docs/app-map/talk.md diff --git a/docs/app-map/talk.md b/docs/app-map/talk.md new file mode 100644 index 0000000..a696cbd --- /dev/null +++ b/docs/app-map/talk.md @@ -0,0 +1,216 @@ +# Карта: Конференции (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; поведение фильтра списка; +состав правого сайдбара на узком вьюпорте (какие табы прячет тема).