Update README.md

This commit is contained in:
lohrrrr 2026-05-18 23:45:46 +03:00
parent dd9827ec11
commit 8832738f00

View file

@ -1,3 +1,43 @@
# TyChat-Client
# TyChat-Client TUI
Клиент для TyChat т.е. днища
Минимальный консольный клиент, используемый разработчиками для тестирования протокола 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):** Если целевой контакт находится в офлайне, клиент кэширует исходящие сообщения локально и автоматически отправляет их, как только протокол зафиксирует появление пользователя в сети.
# Недостатки
* **Отсутствие серверной истории:** Поскольку сервер не логирует пакеты, получить пропущенные за время офлайна сообщения невозможно, если у отправителя в этот момент был закрыт клиент.
* **Акустическая нагрузка:** Специфика протокола передачи данных подразумевает генерацию высокочастотных аудиосигналов через системное устройство вывода, что требует ручного контроля уровня громкости.
* **Отсутствие ввода с мышки:** Навигация полностью переведена на клавиатурные хоткеи ради стабильности работы интерфейса в специфических и эмулируемых терминальных средах.
```
```