Repository navigation
TaleEngine v2.0.0 Beta
Полный редизайн интерфейса, четыре волны. Мажорная версия не из-за объёма, а
потому что изменилась модель навигации: чаты больше не живут внутри персонажа,
а выбор персонажа больше не открывает и не создаёт чат. Данные, API и формат
экспорта не менялись — обновление не требует миграций.
Исправлено — связь больше не «висит» до перезагрузки
Главный раздражитель: постоянный реконнект, который на телефоне и на компьютере
нельзя было вылечить ничем, кроме перезагрузки страницы. Причин оказалось три,
и все три починены.
- Соединение застревало навсегда. Намеренное закрытие сокета помечалось одним
общим флагом. ЕслиconnectWsвызывался на УЖЕ закрытом сокете,close()не
порождал события, флаг оставался поднятым — и следующий НАСТОЯЩИЙ обрыв
считался намеренным. Реконнект не планировался вообще никогда. Теперь у каждого
сокета своё поколение, и обработчики устаревшего соединения не могут погасить
живое. - Молчащий канал закрывали снаружи. Пауза в переписке — норма: люди читают
ответ по несколько минут. Промежуточные прокси, мобильные операторы и
энергосбережение телефона рвут такой сокет через 30–60 секунд тишины. Добавлен
прикладной пульс: клиент шлётpingраз в 25 секунд, сервер отвечаетpong.
Если на пульс не ответили, соединение считается мёртвым и переустанавливается,
не дожидаясь, пока это заметит браузер. - Возвращение к вкладке ничего не запускало. На телефоне таймеры в фоне
заморожены, поэтому запланированный реконнект мог не сработать вовсе. Теперь
соединение восстанавливается сразу поvisibilitychange,onlineиfocus,
без ожидания бэкоффа: если человек смотрит на приложение, оно обязано работать. - Потолок бэкоффа снижен с 15 до 8 секунд, добавлена обработка
onerror.
Добавлено — приборы (волна 4)
- Полоса заполнения окна контекста под полем ввода: сколько занято, сколько
обрезано, цвет по приближению к границе. Раньше о переполнении узнавали
постфактум, когда персонаж «забывал» события. - Инспектор хода — что РЕАЛЬНО уходит в модель: системный промпт с раскрытием
текста, вес каждого блока в токенах, сработавшие записи памяти Horae с
указанием вызвавшего слова, и явный блок «обрезано бюджетом». Разбор собирает
сама сборка контекста, поэтому числа те же, что уйдут провайдеру. - Скорость и задержка первого токена во время генерации. Экран перестал
выглядеть одинаково на второй секунде и на девяностой. - Стоимость хода — только если вы задали свой тариф: у каждого прокси он свой.
Добавлено — режимы ленты и сцена (волна 4)
- Переключатель Обычный / Сцена / Работа с документом.
- В режиме «Сцена» реплики лежат на собственной подложке: непрозрачность 0.88
вычислена по худшему случаю (белое фото), текст держит 12.16:1, имя говорящего
7.51:1. Раньше имя ложилось прямо на пользовательский фон и падало до ~1.55:1. - Именные реплики разрядкой, ремарки курсивом.
Добавлено — оболочка и поиск (волна 3)
- Единый список чатов: личные, групповые и общие в одной ленте, отсортированы
по активности, с фильтром по персонажу чипами. Разделы «Группы» и «Доступные
мне» слились с ним. - Поиск по репликам — новый
GET /api/searchс переходом в найденное
сообщение и догрузкой недостающей истории. - Командная палитра по
Ctrl+K/Cmd+K: чаты, персонажи, команды, поиск. - Ветка чата —
POST /api/sessions/{id}/fork: копия истории до выбранной
реплики, исходный чат не меняется. - Один режим композера вместо трёх независимых флагов. Надпись на кнопке
отправки и реальное действие теперь читают одно поле и не могут разойтись. - Шапка разгружена: 4 кнопки вместо 12, статус связи виден только при обрыве.
Добавлено — доступность (волна 2)
- Строки списков стали настоящими кнопками: раньше с клавиатуры можно было
удалить чат, но нельзя открыть. - 84 доступных имени кнопкам, включая четыре необратимых удаления, у которых не
было даже подсказки. - Ловушка фокуса и возврат фокуса во всех оверлеях,
role="dialog". - Поля выбора файла достижимы с клавиатуры (было
display: none, что выключает
элемент целиком). - Вежливый регион объявляет начало, завершение и ошибку генерации.
- Блок быстрого старта вместо бледной строки «выберите слева», которая на
телефоне указывала туда, где ничего нет.
Добавлено — фундамент (волна 1)
- Семантические токены: поверхности, состояния, текст, границы, акцент, статусы,
радиусы, отступы, шкала кегля 12–30 без микро-размеров. - Объявлен
color-scheme— системные<select>перестали выпадать светлыми
поверх тёмной панели. Светлая палитра подготовлена подdata-theme="light".
Исправлено — фундамент и данные
- Порядок чатов: сортировка шла по дате создания, а показывалось время
последней активности. Чат, где писали час назад, лежал под пустыми. - Стирание метаданных группы: открытие группы затирало её Author's Note и
часовой пояс. Сервер отбрасываетnull, но пустую СТРОКУ записывал. - Несуществующий класс
.btn: три кнопки загрузки файлов отрисовывались
серым текстом 12px с контрастом 2.05:1. - Контрасты: ховер главной кнопки ронял пару с 4.26 до 2.50 (теперь темнеет,
6.89), ползунок прокрутки был 1.12 к дорожке (стало 3.79), индикатор обрыва
связи 2.71 (стало 4.94+).
Мобильный адаптив
- Порог поднят с 760 до 768px — планшеты попадают в мобильную раскладку.
- Инспектор и настройки открываются нижней шторкой, а не сжимают чат сбоку.
- Канвас открывается на весь экран с подписанной кнопкой «← К чату».
- Цели нажатия 44×44 вместо 40×40.
- Строка действий под сообщением переносится: раньше она уезжала за левый край,
до которого прокруткой не добраться. - Телеметрия сворачивается в микро-бейдж, не отнимая высоту переписки.