18 KiB
Карта: Почта
Снята по мобильной веб-версии forbion.f7cloud.ru (вьюпорт ~400px, плавающая нижняя панель —
мобильная тема), аккаунт cloude / почтовый ящик cloude@forbion.ru, строго read-only
(mail/073). Живой UI — полный Nextcloud Mail 5.7.15.
Источники узлов: [live] — пройдено в браузере; [src] — достроено по читаемому исходнику
design-reference/forbion-apps/f7mail/src (форк f7mail) + nextcloud/mail 5.7.15, т.к. узел
требует записи и live не проходился; [mockup] — сверено с design/screens/mail/*.png.
⚠️ Ограничение read-only для Почты. В NC Mail пометкой
\Seenявляется само открытие непрочитанного письма — это запись на сервер. Уcloudeвсе 3 письма во «Входящих» — непрочитанные, «Отправленные»/«Черновики» пусты, прочитанных писем нет. Поэтому экран открытого письма live не проходился; его дерево дано по[src]/[mockup]и помеченоне-пройдено-live: \Seen. Composer открывался пустым и закрывался без ввода (черновик не создавался). Ни одно пишущее действие (отправка/удаление/спам/перемещение/пометки) не нажималось.
Вход
Нижняя плавающая панель оболочки → иконка «конверт» (раздел «Почта», активна) → открывается
Список писем текущей папки (по умолчанию «Приоритетные входящие», /apps/mail/box/priority).
Оболочку панели/шторки описывает shell.md (зона лида).
Экран: Список писем (папка) [live]
URL: /apps/mail/box/<id> (напр. priority, 517=Входящие).
Шапка:
- Поле «Искать в папке» → фокус строки поиска в текущей папке.
- Иконка-слайдеры (справа в поле) → открывает модалку «Параметры поиска» (расширенный поиск).
- Круглая зелёная «+» → открывает Композер (сворачивается в плашку «Сообщение без названия»).
Тело: вертикальный список карточек-писем. Пустая папка → центр-заглушка «В этой папке нет
сообщений» + логотип F7 [live] (наблюдалось в «Отправленных»).
Карточка письма (строка):
- Аватар/инициалы отправителя (цветной кружок).
- Имя отправителя (жирным) + строка-превью темы/начала письма.
- Справа: относительное время («1:00», «вс») + зелёная точка = непрочитано.
- Тап по карточке → Экран открытого письма/треда (
/box/<id>/thread/<tid>). ⚠️ помечает\Seen— live не нажималось.
Быстрые действия строки (появляются при наведении/выборе) [live]:
- ✉ конверт → пометить прочитанным/непрочитанным (запись).
- 🌿 лист → важное/снять важность (запись).
- 🗑 корзина → удалить ветку (запись).
- ⋯ → контекстное меню (ниже).
Контекстное меню письма (⋯ «Больше действий») [live]
Верхний ряд иконок: В избранное (звезда) · Прочитать (конверт) · Снять важность (лист). Далее пункты:
- 🕐
<дата и время письма>(инфо-строка, напр. «13 июля 2026 г., 1:00»). - ⓘ Пометить как спам (запись).
- 🏷 Изменить метки → диалог выбора/назначения меток (запись при сохранении).
- ⏰ Запланированная отправка (в native — открывает composer-ответ с выбором времени).
- Переместить ветку → выбор папки назначения (запись).
- 🗑 Удалить ветку (запись).
- ⋯ Больше действий → подменю:
- Редактировать как новое сообщение → Композер с телом письма.
- Ответить встречей → создание события-приглашения (CalDAV).
- Создать задачу → создание задачи из письма (Tasks).
- Скачать письмо → выгрузка .eml.
Экран: Параметры поиска (расширенный поиск) [live]
Открывается иконкой-слайдерами в поле поиска. Модалка «Параметры поиска», крестик ✕ (закрыть). Поля:
- Тема (строка).
- Тело — «Найти» (строка).
- Дата: «Дата начала» и «Дата окончания» — два пикера даты (иконка календаря).
- От — «Выберите отправителей» (мультиселект).
- Кому — «Выберите получателей».
- Коп — получатели CC.
- СкрКоп — получатели BCC.
- Метки — «Выбор меток».
- Отмечено как (чекбоксы): Важное · В избранное · Непрочитанное · Имеет вложения · Упоминания меня.
Низ: «Очистить» (сброс) · «Поиск» (зелёная).
Экран: Композер (новое сообщение) [live]
Открытие: «+» в шапке списка. Сначала свёрнутая плашка снизу «Сообщение без названия» с иконками ⤢ (развернуть) и ✕ (закрыть/отменить). Развёрнутый вид — полноэкранная форма:
Шапка: заголовок «Новое сообщение», под ним отправитель «cloude cloude@forbion.ru»; справа — («свернуть») и ✕ («закрыть»). Поля:
- Кому: с шевроном-раскрытием → раскрывает Копия: (Cc) и Ск: (Bcc).
- Тема сообщения.
- Текст (тело, шеврон сворачивания); в правом нижнем углу тела — 📎 скрепка (вложения). Низ-панель:
- ≡A → панель форматирования текста (rich-text: жирный/курсив/списки и т.п.)
[src]. - ⋯ → меню: Умный подборщик · Текстовые шаблоны · Отправить позже · ☐ Запросить подтверждение прочтения.
- ▷ Отправить (зелёная, неактивна при пустых получателях) (запись — не нажималось).
расхождение: native-композер «⋯» содержит только «Отправить позже» + «Запросить подтверждение
прочтения» (MailComposeScreen.kt:758,767) — нет «Умного подборщика» и «Текстовых шаблонов»
(см. Расхождения п.2–3). Запланированная отправка, подтверждение прочтения, вложения, rich-text
(≡A) — совпадают.
Экран: Открытое письмо / тред [src] [mockup] — не-пройдено-live: \Seen
URL: /apps/mail/box/<id>/thread/<tid>. Структура по MessageView.vue + макетам
Почта _ Окно сообщения*.png, Сообщение с перепиской *.png:
Шапка: тема письма (заголовок h2). Для локального (черновик/исходящее) — метка статуса. Панель действий над письмом:
- Обычное письмо: Ответить · Переслать · В избранное (toggle) · Отметить
непрочитанным (если
\Seen) · Архивировать · В спам · В корзину · Удалить. - Черновик/исходящее: Отправить (если можно) · Изменить черновик · Удалить.
Мета-строки: Кому (to), Копия (cc), «Отправить в» (sendAt — для запланированных).
Перемещение: выпадающий выбор папки + кнопка «Переместить».
Вложения: список карточек вложений (если есть).
Тело: HTML-письмо в WebView-контейнере, либо текстовое в Compose (в native).
Тред: несколько писем переписки — сворачиваемые карточки (закрытые/открытое), см.
Сообщение с перепиской закрытые.png/... открытое.png. Плавающая кнопка «↩ Ответить» (nativeMailReplyFab) — сверено ранее,[mockup].
Навигация папок (шторка «Открыть навигацию») [live]
Кнопка-гамбургер почты → выезжает список папок ящика. Сверху: «Создать сообщение» и «Обновить». Далее:
- Приоритетные входящие (
/box/priority). - Аккаунт cloude@forbion.ru + кнопка «Действия» (⋯ по аккаунту).
- Входящие (
/box/517) · Непрочитанное (/box/unread/517) · Избранные (/box/starred/517) · Черновики (/box/516) · Отправленные (/box/515) · Спам (/box/513) · Корзина (/box/514). - У каждой папки — кнопка «Действия» (⋯: переименование/очистка/подписка и т.п.
[src]).
Экран: Параметры эл. почты (настройки) [live] вход / [src] глубина
Точка входа: пункт «Параметры эл. почты» (в меню настроек шапки; JS-модалка, href="#").
Глубину подтверждает native MailSettingsScreens.kt + макеты Параметры электронной почты.png,
Параметры учётной записи.png:
- Основные (общие параметры почты).
- Учётные записи (аккаунты; форма
AccountForm.vue[src]). - Внешний вид.
- Текстовые шаблоны / подписи.
- Конфиденциальность.
- Безопасность.
- Фильтры (sieve) —
FiltersSettingsView.vue[src]; в native — общий официальный API/apps/mail/api/filter(список/вкл/выкл/удаление/правка простых; сложные — долг v1).
расхождение(?): live-модалку «Параметры эл. почты» не раскрывал по пунктам (JS-диалог) — при сверке на устройстве пройти каждый подраздел и сверить состав с native.
Пустые/особые состояния [live]
- Пустая папка: «В этой папке нет сообщений» + логотип F7 по центру.
- Свёрнутый композер: плашка «Сообщение без названия» (⤢ / ✕) поверх списка.
Расхождения с нативным feature/mail
Сверка карты (живой forbion) с кодом модуля на 91aaaba. Нативный клиент оказался
функционально богат — расширенный поиск, подтверждение прочтения, важность/спам/метки/
создать задачу/создать событие/запланированная отправка уже есть и совпадают. Ниже —
только то, где native отстаёт или отличается от живого web (это бэклог на добивку).
Функциональные (native отстаёт) — бэклог
- Черновики не сохраняются
[приоритет]. Live: папка «Черновики» + композер сохраняет/ восстанавливает черновик. Native:MailComposeViewModelне пишет и не восстанавливает черновик — набранное теряется. (Совпадает с долгом №1 представления mail/070; план п.2.) - Композер «⋯» → «Текстовые шаблоны» — вставки в тело нет. Live: пункт есть. Native:
текстовые блоки только в настройках (
MailRepository), в композере не вставляются (MailComposeScreen.ktменю «⋯» = только «Отправить позже» + «Запросить подтверждение прочтения»). - Композер «⋯» → «Умный подборщик» (NC smart picker) — в native отсутствует.
- Меню письма → «Ответить встречей» — в native нет (есть смежное «Создать событие»
MailComponents.kt:1254, но это не invite-reply). - Меню письма → «Скачать письмо» (.eml) — в native отсутствует.
- Меню письма → «Редактировать как новое сообщение» — в native отсутствует.
- Действие «Архивировать» над письмом — в native нет отдельного пункта (папка «Архив»
и
archiveMailboxIdесть, но архивирование только через «Переместить сообщение»MailComponents.kt:1259).
Косметические / вёрстка (для попиксельной сверки)
- Подписи виртуальных папок. Live: «Непрочитанное», «Избранные». Native: «Непрочитанные»,
«Избранное» (
MailRepository.kt:672-673) — число/форма слова расходятся. - Порядок папок. Live: Приоритетные → Входящие → Непрочитанное → Избранные → Черновики →
Отправленные → Спам → Корзина. Native: Входящие → Непрочитанные → Избранное → Отправленные →
Черновики → Архив → Корзина → Спам (
MailRepository.kt:671-680). Порядок отличается. - Быстрые действия строки списка. Live-web (даже в узком вьюпорте): inline-иконки при
наведении (✉ прочитать / 🌿 важность / 🗑 удалить / ⋯). Native: свайп справа-налево
(
f7SwipeFromRightToDismiss). ⚠️ вероятно артефакт desktop-web на узком экране, а не мобильный паттерн — проверить на реальном мобильном web/устройстве прежде чем считать расхождением.
Открытые вопросы (добить при сверке на устройстве)
- Экран открытого письма/треда — пройти live, когда будет прочитанное письмо или write-ОК
на
\Seen; там же сверить панель действий и расхождения (архив/скачать/редактировать-как-новое). - Модалка «Параметры эл. почты» — раскрыть каждый подраздел live (native — 6 разделов).
- Действия «⋯» по папке и по аккаунту — раскрыть состав live.
- Диалоги «Изменить метки», «Переместить», «Запланированная отправка» — раскрыть формы live.
- Проверить п.10 (быстрые действия строки) на реальном мобильном — hover-иконки vs свайп.