diff --git a/doc/dm_devgroup_plan.txt b/doc/dm_devgroup_plan.txt index fdd05a0fb..c277cbdc9 100644 --- a/doc/dm_devgroup_plan.txt +++ b/doc/dm_devgroup_plan.txt @@ -278,3 +278,27 @@ CLI: dm_start --mode device|groups; dm_file ... download|opened. Работа закоммичена в feature/dm-devgroups; исходные пользовательские изменения также закоммичены отдельными коммитами по просьбе пользователя. Push, установка на телефоны и развёртывание не выполнялись. Интерактивный сценарий на физических устройствах не запускался. + +11. Панель устройств групповой беседы — 03.11.2026 +------------------------------------------------ +Панель показывает текущий проверенный состав закреплённых сторон GROUPS: +«Мои устройства» и «Устройства собеседника». Offline-узлы остаются видимыми; +сторона без подгруппы содержит одно устройство. Список доставки каждого уже +отправленного сообщения остаётся неизменным при обновлении панели. + +Общий API dm_members_snapshot возвращает CHAT_EVT_DM_MEMBERS (73): +conv_len:u8,conv:UTF8,generation:LE64,count:LE16,(side:u8,member:wire260)*count. +Side 0 — локальная сторона, 1 — собеседник. Используется существующий codec +chat_member_display; имена/live-состояние берутся из общей CHAT-области. +Известный узел без общей CHAT-области также виден, без выдуманного online. +dm_identity_members допускает пустую подгруппу; отправка через +dm_identity_targets по-прежнему требует хотя бы одно устройство обеих сторон. +Закрытая или DEVICE-беседа возвращает пустой состав этим API. + +Qt заменяет содержимое панели участников при выборе GROUPS; Android открывает +панель кнопкой участников в заголовке PM. Пока панель видна, состав и online +обновляются каждые 2 s. Qt сохраняет выбор/прокрутку и не перестраивает +неизменившийся снимок. Ответ другой беседы/поколения, усечённая запись, +повторный node_id и недопустимая сторона отклоняются без частичного обновления. +DEVICE сохраняет прежний интерфейс. Секреты, поиск новых узлов и изменение +членства в эту операцию чтения не входят. diff --git a/doc/tasks.md b/doc/tasks.md index 2744bd365..14df08145 100644 --- a/doc/tasks.md +++ b/doc/tasks.md @@ -5,6 +5,12 @@ ## Текущие задачи +[ ] **Панель устройств групповой лички: свои и собеседника** — 03.11.2026. + Общий снимок текущего состава закреплённых сторон, включая offline и fallback-устройство. + Qt: два раздела панели мемберов; Android: кнопка участников в заголовке PM. + Обновление раз в 2 s, защита от чужого/устаревшего поколения; список доставки не меняется. + Поведение/API: раздел 11 [dm_devgroup_plan.txt](dm_devgroup_plan.txt). + [+] **Личные сообщения между подгруппами с доставкой каждому устройству** — 03.11.2026. Ветка feature/dm-devgroups; два режима DEVICE/GROUPS с сохранением лички между конкретными устройствами. Снимок адресатов, per-device ACK и mailbox fallback; отдельная пара ключей вложения и две упаковки, diff --git a/tools/chatgui/src/mainwindow.cpp b/tools/chatgui/src/mainwindow.cpp index 489809899..5ffd3b8e9 100644 --- a/tools/chatgui/src/mainwindow.cpp +++ b/tools/chatgui/src/mainwindow.cpp @@ -238,6 +238,7 @@ MainWindow::~MainWindow() { gui_bridge_set_dm_start_result_cb(nullptr); gui_bridge_set_dm_msg_received_cb(nullptr); gui_bridge_set_dm_messages_cb(nullptr); + gui_bridge_set_dm_members_cb(nullptr); gui_bridge_set_dm_delete_result_cb(nullptr); gui_bridge_set_msg_received_cb(nullptr); gui_bridge_set_channel_updated_cb(nullptr);