Project

General

Profile

Wiki » History » Version 4

Redmine Admin, 07/22/2026 09:53 PM

1 3 Redmine Admin
# Green Chat Desktop 0.2.1 — Beta Update
2
3
Дата выпуска: **22 июля 2026 года**.
4
5
Версия 0.2.1 исправляет проблемы доставки сообщений и уведомлений,
6
обнаруженные во время бета-тестирования 0.2.0.
7
8
## Главное
9
10
- Доставка больше не зависит только от WebSocket-событий. Клиент сверяет
11
  локальное состояние с сервером после подключения, при ошибке live-доставки
12 1 Redmine Admin
  и каждые две минуты, пока соединение активно.
13
- Пропущенные во время офлайна сообщения автоматически догружаются в
14
  правильном порядке вместе с необходимыми MLS-коммитами.
15 3 Redmine Admin
- Счётчики непрочитанных, список тредов и сохранённые сообщения обновляются
16
  после каждой сверки с сервером.
17
- Для сообщений, полученных через фоновую сверку, показывается одно сводное
18 4 Redmine Admin
  уведомление вместо серии попапов, даже если окно получило фокус сразу после
19
  выхода ноутбука из сна. Если звук сообщений включён, сводное уведомление
20
  сопровождается нативным звуком. Настройки DND, mute, quiet hours и режим
21 3 Redmine Admin
  уведомлений канала продолжают учитываться.
22
23
## Исправление личных сообщений после повторного входа
24
25
- Исправлена ситуация, когда после logout и повторного входа личный чат
26
  оставался доступен, но новые сообщения фактически шифровались без устройства
27
  собеседника.
28
- Клиент автоматически обнаруживает отсутствующее устройство участника и
29
  повторно добавляет его в MLS-группу личного чата.
30
- Одновременное восстановление несколькими устройствами защищено коротким
31
  серверным lease: проигравший клиент останавливается до изменения локальной
32 1 Redmine Admin
  MLS-эпохи.
33
- Пока устройство собеседника ещё не восстановлено в личном чате, поле ввода
34
  заменяется сообщением о синхронизации, а отправка временно блокируется.
35
  Отметка `✓✓` в этом состоянии заменяется честным предупреждением
36
  `not delivered`.
37
- После успешного восстановления чат разблокируется по долговременному
38
  состоянию клиента, даже если соответствующее WebSocket-событие потерялось.
39 4 Redmine Admin
- Если KeyPackage нового устройства ещё загружается, повторная попытка теперь
40
  выполняется через несколько секунд с постепенным увеличением интервала. Чат
41
  больше не зависает в состоянии `re-syncing` из-за двухминутного ожидания,
42
  которое при каждом перезапуске начиналось заново.
43
- Исправлена ложная блокировка отправки после password login или привязки
44
  устройства: старые клиенты создавали пустую MLS BasicCredential, поэтому
45
  два реальных листа ошибочно считались одним пользователем. Готовность личного
46
  чата теперь проверяется по фактическому MLS roster, а новые устройства
47
  сохраняют credential с серверным username.
48
- После выхода ноутбука из сна клиент больше не ждёт до 90 секунд, считая старый
49
  WebSocket подключённым. Resume watchdog обнаруживает паузу системных часов,
50
  переподключается в течение нескольких секунд, сразу забирает пропущенные
51
  сообщения и восстанавливает видимый другим устройствам presence.
52 3 Redmine Admin
53
## Надёжность и диагностика
54
55
- Ошибка обработки live-сообщения теперь запускает ускоренную сверку с
56
  сервером вместо ожидания следующего переподключения.
57
- Исправлена потеря полной проверки групп, если переподключение совпало по
58
  времени с уже выполняющейся фоновой сверкой.
59
- Отложенные reconcile-задачи корректно отменяются при logout.
60
- Desktop-клиент пишет диагностический лог в `glchat.log` в каталоге данных
61
  приложения.
62
- Добавлена ротация лога при достижении 5 MiB с сохранением одной предыдущей
63
  копии `glchat.log.old`, включая повторную ротацию на Windows.
64
65
## Сервер
66
67
- Добавлены авторизованные endpoints состояния синхронизации: хвосты сообщений
68
  по группам и отсутствующие membership-листы.
