docs(app-map): карта Конференций (talk.md) из кода spreed v22.0.12 + тема, сайдбар сверен на forbion
This commit is contained in:
@@ -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; поведение фильтра списка;
|
||||||
|
состав правого сайдбара на узком вьюпорте (какие табы прячет тема).
|
||||||
Reference in New Issue
Block a user