Add Home

lohrrrr 2026-05-18 23:49:35 +03:00
commit 3f2016e9f0

58
Home.md Normal file

@ -0,0 +1,58 @@
# Документация протокола AcoustiOverSocket (AoS) и клиента TyChat
Добро пожаловать в официальную техническую Wiki проекта. Данная страница предназначена для разработчиков и пользователей, тестирующих мессенджер **TyChat** и протокол передачи данных **AoS**.
---
## 1. Архитектура и принцип работы
Протокол **AcoustiOverSocket** разработан как гибридное решение, объединяющее сетевую транспортную модель Socket и акустический метод кодирования информации, вдохновленный технологией `rtty`.
### Схема передачи пакета:
1. **Ввод:** Отправитель вводит текстовое сообщение (лимит — 100 символов).
2. **Модуляция:** Клиент преобразует ASCII-коды символов в последовательность звуковых тонов.
* **Базовая частота (Base Frequency):** 600 Гц
* **Шаг частоты (Frequency Step):** 25 Гц за каждый шаг ASCII-кода.
* **Длительность тона:** 0.1 секунды.
3. **Транспорт:** Сгенерированный аудиопоток конвертируется в байты, кодируется в Base64 и пересылается через сервер ретрансляции по протоколу WebSocket.
4. **Демодуляция:** Получатель декодирует Base64, воспроизводит аудиосигнал через `sounddevice` и одновременно выполняет быстрое преобразование Фурье (FFT) для восстановления исходного текста.
---
## 2. Инструкция по управлению
Интерфейс построен на базе библиотеки `prompt_toolkit` и оптимизирован для работы исключительно с клавиатуры для обеспечения стабильности в эмулируемых терминалах (включая Termux на Android).
* `Tab` — переключение фокуса ввода между списком чатов и полем сообщения.
* `Стрелка Вверх` / `Стрелка Снизу` — перемещение по списку контактов (фокус должен быть на панели чатов). Чат открывается автоматически при наведении.
* `Ctrl + C` — экстренное завершение работы приложения.
---
## 3. Поддерживаемые команды и синтаксис
Все команды вводятся непосредственно в основное поле ввода сообщения:
| Команда | Описание | Пример использования |
| :--- | :--- | :--- |
| `/exit` | Корректный выход из клиента с закрытием сокетов. | `/exit` |
| `/help` | Вызов данной страницы документации. | `/help` |
| `/add <UIN>` | Добавление идентификатора пользователя в локальный ростер. | `/add 192834` |
| `/alert <текст>` | Отправка сообщения с флагом триггера внимания (статус `[!]`). | `/alert Срочно в сеть` |
| `s/старый/новый` | Потоковый редактор (`sed`-style) для правки последнего сообщения. | `s/привет/приветствую` |
---
## 4. Локальное хранение и кэширование (Preserved)
Клиент работает по принципу максимальной децентрализации истории:
* **`settings.json`** — содержит конфигурацию подключения, учетные данные, локальный список контактов и полную историю переписки. Если удалить этот файл, клиент запустится в режиме первичной настройки.
* **Режим ожидания (Preserved):** Если вы отправляете сообщение пользователю со статусом *Offline*, пакет не пропадает. Он помещается в локальную очередь отправки внутри `settings.json`. Фоновый поток проверки статусов автоматически отправит накопленный стек сообщений, как только удаленный UIN появится в сети, при условии, что ваш клиент остается открытым.
---
## 5. Известные ограничения и безопасность
1. **Отсутствие шифрования:** Текущая тестовая версия протокола AoS передает данные в открытом виде. Не используйте клиент для передачи конфиденциальной информации.
2. **Акустический шум:** Во время приема и передачи сообщений интерфейс задействует звуковую карту. Рекомендуется снизить общую громкость приложения в микшере ОС перед началом сессии.
3. **Лимит символов:** Максимальная длина одного пакета жестко ограничена 100 символами для предотвращения рассинхронизации FFT-детектора при длительной передаче тонов.