MyChat 8.4 — свой мессенджер с шифрованием

  1. Расширение скриптового движка
  2. Улучшения MyChat для Android
  3. Система кеширования WEB-сервера
  4. Все изменения общим списком + история разработки
  5. Как обновиться на последнюю версию?

1. Расширение скриптового движка


В MSL теперь можно использовать класс для работы со строками — TStringList. В комплекте 7 свойств и 13 методов. Быстрая загрузка текстовых файлов в память, сортировки, вставки, удаления и поиск.

Улучшена поддержка динамических массивов. В новой версии мы добавили несколько функций для работы с датой и временем в стандарте ISO, функции для профилирования скриптов и работы с пользователями.

Функция mSendPrivateMessage изменена (убран последний параметр bSaveToHistory), поэтому проверьте свои работающие скрипты.

Также из библиотеки удалена функция mGetUserCID, как устаревшая.


2. Улучшения MyChat для Android


В приложении можно скрыть личные и общие контакты, согласно набора прав группы пользователей на сервере. Если оба правила отключены, то на главном экране не будет показываться вкладка "Контакты".

Если вы подключаетесь к серверу по QR-коду, в настройки автоматически добавляется "внешний" адрес вашего сервера, специально для автоматического переключения между сетями. Когда вы на работе — приложение подключается по Wi-Fi внутри локальной сети компании, когда в дороге или дома — на внешний адрес, через интернет.

Убрали всплывающее окошко уведомления о том, что пропала сеть или сервер недоступен, теперь кратковременно показывается ненавязчивый статус:

Отсутствие подключения на MyChat для Android

Также добавили правило в группах прав для Android-пользователей "Отображать вкладку "Звонки" на главном экране". Если она вам не нужна — можно выключить.


3. Система кеширования WEB-сервера


Все файлы, которые заливаются на сервер, теперь кешируются в памяти. Также в кеш попадает WEB-админка, справка, встроенный форум и канбан-доска.

Это даёт значительный прирост скорости для работы всех WEB-сервисов и экономит трафик, потому что данные сжимаются GZIP (если в этом есть смысл, конечно. Например, JPG-изображения или ZIP-архивы система не сжимает).

Если сервер видит, что к файлам нет обращений — они автоматически удаляются из памяти.

Кеширование WEB-сервера в MyChat 8.4

В админке сервера MyChat мы сделали специальный инструмент для более тонкой настройки системы кеширования.

По умолчанию система кеширования включена и настроена на оптимальное быстродействие, но вы можете её отключить.


4. Все изменения общим списком + история разработки


История разработки версии с комментариями разработчиков

MyChat Client

[+] (Android) добавлена обработка правил на отображение личного и общего списка контактов. Также если оба этих правила выключены, на главном экане не будет показываться вкладка "Контакты";

[*] (Android) переработана система отображения отсутствия подключения к серверу (при переключении между сетями или если сервер недоступен). Теперь вместо высплывающего окошка внизу статус подключения будет отображаться в тулбаре;
[*] если включить фильтр в диалогах или в контактах, а затем кликнуть по результату — фильтр автоматически снимается;
[*] улучшен рендеринг личного списка контактов, теперь хорошо видно группы и выделенных пользователей, даже если окно не в фокусе;
[*] обновлена библиотека проверки правописания Hunspell;
[*] автозамена запятых на точки при вводе адреса сервера в менеджере учётных записей и в мастере первого подключения;
[*] при подключении Android-пользователей по QR-коду, если нет альтернативного адреса сервера, автоматически подставляется внешний host сервера MyChat, который указывается в настройках MyChat Server (админка, "Настройки", "Сетевые настройки", "IP адрес или Host сервера для внешних клиентов");
[*] уменьшена нагрузка на сервер при запросах аватаров пользователей;

