This repository has been archived on 2026-05-21. You can view files and clone it, but cannot push or open issues or pull requests.
TyChat-TUI/README.md
2026-05-18 23:45:46 +03:00

4 KiB
Raw Blame History

TyChat-Client TUI

Минимальный консольный клиент, используемый разработчиками для тестирования протокола AcoustiOverSocket.

Зависимости и запуск

Приложение автоматически проверяет и устанавливает необходимые библиотеки при первом запуске (prompt_toolkit, numpy, sounddevice, python-socketio).

python client.py

Управление

  • Tab — Переключение фокуса между списком чатов (левая панель) и полем ввода сообщения (нижняя панель).
  • Стрелки Вверх / Вниз — Навигация по списку контактов (работает, когда фокус находится на панели чатов). При перемещении выбор чата переключается автоматически.
  • Ctrl + C или ввод /exit — Корректное завершение работы и выход из терминала.

Команды в поле ввода

  • /help — Открывает официальную Wiki проекта в браузере по умолчанию.
  • /add <UIN> — Локально добавляет новый UIN в список контактов.
  • /alert <сообщение> — Отправляет сообщение с флагом приоритетного внимания (выставляет статус [!] у получателя).
  • s/чтоаменить/на_чтоаменить — Замена текста в последнем отправленном сообщении (аналог синтаксиса sed).

Преимущества

  • Автономность и локальное хранение: Вся история сообщений и список контактов сохраняются на стороне клиента в файле settings.json. Сервер выполняет исключительно роль ретранслятора пакетов.
  • Адаптивный TUI-интерфейс: Благодаря использованию контейнеров Frame из библиотеки prompt_toolkit, интерфейс автоматически масштабируется под любые размеры окна терминала без сдвигов и искажения разметки.
  • Поддержка отложенной доставки (Preserved): Если целевой контакт находится в офлайне, клиент кэширует исходящие сообщения локально и автоматически отправляет их, как только протокол зафиксирует появление пользователя в сети.

Недостатки

  • Отсутствие серверной истории: Поскольку сервер не логирует пакеты, получить пропущенные за время офлайна сообщения невозможно, если у отправителя в этот момент был закрыт клиент.
  • Акустическая нагрузка: Специфика протокола передачи данных подразумевает генерацию высокочастотных аудиосигналов через системное устройство вывода, что требует ручного контроля уровня громкости.
  • Отсутствие ввода с мышки: Навигация полностью переведена на клавиатурные хоткеи ради стабильности работы интерфейса в специфических и эмулируемых терминальных средах.