From ec7ec2a229f0f22270f55b86421a0a0658431a3f Mon Sep 17 00:00:00 2001 From: evgeny Date: Sun, 4 Oct 2026 18:11:08 +0200 Subject: [PATCH] Document localized invitation titles and compact link presentation --- doc/pm_invites.md | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/doc/pm_invites.md b/doc/pm_invites.md index bc2d17af..67f55405 100644 --- a/doc/pm_invites.md +++ b/doc/pm_invites.md @@ -5,7 +5,11 @@ и выбором группы, в которой отправитель состоит. Группа не выбирается автоматически. После нажатия «Пригласить» клиент создаёт свежую ссылку через `invite_build`, -ожидает подтверждения регистрации ключа и отправляет ссылку обычным текстовым PM. +ожидает подтверждения регистрации ключа и отправляет PM с `ct="invite"`. +Зашифрованное тело: `[group_name:UTF8][NUL][полная ссылка:UTF8]`, без конечного NUL. +Снимок для GUI содержит полную ссылку в `data` и название в `tags.group_name`. +GUI добавляет заголовок «Приглашение в группу «название»» из перевода интерфейса; +язык отправителя не фиксирует язык сообщения у получателя. Успех означает сохранение сообщения и исходящей задачи в одной транзакции. Доставку, повтор и шифрование обеспечивает существующий механизм DM. После успешной отправки открывается личная беседа с получателем. @@ -17,8 +21,11 @@ без обратного отсчёта и вычисления оставшегося времени. Нажатие на `utun://` в сообщении запускает существующий JOIN и показывает его результат. -Если клиент уже состоит в группе, открывается эта группа. Перенос длинной ссылки -не меняет её содержимое; на desktop перетаскивание выделяет текст без запуска JOIN. +Если клиент уже состоит в группе, открывается эта группа. Ссылка приглашения отображается +одной строкой с многоточием; нажатие и копирование используют полный адрес. +В Android долгое нажатие копирует ссылку, в desktop выделение сокращённой строки +копирует ссылку целиком без запуска JOIN. Обычные текстовые PM с вручную +вставленными ссылками сохраняют текстовое отображение. ## Контракт операции @@ -44,10 +51,12 @@ JOIN во вторую группу может использовать уже - `tests/test_dm_invite`: настоящая UDP-доставка ссылки в другую группу, JOIN, репликация участника и отправка группового сообщения после вступления; - отмена, BUSY, неверная группа, rollback при ошибке commit и остановка DM. + отмена, BUSY, неверная группа, rollback при ошибке commit и остановка DM; + передача названия с Unicode, кавычками и переводом строки. - `tests/test_chat_join`, `tests/test_chat_join_e2e`, `tests/test_dm_e2e`: существующие сценарии регистрации ключей, JOIN и PM-доставки. -- Qt `test_invite_links`: переносы двух ссылок, их полное содержимое при нажатии, +- Qt `test_invite_links`: одна строка приглашения на разных ширинах, полный адрес + при нажатии и копировании, переносы двух обычных ссылок, их полное содержимое при нажатии, выделение текста и выбор получателя кнопкой в строке участника. - Qt `test_emoji_playback`: перетаскивание ссылки не активирует подключение.