Files

217 lines
22 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Карта: Конференции (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; поведение фильтра списка;
состав правого сайдбара на узком вьюпорте (какие табы прячет тема).