commit 3f2016e9f0cadff8728ed7b2b8b4306b997b49ce Author: lohrrrr Date: Mon May 18 23:49:35 2026 +0300 Add Home diff --git a/Home.md b/Home.md new file mode 100644 index 0000000..06a5ea9 --- /dev/null +++ b/Home.md @@ -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 ` | Добавление идентификатора пользователя в локальный ростер. | `/add 192834` | +| `/alert <текст>` | Отправка сообщения с флагом триггера внимания (статус `[!]`). | `/alert Срочно в сеть` | +| `s/старый/новый` | Потоковый редактор (`sed`-style) для правки последнего сообщения. | `s/привет/приветствую` | + +--- + +## 4. Локальное хранение и кэширование (Preserved) + +Клиент работает по принципу максимальной децентрализации истории: +* **`settings.json`** — содержит конфигурацию подключения, учетные данные, локальный список контактов и полную историю переписки. Если удалить этот файл, клиент запустится в режиме первичной настройки. +* **Режим ожидания (Preserved):** Если вы отправляете сообщение пользователю со статусом *Offline*, пакет не пропадает. Он помещается в локальную очередь отправки внутри `settings.json`. Фоновый поток проверки статусов автоматически отправит накопленный стек сообщений, как только удаленный UIN появится в сети, при условии, что ваш клиент остается открытым. + +--- + +## 5. Известные ограничения и безопасность + +1. **Отсутствие шифрования:** Текущая тестовая версия протокола AoS передает данные в открытом виде. Не используйте клиент для передачи конфиденциальной информации. +2. **Акустический шум:** Во время приема и передачи сообщений интерфейс задействует звуковую карту. Рекомендуется снизить общую громкость приложения в микшере ОС перед началом сессии. +3. **Лимит символов:** Максимальная длина одного пакета жестко ограничена 100 символами для предотвращения рассинхронизации FFT-детектора при длительной передаче тонов. \ No newline at end of file