[-] (Android) входящий звонок в некоторых случаях мог не проходить в локальной сети. Исправлено;
[-] (Linux)(macOS)(Web) не отображалось всплывающее уведомление о непрочитанных сообщениях в конференциях. Исправлено;
[-] (Android) неправильно отображались удаленные сообщения. Исправлено;
[-] (Linux)(macOS)(Web) нельзя было удалить Email в своем профиле. Исправлено;
[-] (Linux)(macOS)(Web) ошибка при изгнании пользователя приводила к отключению. Исправлено;
[-] неправильно отображались индикаторы непрочитанных сообщений возле чатов и конференций, если их больше 100. Исправлено;
[-] (Android)ошибка во время запуска приложения во "Втором пространстве" на устройствах Xiaomi. Исправлено;
[-] ошибка ID: F4DCFCCF, иногда возникала при просмотре информации о пользователя в его профиле (F4)
[-] "Скопировать ссылку" на LAN-линке работало неправильно, копировался текст описания, а не сама ссылка;
[-] если начать набирать текст, потом зайти в настройки (Alt+O), а потом закрыть окно настроек, то текст черновика исчезал;
[-] (Android) при сканировании QR-кодов, не подставлялся логин в поле для его ввода. Исправлено
[-] (Android) если во время звонка с сервера приходил неполный набор IP-адресов, звонок не происходил. Исправлено

MyChat Server

[+] добавлено динамическое кеширование файлов WEB-сервера;
[+] новое правило в группах прав "Android", "Отображать вкладку "Звонки" на главном экране";
[+] (MSL) класс TStringList, 7 свойств и 13 методов для быстрой обработки текстовых списков и файлов;
[+] (MSL) функция Frac для получения дробной части вещественного числа;
[+] (MSL) функция GetTickCount для получения аптайма системы в миллисекундах и профилирования производительности скриптов;
[+] (MSL) функция Sqr для возведения чисел во вторую степень;
[+] (MSL) функция Sqrt для вычисления квадратных корней;
[+] (MSL) событие OnConfKick для обработки изгнания пользователя из текстовой конференции;
[+] (MSL) функция DateTimeToISOStr для перевода даты и времени в ISO-формат;
[+] (MSL) функция ISOStrToDateTime для перевода строки ISO-формата в double-значение даты и времени;
[+] (MSL) функция mAddNewBBSMessage для добавления сообщений на доску объявлений;
[+] (MSL) функция mGetBirthdayUsers для получения списка пользователей, у которых день рождения совпадает с указанным днём;
[+] (MSL) функция StringCharsCount для подсчёта количества вхождений указанного символа в строку;
[+] (MSL) функция mGetCIDSByUINAndClientType для получения списка подключений указанного пользователя по типам приложений;
[+] (MSL) функция GetArrayLength для получения количества элементов одномерного динамического массива;
[+] (MSL) функция SetArrayLength для установки размера одномерного динамического массива;
[+] (MSL) функция mGetConfUsersList для получения списка пользователей текстовой конференции

[*] убрана настройка для запрета выхода из автосоздаваемой конференции в админке. Теперь эта опция включена по умолчанию для всех автосоздаваемых конференций на сервере;
[*] если пользователь создал конференцию — он в ней модератор, автоматически. Но это не должно показываться в списках модераторов конференций, которые назначаются вручную на сервере в админке;
[*] (MSL) убран параметр bSaveToHistory из функции mSendPrivateMessage;
[*] (MSL) удалена функция mGetUserCID, как устаревшая;
[*] добавлена система кеширования для аватаров разных размеров. Это значительно ускоряет сервер при перезапусках на большом количестве пользователей онлайн и/или на медленном "железе";

[-] при выборе конференций для модераторов могли показываться пустые позиции в выпадающем списке, с указанием UID;
[-] удаление автосоздаваемых конференций работало некорректно, пользователи, у которых такая конференция была добавлена вручную, продолжали в неё входить после переподключения;
[-] (Kanban) при создании нового проекта оставалась висеть надпись "обработка запроса" и ничего не происходило. Исправлено;
[-] (MSL) исправлена работа функций mIncUIN и mDecUIN
[-] ошибка "Out of memory" при генерации preview от очень больших изображений (больше 5К);
[-] не работала регистрация пользователей с клиентской стороны.
[-] проблема с зависанием сервера в некоторых случаях после рестарта и большого количества онлайн-пользователей из-за некорректной рассылки статусов вновь подключившихся пользователей. Исправлено.

5. Как обновиться на последнюю версию?


И коммерческая, и бесплатная версии обновляются одинаково. Сначала обновляется сервер, затем — клиенты. В основном, в автоматическом режиме.

Инструкция по обновлению MyChat

Служба поддержки