Wiki » History » Revision 5
Revision 4 (Redmine Admin, 07/22/2026 09:53 PM) → Revision 5/8 (Redmine Admin, 07/23/2026 09:09 PM)
# Green Chat 0.2.2 Desktop 0.2.1 — памятка бета-тестера Beta Update Спасибо, что участвуете в тестировании Green Chat. Эта памятка объясняет, как подготовиться к бете, что особенно важно проверить в версии 0.2.2 Дата выпуска: **22 июля 2026 года**. Версия 0.2.1 исправляет проблемы доставки сообщений и как уведомлений, составить полезный баг-репорт. обнаруженные во время бета-тестирования 0.2.0. ## Версии беты 0.2.x Главное Текущая версия — **0.2.2**. Памятка покрывает все возможности линейки 0.2.x; полные списки изменений по версиям: - **[0.2.2](beta-changelog-0.2.2.md)** (23 июля 2026) — уведомления, звук и Доставка больше не зависит только от WebSocket-событий. Клиент сверяет счётчики локальное состояние с сервером после подключения, при свёрнутом или скрытом в tray окне; быстрое переподключение ошибке live-доставки после сна компьютера; исправления восстановления личных чатов. Серверных изменений нет. и каждые две минуты, пока соединение активно. - **[0.2.1](beta-changelog-0.2.1.md)** (22 июля 2026) — надёжная доставка: Пропущенные во время офлайна сообщения автоматически догружаются в клиент сверяет состояние правильном порядке вместе с сервером необходимыми MLS-коммитами. - Счётчики непрочитанных, список тредов и догружает пропущенные сообщения; сохранённые сообщения обновляются восстановление личного чата после logout и повторного входа собеседника; диагностический лог `glchat.log`. Требует обновлённый сервер. каждой сверки с сервером. - **[0.2.0](beta-changelog-0.2.0.md)** (20 июля 2026) — роли и управление Для сообщений, полученных через фоновую сверку, показывается одно сводное участниками каналов, раздел «Треды», карточки профилей, сохранённые уведомление вместо серии попапов, даже если окно получило фокус сразу после сообщения, история загрузок, просмотрщик изображений выхода ноутбука из сна. Если звук сообщений включён, сводное уведомление сопровождается нативным звуком. Настройки DND, mute, quiet hours и GIF, звуковые режим уведомления, отметка вышедших со всех устройств пользователей. уведомлений канала продолжают учитываться. ## Перед началом тестирования Исправление личных сообщений после повторного входа 1. Установите версию **0.2.2 на все свои устройства**. Старые клиенты несовместимы с новой синхронизацией участников каналов - Исправлена ситуация, когда после logout и могут работать некорректно. 2. Проверьте номер версии в **Settings → Profile**. 3. По возможности подготовьте два тестовых аккаунта и два повторного входа личный чат оставался доступен, но новые сообщения фактически шифровались без устройства для одного из аккаунтов. Это позволит проверить доставку, роли и мультиустройство. собеседника. 4. Не используйте единственный рабочий аккаунт для сценариев с выходом из системы: logout безвозвратно удаляет историю на текущем устройстве. 5. Бета-версия может содержать ошибки. Не отправляйте через неё данные, потеря которых будет критичной. ## Как устроено хранение сообщений Green Chat — корпоративный мессенджер со сквозным шифрованием MLS. Сервер хранит сообщения - Клиент автоматически обнаруживает отсутствующее устройство участника и файлы повторно добавляет его в зашифрованном виде и не располагает ключами для MLS-группу личного чата. их чтения. Из этого следуют важные ограничения: - история расшифровывается и хранится на устройствах пользователя; Одновременное восстановление несколькими устройствами защищено коротким серверным lease: проигравший клиент останавливается до изменения локальной MLS-эпохи. - сервер и служба поддержки Пока устройство собеседника ещё не могут прочитать переписку или восстановить восстановлено в личном чате, поле ввода уничтоженные ключи; - выход из аккаунта очищает локальную историю и ключи на заменяется сообщением о синхронизации, а отправка временно блокируется. Отметка `✓✓` в этом устройстве; состоянии заменяется честным предупреждением `not delivered`. - После успешного восстановления чат разблокируется по долговременному состоянию клиента, даже если выйти со всех устройств, прежнюю историю восстановить будет нельзя; соответствующее WebSocket-событие потерялось. - для поиска ошибки особенно важны точное время события, участники, канал и Если KeyPackage нового устройства ещё загружается, повторная попытка теперь последовательность действий. ## Что особенно важно проверить выполняется через несколько секунд с постепенным увеличением интервала. Чат больше не зависает в бете 0.2.x ### 1. Обычные сообщения и восстановление соединения (изменено в 0.2.1 и 0.2.2) - Отправьте сообщения в канал и личный чат. состоянии `re-syncing` из-за двухминутного ожидания, которое при каждом перезапуске начиналось заново. - Проверьте доставку текста, эмодзи, форматирования и ответов в треде. Исправлена ложная блокировка отправки после password login или привязки устройства: старые клиенты создавали пустую MLS BasicCredential, поэтому два реальных листа ошибочно считались одним пользователем. Готовность личного чата теперь проверяется по фактическому MLS roster, а новые устройства сохраняют credential с серверным username. - Полностью отключите сеть на одном После выхода ноутбука из устройств на несколько минут, затем включите её обратно. - Убедитесь, что сна клиент подключился самостоятельно и получил сообщения, больше не ждёт до 90 секунд, считая старый отправленные во время офлайна. - Проверьте, что статус online/offline обновляется без повторного открытия WebSocket подключённым. Resume watchdog обнаруживает паузу системных часов, канала. переподключается в течение нескольких секунд, сразу забирает пропущенные сообщения и восстанавливает видимый другим устройствам presence. Сообщение со статусом `sent`, которое после восстановления соединения так ## Надёжность и не появилось у получателя, считается важным багом. диагностика ### 2. Треды (новое в 0.2.0) - Создайте несколько тредов в разных каналах. Ошибка обработки live-сообщения теперь запускает ускоренную сверку с сервером вместо ожидания следующего переподключения. - Откройте раздел **Threads** и проверьте сортировку Исправлена потеря полной проверки групп, если переподключение совпало по последней активности. времени с уже выполняющейся фоновой сверкой. - Переключите фильтры **All** и **Unread**. Отложенные reconcile-задачи корректно отменяются при logout. - Нажмите на тред Desktop-клиент пишет диагностический лог в списке и убедитесь, что открылись правильный канал и `glchat.log` в каталоге данных исходное сообщение. приложения. - Ответьте Добавлена ротация лога при достижении 5 MiB с `@mention`, добавьте вложение или перетащите файл в область сохранением одной предыдущей ответа. копии `glchat.log.old`, включая повторную ротацию на Windows. ## Сервер - Добавлены авторизованные endpoints состояния синхронизации: хвосты сообщений по группам и отсутствующие membership-листы. - При наличии второго устройства проверьте синхронизацию прочитанности тредов. Добавлен одноразовый lease-token для безопасного восстановления membership. - Добавлена метрика Prometheus для количества обнаруженных membership gaps. - Добавлена миграция `022_membership_repair_claims.sql`. ### 3. Роли Содержимое сообщений, ключи и участники каналов (новое настройки уведомлений по-прежнему не передаются серверу в 0.2.0) открытом виде. Новые endpoints работают только с уже известными серверу метаданными групп, устройств и последовательностей сообщений. ## Обновление Для полноценной проверки нужны минимум три аккаунта: владелец, модератор исправлений установите **Green Chat Desktop 0.2.1 на все свои устройства**. Сервер также должен быть обновлён и иметь применённую миграцию обычный участник. `022_membership_repair_claims.sql`. Особенно важно повторно проверить: 1. Создайте приватный канал и пригласите двух участников. получение сообщений после временного отключения сети; 2. Убедитесь, что создатель отмечен как owner. непрочитанные, звук и системный попап после фоновой догрузки; 3. Назначьте личный чат после logout и повторного входа одного участника модератором и затем снимите роль. из участников; 4. Проверьте, что owner может приглашать и исключать участников. одновременную работу двух устройств одного аккаунта; 5. Проверьте, что moderator может управлять обычными участниками, но не владельцем или другим модератором. 6. Исключите обычного участника: канал должен сразу исчезнуть у него из интерфейса, а новые сообщения не должны быть доступны. 7. Повторно пригласите участника и убедитесь, что устаревшее событие удаления не убирает канал снова. наличие `glchat.log` после перезапуска desktop-приложения. Дополнительно можно проверить выход из канала: # VERSIONS CHANGE LOG - обычный участник ## Green Chat Desktop 0.2.1 — Beta Update Дата выпуска: **22 июля 2026 года**. Версия 0.2.1 исправляет проблемы доставки сообщений и модератор могут выйти самостоятельно; уведомлений, обнаруженные во время бета-тестирования 0.2.0. ## Главное - owner Доставка больше не зависит только от WebSocket-событий. Клиент сверяет локальное состояние с другими участниками должен сначала назначить модератора; - сервером после подключения, при выходе owner владение автоматически переходит назначенному модератору; - из DM выйти нельзя, но его можно скрыть через **Remove for me**; - для публичного канала исключение участника недоступно, поскольку он может ошибке live-доставки вступить обратно самостоятельно. ### 4. Профили (новое в 0.2.0) - Заполните аватар, должность, описание и рабочий телефон. каждые две минуты, пока соединение активно. - Откройте карточку профиля из Пропущенные во время офлайна сообщения и панели участников. автоматически догружаются в правильном порядке вместе с необходимыми MLS-коммитами. - Проверьте копирование email Счётчики непрочитанных, список тредов и телефона. сохранённые сообщения обновляются после каждой сверки с сервером. - Измените аватар или данные профиля на одном устройстве Для сообщений, полученных через фоновую сверку, показывается одно сводное уведомление вместо серии попапов, даже если окно получило фокус сразу после выхода ноутбука из сна. Если звук сообщений включён, сводное уведомление сопровождается нативным звуком. Настройки DND, mute, quiet hours и убедитесь, что режим изменения появились у другого пользователя без перезапуска приложения. уведомлений канала продолжают учитываться. Поля профиля видны всем пользователям организации — это справочная информация, а не приватная часть переписки. ## Исправление личных сообщений после повторного входа ### 5. Поиск и действия с сообщениями - Найдите старое сообщение через поиск Исправлена ситуация, когда после logout и перейдите к нему. повторного входа личный чат оставался доступен, но новые сообщения фактически шифровались без устройства собеседника. - Убедитесь, что чат прокрутился к правильному сообщению Клиент автоматически обнаруживает отсутствующее устройство участника и выделил его. повторно добавляет его в MLS-группу личного чата. - Проверьте доступные контекстные действия: ответ, редактирование, сохранение, Одновременное восстановление несколькими устройствами защищено коротким закрепление и удаление там, где они разрешены. серверным lease: проигравший клиент останавливается до изменения локальной MLS-эпохи. - Отредактируйте длинное сообщение и ответ Пока устройство собеседника ещё не восстановлено в треде: личном чате, поле ввода должно увеличиваться вместе с текстом. - Попробуйте превысить допустимую длину сообщения. Клиент должен показать заменяется сообщением о синхронизации, а отправка временно блокируется. понятное ограничение, а не зависнуть или молча потерять текст. Поиск работает по локально доступной истории устройства. Отсутствие сообщения, которого никогда не было на Отметка `✓✓` в этом устройстве, само по себе не является багом. ### 6. Файлы, изображения и GIF (расширено в 0.2.0) - выберите файл через кнопку вложения и убедитесь, что он сначала появился в состоянии заменяется честным предупреждением области подготовки к отправке; `not delivered`. - удалите подготовленный файл, не отправляя сообщение; - перетащите файлы в основной После успешного восстановления чат и отдельно в открытый тред; - вставьте изображение из буфера обмена; - отправьте несколько файлов и проверьте, что они остались в исходном чате, разблокируется по долговременному состоянию клиента, даже если во время загрузки переключиться на другой канал; соответствующее WebSocket-событие потерялось. - откройте изображение во встроенном просмотрщике; - проверьте воспроизведение GIF и отсутствие чрезмерной нагрузки интерфейса; - удалите собственное сообщение Если KeyPackage нового устройства ещё загружается, повторная попытка теперь выполняется через несколько секунд с вложением и убедитесь, что файл постепенным увеличением интервала. Чат больше не зависает в состоянии `re-syncing` из-за двухминутного ожидания, доступен из чата; которое при каждом перезапуске начиналось заново. - скачайте файл и проверьте его содержимое Исправлена ложная блокировка отправки после расшифровки. Ошибки загрузки, повреждённый скачанный файл, вложение в неправильном канале password login или зависшая подготовка файла считаются багами. ### 7. Сохранённые сообщения и загрузки (новое в 0.2.0) - Сохраните сообщения из разных каналов через контекстное меню. - Откройте раздел **Saved**, перейдите из него к исходному сообщению и удалите привязки закладку. - При наличии второго устройства: старые клиенты создавали пустую MLS BasicCredential, поэтому два реальных листа ошибочно считались одним пользователем. Готовность личного чата теперь проверяется по фактическому MLS roster, а новые устройства проверьте, что список сохранённых сообщений синхронизировался. сохраняют credential с серверным username. - Скачайте несколько файлов и откройте раздел **Downloads**. - Проверьте действия **Open file**, **Show in folder** и **Remove from history**. Сохранённые сообщения синхронизируются между устройствами и видны только владельцу аккаунта. История загрузок хранится только на конкретном устройстве. Удаление записи После выхода ноутбука из Downloads сна клиент больше не удаляет сам файл с диска. Файлы, скачанные ждёт до установки 0.2.0, 90 секунд, считая старый WebSocket подключённым. Resume watchdog обнаруживает паузу системных часов, переподключается в историю автоматически не добавляются. ### 8. Уведомления и звук (изменено в 0.2.2) - Перед проверкой убедитесь, что в **Settings → Notifications** выключен течение нескольких секунд, сразу забирает пропущенные **Pause all notifications**: включённый тумблер намеренно отключает попапы и звук, при этом сообщения и счётчики продолжают приходить. Кнопка **Send test** проверяет только доставку до операционной системы восстанавливает видимый другим устройствам presence. ## Надёжность и работает даже при включённой паузе. диагностика - В **Settings → Notifications** нажмите **Send test**. - Оставьте окно приложения без фокуса и попросите другого тестера отправить Ошибка обработки live-сообщения теперь запускает ускоренную сверку с DM — должен появиться системный попап и прозвучать звук. сервером вместо ожидания следующего переподключения. - Полностью сверните окно или скройте его в tray и попросите отправить ещё Исправлена потеря полной проверки групп, если переподключение совпало по один DM: попап и звук должны прийти, не открывая окно, а после открытия счётчики и сами сообщения должны времени с уже быть на месте без ручного обновления. выполняющейся фоновой сверкой. - Проверьте `@mention` в канале. Обычное сообщение без упоминания по умолчанию не показывает попап. Отложенные reconcile-задачи корректно отменяются при logout. - Отключите звук Desktop-клиент пишет диагностический лог в настройках и убедитесь, что новые сообщения приходят без `glchat.log` в каталоге данных звукового сигнала. приложения. - Проверьте DND, mute канала и quiet hours. - Полностью закройте приложение через tray → **Quit**, отправьте на аккаунт Добавлена ротация лога при достижении 5 MiB с сохранением одной предыдущей DM и проверьте email-уведомление, если SMTP включён копии `glchat.log.old`, включая повторную ротацию на сервере. Windows. Попапы показывает запущенное приложение. После полного выхода через **Quit** desktop-клиент не может показать системное уведомление; в этом случае для DM может прийти только email. ## Сервер ### 9. Несколько устройств - Войдите на второе устройство Добавлены авторизованные endpoints состояния синхронизации: хвосты сообщений по паролю или привяжите его по QR-коду. - Создайте приватный канал группам и пригласите пользователя с несколькими активными устройствами. отсутствующие membership-листы. - Убедитесь, что канал, его название и новые сообщения появились на всех устройствах приглашённого. Добавлен одноразовый lease-token для безопасного восстановления membership. - Проверьте синхронизацию прочитанности, черновиков, сохранённых сообщений и скрытых чатов. Добавлена метрика Prometheus для количества обнаруженных membership gaps. - Измените аватар Добавлена миграция `022_membership_repair_claims.sql`. Содержимое сообщений, ключи и убедитесь, что он обновился на других клиентах. настройки уведомлений по-прежнему не передаются - Закройте одно устройство, продолжите работу на втором, затем верните первое серверу в сеть открытом виде. Новые endpoints работают только с уже известными серверу метаданными групп, устройств и проверьте восстановление состояния. последовательностей сообщений. ### 10. Выход со всех устройств (новое в 0.2.0) ## Обновление Этот сценарий выполняйте только Для проверки исправлений установите **Green Chat Desktop 0.2.1 на специально созданном тестовом аккаунте. все свои Перед выходом убедитесь, что клиент подключён к серверу. устройства**. Особенно важно повторно проверить: 1. Выйдите из аккаунта на последнем активном устройстве и подтвердите предупреждение об удалении истории. получение сообщений после временного отключения сети; 2. У другого пользователя аккаунт должен получить отметку **Logged out** в списке DM, профиле, панели участников непрочитанные, звук и выборе пользователя. системный попап после фоновой догрузки; 3. В существующем DM история должна остаться читаемой, но поле отправки должно замениться предупреждением. личный чат после logout и повторного входа одного из участников; 4. Создание нового DM с вышедшим пользователем должно быть заблокировано. одновременную работу двух устройств одного аккаунта; 5. Отправьте в канал сообщение наличие `glchat.log` после перезапуска desktop-приложения. ## glchat Desktop 0.2.0 — Beta Update Изменения с его персональным `@mention`: сообщение должно отправиться остальным участникам, а автор должен увидеть предупреждение о недоставке упомянутому пользователю. 6. Снова войдите этим аккаунтом. Отметка Logged out должна исчезнуть у других пользователей. 9 по 20 июля 2026 года. Повторный вход создаёт новое активное устройство, но не возвращает историю, уничтоженную при logout. ## Что обязательно считать багом Новые возможности - Падение, зависание или бесконечная загрузка приложения. Добавлены роли владельца и модератора канала, управление участниками, выход из канала и локальное скрытие чатов. - Потеря уже отправленного сообщения или его появление в неправильном чате. Появились карточки профилей с аватаром, должностью, описанием и контактами. - Ошибка расшифровки, нечитаемый текст или повреждённый файл. Добавлен единый раздел «Треды» со всеми обсуждениями и фильтром непрочитанных. - Получение доступа к чужому каналу, профилю или данным без разрешения. Сообщения теперь можно сохранять в личные закладки с синхронизацией между устройствами. - Возможность обычного участника выполнить действие owner/moderator. Добавлена локальная история загрузок: файл можно открыть, показать в папке или убрать из списка. - Доступ исключённого участника к новым сообщениям приватного канала. Изображения открываются во встроенном просмотрщике, добавлена безопасная анимация GIF. - Расхождение каналов, ролей, сохранённых сообщений или прочитанности между устройствами, которое не исправляется после переподключения. Изображения из буфера обмена можно вставлять прямо в сообщение. - Отсутствие DM или `@mention`-уведомления при выполненных условиях доставки. Добавлены звуковые уведомления о новых сообщениях и настройка звука. - Неправильный адресат, канал Пользователи, вышедшие со всех устройств, теперь отмечаются в интерфейсе. Перед отправкой им личного сообщения или тред у вложения. - Неработающая кнопка, обрезанный интерфейс или нечитаемый текст, особенно в тёмной теме. упоминания показывается предупреждение. Проблемы безопасности, потерю данных и воспроизводимые падения отмечайте приоритетом **High**. ## Известные ограничения беты Улучшения интерфейса - Вход обычно доступен только по приглашению; вкладки создания свободного аккаунта может не быть. Добавлены контекстные действия для сообщений. - Автоматического обновления нет — новую версию нужно устанавливать вручную. Улучшены редакторы сообщений и ответов в тредах. - Windows может показать SmartScreen с предупреждением о неизвестном издателе. Добавлены упоминания пользователей в ответах треда. - Неподписанная macOS-сборка может быть заблокирована Gatekeeper. После переноса приложения Улучшена работа с вложениями: предварительная подготовка, drag-and-drop в `/Applications` выполните: ```sh xattr -cr "/Applications/Green Chat.app" ``` - На macOS системные попапы бета-сборки могут отображаться от имени **Script Editor**. треды и удаление отправленных файлов. - На части серверов отправка файлов Поиск теперь прокручивает чат до найденного сообщения и email-уведомления могут быть отключены. ограничивает слишком тяжёлые запросы. - Числовой бейдж учитывает DM Улучшены индикаторы присутствия, подсчёт участников и упоминания; обычное непрочитанное сообщение в канале отображается точкой. расположение боковых панелей. - Сообщение `SPKI pin mismatch` после плановой смены серверного ключа требует повторного входа. Клиент намеренно не принимает новый ключ молча. Если поведение не перечислено здесь и выглядит неправильным, лучше отправить После отправки сообщения чат автоматически прокручивается к нему. репорт. - Исправлено восстановление окна приложения из системного трея. ## Как оставить баг-репорт Исправления и стабильность Трекер: <https://bug.green-lab.space/projects/greenchat/issues/new>. Регистрация не нужна, репорт можно отправить анонимно. ### Что указать ```text Краткое название: что сломалось - Исправлена синхронизация каналов, участников и где Шаги: метаданных между несколькими устройствами. 1. … - Восстановлена доставка уведомлений после длительного офлайна. 2. … - Статус пользователя обновляется сразу после подключения. 3. … Ожидал: … - Исправлен учёт непрочитанных сообщений при переключении фокуса окна. Получил: … Окружение: - Green Chat 0.2.2 Исключённые каналы сразу удаляются из интерфейса, а устаревшие события больше не удаляют канал после повторного вступления. - ОС Исправлены отображение закреплённых файлов и версия привязка вложений к исходному чату. - один или несколько аккаунтов/устройств Добавлена корректная обработка максимальной длины сообщений. - название канала или DM Аватары профилей теперь обновляются в реальном времени. - точное время события и часовой пояс Воспроизводится: всегда / иногда / один раз Улучшено восстановление личных чатов после выхода всех участников со всех устройств. Дополнительно: скриншот или короткое видео ``` Для проблем синхронизации укажите ОС и версию клиента **на каждой стороне**, а также какое - При выходе устройство было офлайн. Трекер публичный. Не прикладывайте пароли, invite-коды, ключи, приватные логи или скриншоты с конфиденциальной перепиской. Перед отправкой замажьте лишние данные. ### Приоритет | Приоритет | Когда использовать | |---|---| | `Normal` | Большинство ошибок интерфейса отзывается на сервере, чтобы не оставлять неактивные устройства и поведения | | `High` | Падение, потеря данных, недоставка сообщений, нарушение прав или безопасности | | `Urgent` / `Immediate` | Не выбирайте без отдельной просьбы команды | ключи. ## Быстрая диагностика уведомлений Сервер и эксплуатация 1. Нажмите **Settings → Notifications → Send test**. - Добавлены Prometheus-метрики для HTTP, WebSocket, PostgreSQL, Redis и Go runtime. 2. Если тест пришёл, проверьте **Pause all notifications**, DND, mute, quiet hours - Подготовлены базовые правила мониторинга и фокус окна: Send test обходит эти настройки, а обычные уведомления — нет. алертов. 3. Для канала используйте персональный `@mention`; обычное сообщение может не создавать попап. 4. Если приложение было закрыто через tray → Quit, системного попапа быть не должно. 5. Если Send test не работает при разрешённых уведомлениях ОС, создайте баг-репорт - Улучшена конфигурация TLS для файлового хранилища. Итого: **40 коммитов и обязательно укажите операционную систему. 178 изменённых файлов** в ветке `main`.