69
- Добавлен одноразовый lease-token для безопасного восстановления membership.
70
- Добавлена метрика Prometheus для количества обнаруженных membership gaps.
71
- Добавлена миграция `022_membership_repair_claims.sql`.
72
73
Содержимое сообщений, ключи и настройки уведомлений по-прежнему не передаются
74
серверу в открытом виде. Новые endpoints работают только с уже известными
75
серверу метаданными групп, устройств и последовательностей сообщений.
76
77
## Обновление
78
79 1 Redmine Admin
Для проверки исправлений установите **Green Chat Desktop 0.2.1 на все свои
80
устройства**. Сервер также должен быть обновлён и иметь применённую миграцию
81
`022_membership_repair_claims.sql`.
82
83
Особенно важно повторно проверить:
84
85
1. получение сообщений после временного отключения сети;
86
2. непрочитанные, звук и системный попап после фоновой догрузки;
87
3. личный чат после logout и повторного входа одного из участников;
88
4. одновременную работу двух устройств одного аккаунта;
89
5. наличие `glchat.log` после перезапуска desktop-приложения.
90
91 4 Redmine Admin
# VERSIONS CHANGE LOG
92 1 Redmine Admin
93 4 Redmine Admin
## Green Chat Desktop 0.2.1 — Beta Update
94 1 Redmine Admin
95 4 Redmine Admin
Дата выпуска: **22 июля 2026 года**.
96 1 Redmine Admin
97 4 Redmine Admin
Версия 0.2.1 исправляет проблемы доставки сообщений и уведомлений,
98
обнаруженные во время бета-тестирования 0.2.0.
99 1 Redmine Admin
100 4 Redmine Admin
## Главное
101 1 Redmine Admin
102 4 Redmine Admin
- Доставка больше не зависит только от WebSocket-событий. Клиент сверяет
103
  локальное состояние с сервером после подключения, при ошибке live-доставки
104
  и каждые две минуты, пока соединение активно.
105
- Пропущенные во время офлайна сообщения автоматически догружаются в
106
  правильном порядке вместе с необходимыми MLS-коммитами.
107
- Счётчики непрочитанных, список тредов и сохранённые сообщения обновляются
108
  после каждой сверки с сервером.
109
- Для сообщений, полученных через фоновую сверку, показывается одно сводное
110
  уведомление вместо серии попапов, даже если окно получило фокус сразу после
111
  выхода ноутбука из сна. Если звук сообщений включён, сводное уведомление
112
  сопровождается нативным звуком. Настройки DND, mute, quiet hours и режим
113
  уведомлений канала продолжают учитываться.
114 1 Redmine Admin
115 4 Redmine Admin
## Исправление личных сообщений после повторного входа
116 1 Redmine Admin
117 4 Redmine Admin
- Исправлена ситуация, когда после logout и повторного входа личный чат
118
  оставался доступен, но новые сообщения фактически шифровались без устройства
119
  собеседника.
120
- Клиент автоматически обнаруживает отсутствующее устройство участника и
121
  повторно добавляет его в MLS-группу личного чата.
122
- Одновременное восстановление несколькими устройствами защищено коротким
123
  серверным lease: проигравший клиент останавливается до изменения локальной
124
  MLS-эпохи.
125
- Пока устройство собеседника ещё не восстановлено в личном чате, поле ввода
126
  заменяется сообщением о синхронизации, а отправка временно блокируется.
127
  Отметка `✓✓` в этом состоянии заменяется честным предупреждением
128
  `not delivered`.
129
- После успешного восстановления чат разблокируется по долговременному
130
  состоянию клиента, даже если соответствующее WebSocket-событие потерялось.
131
- Если KeyPackage нового устройства ещё загружается, повторная попытка теперь
132
  выполняется через несколько секунд с постепенным увеличением интервала. Чат
133
  больше не зависает в состоянии `re-syncing` из-за двухминутного ожидания,
134
  которое при каждом перезапуске начиналось заново.
135
- Исправлена ложная блокировка отправки после password login или привязки
136
  устройства: старые клиенты создавали пустую MLS BasicCredential, поэтому
137
  два реальных листа ошибочно считались одним пользователем. Готовность личного
138
  чата теперь проверяется по фактическому MLS roster, а новые устройства
139
  сохраняют credential с серверным username.
140
- После выхода ноутбука из сна клиент больше не ждёт до 90 секунд, считая старый
141
  WebSocket подключённым. Resume watchdog обнаруживает паузу системных часов,
142
  переподключается в течение нескольких секунд, сразу забирает пропущенные
143
  сообщения и восстанавливает видимый другим устройствам presence.
144 2 Redmine Admin
145 4 Redmine Admin
## Надёжность и диагностика
146 2 Redmine Admin
147 4 Redmine Admin
- Ошибка обработки live-сообщения теперь запускает ускоренную сверку с
148
  сервером вместо ожидания следующего переподключения.
149
- Исправлена потеря полной проверки групп, если переподключение совпало по
150
  времени с уже выполняющейся фоновой сверкой.
151
- Отложенные reconcile-задачи корректно отменяются при logout.
152
- Desktop-клиент пишет диагностический лог в `glchat.log` в каталоге данных
153
  приложения.
