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:46:05 +03:00

40 lines
4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# TyChat-Client TUI
Минимальный консольный клиент, используемый разработчиками для тестирования протокола AcoustiOverSocket.
## Зависимости и запуск
Приложение автоматически проверяет и устанавливает необходимые библиотеки при первом запуске (`prompt_toolkit`, `numpy`, `sounddevice`, `python-socketio`).
```bash
python client.py
```
## Управление
* **Tab** — Переключение фокуса между списком чатов (левая панель) и полем ввода сообщения (нижняя панель).
* **Стрелки Вверх / Вниз** — Навигация по списку контактов (работает, когда фокус находится на панели чатов). При перемещении выбор чата переключается автоматически.
* **Ctrl + C** или ввод `/exit` — Корректное завершение работы и выход из терминала.
## Команды в поле ввода
* `/help` — Открывает официальную Wiki проекта в браузере по умолчанию.
* `/add <UIN>` — Локально добавляет новый UIN в список контактов.
* `/alert <сообщение>` — Отправляет сообщение с флагом приоритетного внимания (выставляет статус `[!]` у получателя).
* `s/чтоаменить/на_чтоаменить` — Замена текста в последнем отправленном сообщении (аналог синтаксиса `sed`).
---
# Преимущества
* **Автономность и локальное хранение:** Вся история сообщений и список контактов сохраняются на стороне клиента в файле `settings.json`. Сервер выполняет исключительно роль ретранслятора пакетов.
* **Адаптивный TUI-интерфейс:** Благодаря использованию контейнеров `Frame` из библиотеки `prompt_toolkit`, интерфейс автоматически масштабируется под любые размеры окна терминала без сдвигов и искажения разметки.
* **Поддержка отложенной доставки (Preserved):** Если целевой контакт находится в офлайне, клиент кэширует исходящие сообщения локально и автоматически отправляет их, как только протокол зафиксирует появление пользователя в сети.
# Недостатки
* **Отсутствие серверной истории:** Поскольку сервер не логирует пакеты, получить пропущенные за время офлайна сообщения невозможно, если у отправителя в этот момент был закрыт клиент.
* **Акустическая нагрузка:** Специфика протокола передачи данных подразумевает генерацию высокочастотных аудиосигналов через системное устройство вывода, что требует ручного контроля уровня громкости.
* **Отсутствие ввода с мышки:** Навигация полностью переведена на клавиатурные хоткеи ради стабильности работы интерфейса в специфических и эмулируемых терминальных средах.