Skip to content

TaleEngine v1.17.0 Beta

Choose a tag to compare

@Sonicspeedfly Sonicspeedfly released this 04 Aug 18:18
· 89 commits to main since this release

Исправлено

  • Интерфейс уезжал за экран после тапа по любому полю (iPhone). Главная
    причина «на телефоне не вмещается»: 18 полей ввода имели шрифт 12px, а iOS
    Safari принудительно зумит страницу при фокусе на поле мельче 16px — и
    обратно сам не отъезжает. Один тап по полю — и весь интерфейс за краем экрана.
    На мобильных полям задан шрифт 16px.
  • Текст вылезал из пузыря сообщения. У .bubble не было переноса
    неразрывных строк: длинная ссылка, путь к файлу, строка base64 или длинное
    слово распирали пузырь и выходили за его границы. Добавлен overflow-wrap,
    ссылки и inline-код рвутся принудительно.
  • Таблицы в ответах ломали вёрстку — теперь прокручиваются внутри пузыря, а
    не сплющиваются в нечитаемые столбики по букве.
  • Панель настроек прокручивалась вбок на телефоне. Ползунки с width:100%
    плюс браузерные поля по 2px вылезали за подпись на 4px. Проверено: переполнений
    в панели больше нет.
  • По кнопкам было трудно попасть пальцем — 22 элемента были высотой 24–32px
    при рекомендованных 44px. На мобильных задан минимум 40px, ширина не тронута,
    чтобы плотные ряды не разъехались. На десктопе размеры прежние.
  • Учтены вырезы и полоса жестов iPhone (viewport-fit=cover + safe-area):
    панель ввода больше не заезжает под скруглённые углы.

Изменено — скорость загрузки

Сайт долго открывался на мобильном интернете. Найдены три причины:

  • Ничего не кэшировалось. Стояло Cache-Control: no-store на весь интерфейс —
    чтобы обновления доходили без хард-рефреша. Цель верная, средство слишком
    грубое: КАЖДЫЙ заход заново тянул ~266 КБ. Теперь адрес файла версионируется
    хэшем содержимого (/app.js?v=…), сам файл кэшируется навсегда, а index.html —
    нет. Обновления по-прежнему доходят сразу, но повторный заход берёт всё из кэша.
  • Не было сжатия. Включён gzip: 266 КБ → 69 КБ, в 3.8 раза меньше.
  • Скрипты блокировали отрисовку. Пять <script> в <head> без defer:
    браузер останавливал разбор страницы на каждом и не рисовал ничего, пока все не
    скачаются. Добавлен defer — качаются параллельно.

Плюс к этому:

  • KaTeX и lamejs больше не грузятся заранее. Вдвоём они тяжелее всего
    остального фронтенда, а нужны редко — только если в ответе есть формула или
    нажата запись голоса. Теперь подгружаются по факту надобности; формула в уже
    показанном сообщении проявляется сама, без перезагрузки. Кодировщик голоса
    тянется параллельно с записью, поэтому задержки не появляется.
  • Библиотеки переведены на один CDN (было два — unpkg и jsdelivr): лишние
    DNS + TLS на мобильном стоят дороже, чем кажется. Добавлен preconnect.