154
- Добавлена ротация лога при достижении 5 MiB с сохранением одной предыдущей
155
  копии `glchat.log.old`, включая повторную ротацию на Windows.
156 2 Redmine Admin
157 4 Redmine Admin
## Сервер
158 2 Redmine Admin
159 4 Redmine Admin
- Добавлены авторизованные endpoints состояния синхронизации: хвосты сообщений
160
  по группам и отсутствующие membership-листы.
161
- Добавлен одноразовый lease-token для безопасного восстановления membership.
162
- Добавлена метрика Prometheus для количества обнаруженных membership gaps.
163
- Добавлена миграция `022_membership_repair_claims.sql`.
164 2 Redmine Admin
165 4 Redmine Admin
Содержимое сообщений, ключи и настройки уведомлений по-прежнему не передаются
166
серверу в открытом виде. Новые endpoints работают только с уже известными
167
серверу метаданными групп, устройств и последовательностей сообщений.
168 2 Redmine Admin
169 4 Redmine Admin
## Обновление
170 2 Redmine Admin
171 4 Redmine Admin
Для проверки исправлений установите **Green Chat Desktop 0.2.1 на все свои
172
устройства**.
173 2 Redmine Admin
174 4 Redmine Admin
Особенно важно повторно проверить:
175 2 Redmine Admin
176 4 Redmine Admin
1. получение сообщений после временного отключения сети;
177
2. непрочитанные, звук и системный попап после фоновой догрузки;
178
3. личный чат после logout и повторного входа одного из участников;
179
4. одновременную работу двух устройств одного аккаунта;
180
5. наличие `glchat.log` после перезапуска desktop-приложения.
181 2 Redmine Admin
182 4 Redmine Admin
## glchat Desktop 0.2.0 — Beta Update
183 2 Redmine Admin
184
Изменения с 9 по 20 июля 2026 года.
185
186
## Новые возможности
187
188
- Добавлены роли владельца и модератора канала, управление участниками, выход из канала и локальное скрытие чатов.
189
- Появились карточки профилей с аватаром, должностью, описанием и контактами.
190
- Добавлен единый раздел «Треды» со всеми обсуждениями и фильтром непрочитанных.
191
- Сообщения теперь можно сохранять в личные закладки с синхронизацией между устройствами.
192
- Добавлена локальная история загрузок: файл можно открыть, показать в папке или убрать из списка.
193
- Изображения открываются во встроенном просмотрщике, добавлена безопасная анимация GIF.
194
- Изображения из буфера обмена можно вставлять прямо в сообщение.
195
- Добавлены звуковые уведомления о новых сообщениях и настройка звука.
196
- Пользователи, вышедшие со всех устройств, теперь отмечаются в интерфейсе. Перед отправкой им личного сообщения или упоминания показывается предупреждение.
197
198
## Улучшения интерфейса
199
200 1 Redmine Admin
- Добавлены контекстные действия для сообщений.
201
- Улучшены редакторы сообщений и ответов в тредах.
202
- Добавлены упоминания пользователей в ответах треда.
203
- Улучшена работа с вложениями: предварительная подготовка, drag-and-drop в треды и удаление отправленных файлов.
204
- Поиск теперь прокручивает чат до найденного сообщения и ограничивает слишком тяжёлые запросы.
205
- Улучшены индикаторы присутствия, подсчёт участников и расположение боковых панелей.
206
- После отправки сообщения чат автоматически прокручивается к нему.
207
- Исправлено восстановление окна приложения из системного трея.
208
209
## Исправления и стабильность
210
211
- Исправлена синхронизация каналов, участников и метаданных между несколькими устройствами.
212
- Восстановлена доставка уведомлений после длительного офлайна.
213
- Статус пользователя обновляется сразу после подключения.
214
- Исправлен учёт непрочитанных сообщений при переключении фокуса окна.
215
- Исключённые каналы сразу удаляются из интерфейса, а устаревшие события больше не удаляют канал после повторного вступления.
216
- Исправлены отображение закреплённых файлов и привязка вложений к исходному чату.
217
- Добавлена корректная обработка максимальной длины сообщений.
218
- Аватары профилей теперь обновляются в реальном времени.
219
- Улучшено восстановление личных чатов после выхода всех участников со всех устройств.
220
- При выходе устройство отзывается на сервере, чтобы не оставлять неактивные устройства и ключи.
221
222
## Сервер и эксплуатация
223
224
- Добавлены Prometheus-метрики для HTTP, WebSocket, PostgreSQL, Redis и Go runtime.
225
- Подготовлены базовые правила мониторинга и алертов.
226
- Улучшена конфигурация TLS для файлового хранилища.
227
228
Итого: **40 коммитов и 178 изменённых файлов** в ветке `main`.