Спустя две недели после релиза v1.0.0 мы выпускаем encrypted1on1 v1.2.0. Этот релиз посвящён повседневному удобству и целостности данных: мы решили архитектурную проблему эволюции шаблонов вопросов без искажения истории встреч, дали участникам возможность редактировать свои формулировки и отполировали ключевые сценарии UX.

Проблема исторической достоверности в шаблонах анкет

В любом инструменте для встреч 1-на-1 опросники со временем неизбежно развиваются. Например, в encrypted1on1 мы решили расширить самочувствие сотрудника («чувства») с 6 базовых вариантов до 12 тонких эмоциональных оттенков (добавив варианты спокойствие, благодарность, стресс, гордость, скука и одиночество).

В обычных приложениях разработчики просто обновляют массив вопросов. Но в системе для встреч 1-на-1, сохраняющей историю за месяцы и годы, это приводит к опасному искажению: если шаблон изменить глобально, прошлые встречи начинают рендериться по новому определению. В результате чекбокс, который сотрудник не отметил три месяца назад просто потому, что такого пункта ещё не существовало в природе, визуально становится неотличим от пункта, который он видел и осознанно проигнорировал.

Чтобы защитить историческую достоверность заметок, в v1.2.0 реализовано версионирование формы анкеты (formVersion). Каждая встреча при создании фиксирует номер версии формы. Старые анкеты навсегда остаются на схеме v1, а новые создаются по схеме v2 с расширенным набором эмоций.

Редактирование и удаление своих договорённостей и комментариев

Живая встреча 1-на-1 динамична: участники обсуждают идеи, на лету корректируют формулировки задач и порой опечатываются при быстром вводе. Ранее после добавления пункта в список договорённостей или в ветку комментариев изменить его было невозможно.

В v1.2.0 пользователи могут свободно редактировать и удалять собственные пункты в «Итогах встречи» и свои комментарии в анкете. При этом безопасность строго разграничена на уровне автора: вы можете уточнить свою мысль, но никто не может изменить или удалить слова своего собеседника.

Перенос предстоящих встреч и отображаемые имена

Также в релиз вошли практичные улучшения повседневного интерфейса:

  • Перенос предстоящих встреч: раньше перенести встречу можно было только после наступления просрочки. Теперь, если изменились планы или возник конфликт в календаре, дату предстоящего звонка можно скорректировать прямо со страницы анкеты.
  • Человеческие имена: адреса электронной почты и системные UUID в шапке, карточках коллег и сводках заменены на аккуратные отображаемые имена пользователей.
  • Контрастность тёмной темы и автотест WCAG: цвета бейджей были скорректированы для идеальной читаемости в тёмной теме, а в CI добавлен автоматический тест контрастности по стандарту WCAG.
  • Прозрачность сборки: администраторы могут включить отображение версии приложения и хэша коммита в футере с помощью переменной SHOW_VERSION.

Развёртывание и обновление до v1.2.0

Версия v1.2.0 полностью обратно совместима и содержит автоматические миграции базы данных для SQLite и MySQL. Официальный образ уже опубликован в реестре контейнеров GitHub:

docker pull ghcr.io/aleksejs1/encrypted1on1:1.2.0

Опробовать все новые вопросы и изменения в интерфейсе без развёртывания можно в живом демо на demo.private1on1.eu.

Подробный чейнджлог и архитектурные решения доступны в репозитории на GitHub.