Files

22 KiB
Raw Permalink Blame History

Карта: Конференции (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.)

Тело: список обсуждений (ConversationsListConversation). Каждая строка: аватар/иконка, имя, превью последнего сообщения, бейдж непрочитанных, индикатор звонка «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; поведение фильтра списка; состав правого сайдбара на узком вьюпорте (какие табы прячет тема).