Политика конфиденциальности EyeCopy
- Видео с камеры, звук с микрофона, ваши файлы и записи обрабатываются только на вашем устройстве. Рекламы и трекинга нет.
- Аккаунт необязателен. Без него данные не покидают устройство; с аккаунтом GitHub конспекты и настройки синхронизируются через сервер EyeCopy в Европейском союзе (раздел 3).
- Фото уходит в сеть только если вы нажали «Распознать в облаке» и подтвердили; оно не сохраняется.
- Технические события и ошибки (без текстов, фото и видео) помогают улучшать EyeCopy и отключаются в настройках. Исключения, которые вы включаете сами: голосовые команды и озвучивание могут использовать сервисы браузера или системы (раздел 3).
1. Кто отвечает за приложение
Разработчик и правообладатель EyeCopy: p3stival.
Связаться с разработчиком: market.mape@gmail.com.
EyeCopy — телесуфлёр для переписывания текста от руки. Приложение показывает текст фрагментами и переключает их по взгляду (камера), по стуку или щелчку (микрофон), по свайпу, касанию или клавише.
2. Главный принцип
Всё, что делает EyeCopy, происходит на вашем устройстве — в браузере или во встроенном веб-движке приложения. Разработчик не держит сервер, на который приложение отправляло бы ваши данные. Поэтому мы физически не можем увидеть ваше видео, звук, файлы, конспекты или профиль.
3. Какие данные обрабатываются и где
Камера (режим «Камера»)
- Камера включается только после нажатия «Включить камеру» и вашего разрешения в системном запросе.
- Кадры с фронтальной камеры анализирует библиотека MediaPipe Face Landmarker прямо на устройстве. Из положения глаз и головы вычисляются несколько чисел, по которым приложение понимает, смотрите вы на экран или в тетрадь.
- Видео не записывается, не сохраняется и никуда не отправляется. Кадры, точки лица и данные калибровки живут только в памяти, пока работает режим, и исчезают после выключения камеры или закрытия приложения.
- Приложение не распознаёт личность и не создаёт биометрических шаблонов для идентификации.
Микрофон: стук и щелчок (режим «Звук»)
- Микрофон включается только после нажатия «Включить стук» и вашего разрешения.
- Приложение следит лишь за уровнем громкости и ищет резкий всплеск — стук по столу или щелчок пальцами. Звук не записывается, не сохраняется и не отправляется.
Голосовые команды и голосовые заметки
- Работают, только если вы сами нажали «Включить голос» или кнопку голосового ввода заметки. По умолчанию выключены.
- Для распознавания речи используется встроенный в браузер или систему сервис (Web Speech API). Его выполняет не EyeCopy, а производитель браузера или системы:
- в Google Chrome звук передаётся на серверы Google;
- в других браузерах, где есть распознавание речи, — сервису, который выбрал их производитель (например, в Microsoft Edge — Microsoft);
- в Safari и в приложении для iPhone и iPad распознавание выполняет Apple — на устройстве или на серверах Apple, это решает система;
- в приложении для Android голосовые команды и голосовые заметки недоступны: встроенный веб-движок Android не поддерживает распознавание речи, поэтому звук не покидает устройство.
- Голосовые команды слушают непрерывно, пока вы не нажмёте «Выключить» или не выберете другой режим: всё это время звук передаётся сервису распознавания. Голосовая заметка слушает одну фразу.
- Обработку речи в этих сервисах регулируют политики конфиденциальности производителя браузера или системы (Google, Apple, Microsoft и т. п.). Разработчик EyeCopy не получает ни звук, ни распознанный текст. Распознанное слово используется только как команда «дальше» или «назад», текст заметки сохраняется на устройстве.
- Если вы не хотите передавать звук этим сервисам — не включайте голос. Стук и остальные режимы работают без него.
Озвучивание фрагмента
Настройка «озвучивать фрагмент» по умолчанию выключена. Если её включить, текст фрагмента читает синтезатор речи вашей системы или браузера. Некоторые браузеры (например, Chrome с голосами Google или Edge с онлайн-голосами Microsoft) могут отправлять озвучиваемый текст на серверы своего производителя.
Файлы и фотографии
- Файлы, которые вы открываете в «Материалах» и «Лекции» (PDF, DOCX, TXT), читаются на устройстве. Тип файла проверяется по его содержимому, размер ограничен 20 МБ.
- Фотографии страниц, сканы (PDF без текстового слоя) и фото доски распознаются на самом устройстве: встроенный в EyeCopy движок Tesseract (библиотека tesseract.js) превращает изображение в текст в фоновом потоке браузера или приложения. Фото никуда не отправляется и нигде не сохраняется; остаётся только извлечённый текст — в памяти, пока открыто приложение, а если вы сохраните его в профиль, то в локальном хранилище браузера (см. ниже). Печатный текст распознаётся хорошо, рукописный текст и доска — пока неточно, о чём приложение предупреждает.
- Распознавание в облаке — по желанию, только после входа в аккаунт и по отдельной кнопке «Распознать в облаке» с подтверждением: фото уменьшается до 1600 px и отправляется на сервер EyeCopy, а оттуда в сервис распознавания: Anthropic (модель Claude, США) или Alibaba Cloud Model Studio (модель Qwen, Сингапур) — какой из них подключён, написано в окне подтверждения перед отправкой. Сервер EyeCopy фото не сохраняет: в базе остаются только дата, размер файла, модель, число токенов и стоимость запроса для учёта лимитов, а распознанный текст возвращается на устройство. Есть лимит фото в день на пользователя.
- Движок распознавания и языковые данные для русского и английского (около 8 МБ) на сайте загружаются с самого сайта при первом распознавании (или заранее, когда вы открываете «Материалы» с хорошей сетью, не на мобильном интернете) и сохраняются в кэше браузера для работы без сети; если своя копия почему-то не загрузилась — с публичной сети доставки (см. раздел 5). В приложениях они встроены в пакет. Это общедоступные файлы, в запросах за ними нет ваших данных.
- Фото тетради («Проверка тетради») показывается только как превью: распознавание рукописного текста в разработке, результат проверки — пример.
- Содержимое файлов держится в памяти, пока открыто приложение, и не отправляется.
Данные, которые приложение хранит на устройстве
Чтобы вы могли продолжить с того же места, EyeCopy сохраняет в локальном хранилище браузера или приложения (localStorage) на вашем устройстве:
- позицию в тексте и выбранный размер фрагмента (сам текст не сохраняется — только его контрольная сумма);
- пометки «не понял» и заметки на полях (привязаны к контрольной сумме текста);
- профиль, если вы его создали: имя, вуз, группу, сохранённые конспекты, темы и добавленные вами ссылки;
- статистику — число переписанных слов по дням;
- настройки: размер шрифта, контраст, озвучивание, паузы для глаз, последний выбранный режим (камера, звук, вручную) и т. п.;
- служебные отметки интерфейса — например, что вы закрыли подсказку об установке или уже посмотрели обучение «Как это работает», а также что камере на этом устройстве лучше работать без видеокарты (если видеокарта не справилась).
В приложениях для Android и iOS политика конфиденциальности открывается в том же окне. Чтобы после возврата продолжить с того же места, открытый текст и место в нём на это время кладутся во временное хранилище окна (sessionStorage) и удаляются, как только вы вернётесь; при закрытии приложения система стирает их сама.
Кроме того, на сайте браузер кэширует файлы самого EyeCopy и его библиотеки (Cache Storage, сервис-воркер), чтобы сайт работал без интернета. В кэше нет ваших данных. Приложениям для Android и iOS этот кэш не нужен: все файлы встроены в приложение.
Эти данные не покидают устройство (кроме того, что вы сами синхронизируете через аккаунт — см. ниже). Если в системе включено резервное копирование (iCloud, резервная копия Android в аккаунте Google), система может включить данные приложения в вашу личную резервную копию. Доступа к ней у разработчика нет.
Аккаунт и синхронизация (по желанию)
Без аккаунта всё работает как описано выше, и данные не покидают устройство. Аккаунт нужен, чтобы конспекты и настройки были на всех ваших устройствах и чтобы распознавать фото в облаке.
- Вход через Telegram (без пароля, на сайте). Страница входа Telegram передаёт нам идентификатор, имя, имя пользователя и адрес аватара, подписанные ботом EyeCopy; номер телефона и переписка нам недоступны.
- Вход через Google (без пароля). От Google мы получаем и храним идентификатор аккаунта, имя, адрес почты и адрес аватара; почта нигде не показывается и используется только как ваш логин и для списка администраторов. Доступа к письмам, контактам и другим данным Google приложение не запрашивает.
- Вход через GitHub (без пароля). От GitHub мы получаем и храним числовой идентификатор, логин, имя и адрес аватара. Доступа к репозиториям, почте и другим данным GitHub приложение не запрашивает.
- Что хранится на сервере EyeCopy: профиль (имя, вуз, группа, группы и добавленные вами ссылки), сохранённые конспекты (заголовок, дата, источник, темы и текст), настройки, статистика по дням, пометки «не понял» и заметки на полях. Для каждого документа сервер хранит до 20 предыдущих версий, чтобы можно было вернуть случайно перезаписанное.
- Где: на арендованном виртуальном сервере в США (штат Юта, провайдер Cloudzy). Соединение зашифровано (HTTPS). Резервные копии базы делаются ежедневно, шифруются и хранятся в хранилище Backblaze B2 (Европа) 30 дней.
- Сессия: после входа на устройстве хранится случайный токен сессии (localStorage, ключ eyecopy-session), на сервере — только его хэш. Cookie не используются. Токен действует 180 дней или до выхода.
- Удаление: кнопка «Удалить аккаунт» в «Профиле» сразу удаляет аккаунт, конспекты и остальные данные на сервере; из резервных копий они исчезают в течение 30 дней. «Выйти» удаляет только сессию на этом устройстве, локальные данные остаются.
Трансляция лекции (по желанию, нужен аккаунт лектора)
Лектор, вошедший в аккаунт, может транслировать доску группе: его телефон смотрит на доску, а участники вводят код сессии (вход им не нужен).
- Что уходит с телефона лектора: отдельные кадры доски (JPEG до 1600 px) — только когда на доске появилось новое и движение прекратилось; пока лектор пишет, кадры не отправляются. Кадр передаётся на сервер EyeCopy и в тот же сервис распознавания, что при «Распознать в облаке» (Anthropic или Alibaba Cloud, см. выше; название показано в окне перед началом трансляции); кадры не сохраняются ни на сервере, ни у сервиса, остаётся только распознанный текст. Видео не передаётся. Камера включается только после нажатия «Начать» в окне с этим объяснением.
- Что хранится на сервере: код сессии, её название (если лектор его ввёл), время, число кадров и распознанные блоки текста (в том числе опубликованные лектором руками). Их видит любой, кто знает код. Сессия со всеми блоками удаляется через 30 дней после окончания, а также вместе с аккаунтом лектора.
- Участники: сервер не хранит, кто подключался; видно только число открытых подключений в момент запроса. На устройстве участника запоминается код последней сессии (localStorage, ключ eyecopy-live), чтобы вернуться в неё после перезагрузки; «Отключиться» стирает его.
- Кнопка «Фото доски» при входе в аккаунт предлагает облачное распознавание (окно с подтверждением, как в «Материалах»); без аккаунта фото доски распознаётся на устройстве.
Обратная связь
Кнопка «Написать нам» (раздел «Профиль» и подвал) отправляет на сервер EyeCopy только то, что вы написали: сообщение, тему и, по желанию, контакт для ответа. Если включён флажок «приложить технические данные», к сообщению добавляются версия, платформа, размер экрана, выбранный режим и язык интерфейса — без текстов, фото и видео. Сообщения хранятся на сервере, пока мы их разбираем, и пересылаются разработчику уведомлением в Telegram. Пока сервер не подключён, кнопка открывает обычное письмо на адрес из раздела 13; без сети сообщение ждёт на устройстве и уходит, когда сеть появится.
Технические события и ошибки
Чтобы понимать, что в EyeCopy работает плохо, приложение может отправлять на сервер EyeCopy технические события: запуск и платформа (сайт, Android, iOS), версия, выбранный режим и размер фрагмента, скорость переписывания, число переключений и возвратов, качество калибровки камеры (одно число), итог распознавания фото (удалось ли, уверенность, время), а также ошибки JavaScript (текст ошибки и место в коде). В этих данных нет текстов конспектов, файлов, фото, видео и звука. Устройство помечается случайным идентификатором (ключ eyecopy-device); до входа события анонимны, после входа привязаны к аккаунту. Отправка отключается в «Профиль» → «Настройки» → «Приватность и данные»; «Стереть локальные данные» создаёт новый идентификатор. Ошибки могут дублироваться в сервис Sentry (Functional Software, Inc.) для разбора. На сайте может работать счётчик посещений Umami на нашем сервере — без cookie и без передачи данных третьим лицам.
Другое
- Буфер обмена используется только когда вы нажимаете «скопировать» (например, карточки).
- Файл
.texс конспектом создаётся на устройстве и сохраняется туда, куда вы укажете. - Вибрация при смене фрагмента и запрет на отключение экрана во время переписывания не связаны с вашими данными.
4. Что мы не собираем
- Аккаунт не обязателен: кнопка «Зарегистрироваться» в разделе «Профиль» создаёт локальный профиль на этом устройстве; аккаунт GitHub — по желанию (раздел 3).
- Нет рекламы, рекламных идентификаторов и трекинга между приложениями и сайтами. Технические события отправляются только на наш сервер и отключаются в настройках (раздел 3).
- Нет cookie: приложение их не использует.
- Нет геолокации, контактов, фотогалереи (кроме файлов, которые вы выбрали сами), истории браузера.
- Нет продажи данных. Третьим лицам передаётся только то, что нужно для конкретной функции: фото — сервису распознавания при распознавании в облаке, ошибки — Sentry (раздел 3).
5. Сетевые запросы
EyeCopy обращается в сеть за собственными файлами и, если вы пользуетесь аккаунтом или распознаванием в облаке, к серверу EyeCopy:
- Сервер EyeCopy (адрес вида api.<домен EyeCopy>) — только при входе, синхронизации, распознавании в облаке и отправке технических событий. Во входе участвует GitHub (github.com), в распознавании в облаке — Alibaba Cloud (раздел 3). Без аккаунта и без этих действий запросов к серверу EyeCopy нет.
- Сайт. Сайт размещён на хостинге GitHub Pages (GitHub, Inc.). Как любой веб-сервер, хостинг получает IP-адрес и технические данные запроса (браузер, время). По словам GitHub, IP-адреса посетителей GitHub Pages записываются и хранятся в целях безопасности. Разработчик EyeCopy к этим журналам доступа не имеет.
- Приложения для Android и iOS. Все файлы и библиотеки встроены в приложение. Для обычной работы интернет не нужен.
- Запасные источники библиотек. Библиотеки (KaTeX, pdf.js, JSZip, MediaPipe, tesseract.js), модель распознавания лица, языковые данные Tesseract (русский и английский) и шрифты поставляются вместе с EyeCopy. Только если встроенная библиотека, модель или языковые данные почему-то не загрузились, приложение скачивает их копию с публичных сетей доставки: jsDelivr (cdn.jsdelivr.net), cdnjs (cdnjs.cloudflare.com — только KaTeX и JSZip), unpkg (unpkg.com), модель MediaPipe — с Google Cloud Storage (storage.googleapis.com), языковые данные Tesseract — с jsDelivr (копия открытого репозитория tesseract-ocr/tessdata_fast). У шрифтов запасного источника нет: если они не загрузились, текст показывается системным шрифтом. Эти сервисы, как любой сайт, видят IP-адрес и данные запроса. Ваших файлов, фотографий, текста, видео и звука в таких запросах нет.
- Файл-демо
EyeCopy-demo.html(открывается без установки, прямо из файла) библиотек с собой не несёт: он сразу берёт их с тех же сетей доставки, а шрифты — с Google Fonts (fonts.googleapis.com, fonts.gstatic.com). - Внешние ссылки. Ссылки на открытые лекции (например, teach-in.ru, openedu.ru) и ссылки, которые вы добавили сами, открываются в браузере только по вашему нажатию. Адрес страницы EyeCopy при переходе не передаётся (политика no-referrer). Дальше действуют правила этих сайтов.
6. Разрешения и как их отозвать
- Камера — для режима «Камера» (переключение по взгляду). Также система может предложить камеру, когда вы фотографируете страницу («Сфотографировать страницу») или выбираете фото доски или тетради; такой снимок обрабатывается на устройстве как обычный файл.
- Микрофон — для режима «Звук» (стук, щелчок) и, по вашему выбору, голосовых команд и заметок.
- Распознавание речи (только iOS) — для голосовых команд.
- Интернет (Android) — выдаётся автоматически; нужен только для запасных источников библиотек (раздел 5).
Все разрешения необязательны. Без камеры и микрофона суфлёр работает от касаний, свайпов и клавиш. Отозвать разрешение можно в любой момент:
- Android: Настройки → Приложения → EyeCopy → Разрешения.
- iPhone и iPad: Настройки → Конфиденциальность и безопасность → Камера / Микрофон / Распознавание речи — или Настройки → EyeCopy.
- Браузер: в Chrome — значок слева от адреса сайта → разрешения; в Safari на iPhone — Настройки → (Приложения →) Safari → Камера / Микрофон.
7. Демонстрационные функции
Часть функций в этой версии — макеты, которые показывают будущие возможности. Они работают локально и ничего никуда не отправляют:
- группы, коды приглашения и участники групп — демо (участники — примеры); профиль без аккаунта хранится только на устройстве;
- трансляция лекции — заранее подготовленный сценарий или ваш файл;
- «Объяснить», каталог открытых лекций и таймкоды — примеры, данные выдуманы и так помечены;
- конспект ИИ — эвристика в браузере, без языковой модели и сервера;
- проверка тетради — показ примера результата (распознавание рукописного текста в разработке; печатный текст с фото и сканов распознаётся по-настоящему, на устройстве — см. раздел 4);
- офлайн-очередь без аккаунта — имитация; с аккаунтом конспекты и настройки синхронизируются по-настоящему (раздел 3).
Аккаунты, синхронизация, распознавание в облаке и трансляция лекции описаны в разделе 3; конспект ИИ на языковой модели пока не подключён. Когда появятся новые функции с передачей данных, эта политика будет обновлена до их запуска.
8. Дети
EyeCopy создан для школьников старших классов и студентов. Приложение не предназначено специально для детей младше 13 лет. Без аккаунта всё остаётся на устройстве; аккаунт и отправка технических событий — по желанию и отключаются (раздел 3). Если ребёнок пользуется приложением, родители могут в любой момент удалить его данные способами из раздела 9.
9. Хранение и удаление данных
Данные хранятся на устройстве, пока вы их не удалите. Удалить можно так:
- в приложении: «Профиль» → «Настройки» → «Стереть локальные данные» — стирает все данные EyeCopy в хранилище этого браузера или приложения (localStorage и sessionStorage): позицию в тексте, пометки «не понял» и заметки на полях, статистику, настройки, служебные отметки и профиль вместе с сохранёнными в нём конспектами. Кэш библиотек — общедоступные файлы без ваших данных — остаётся, чтобы не скачивать их заново;
- по одной: пометки «не понял» и заметки на полях снимаются в самом конспекте; кнопка «Выйти» в профиле удаляет локальный профиль и сессию;
- аккаунт и всё, что синхронизировано на сервер, — кнопка «Удалить аккаунт» в «Профиле» (раздел 3) или письмо на адрес из раздела 13;
- чтобы гарантированно удалить всё сразу: удалите приложение (Android, iOS) или очистите данные сайта в браузере (в Chrome — значок слева от адреса → настройки сайта → удалить данные; в Safari на iPhone — Настройки → (Приложения →) Safari → Дополнения → Данные сайтов).
Без аккаунта у разработчика копий ваших данных нет. С аккаунтом данные на сервере удаляются по кнопке «Удалить аккаунт» сразу, из резервных копий — в течение 30 дней.
10. Где находится сервер и кто им управляет
Сервер EyeCopy арендован у хостинг-провайдера в Европейском союзе (Германия или Финляндия) и управляется разработчиком. Аккаунт необязателен: без него всё, что вы вводите (например, имя в локальном профиле), хранится и обрабатывается только на вашем устройстве и под вашим контролем. По вопросам обработки данных пишите на адрес из раздела 13.
11. Безопасность
- Сайт открывается только по HTTPS; камера и микрофон в браузере доступны только в защищённом соединении.
- Страница приложения ограничена политикой безопасности содержимого (CSP): она может загружать код только из своих файлов и перечисленных в разделе 5 сетей доставки.
- Тексты из ваших файлов показываются как текст, а не как код страницы.
12. Изменения политики
Мы можем обновлять политику, например, когда появляются новые функции. Новая версия публикуется на этой странице с новой датой вступления в силу. Если изменения касаются передачи данных с устройства, мы сообщим о них в приложении до того, как такие функции заработают.
13. Контакты
Вопросы о конфиденциальности и запросы: market.mape@gmail.com. Мы стараемся отвечать в течение 10 рабочих дней.
English summary
This summary is provided for convenience, for example for app store reviewers. The Russian text above is the authoritative version.
- Developer: p3stival. Contact: market.mape@gmail.com. Effective: 17 October 2026 (the 16 October edition extended with the optional account, sync, cloud recognition and technical events).
- Without an account nothing leaves the device. No ads and no tracking. An account is optional: sign-in with GitHub (we store the GitHub id, login, name and avatar URL) syncs the profile, saved notes, settings, daily statistics and margin notes through the EyeCopy server hosted in the the United States (Utah, provider Cloudzy), over HTTPS, with encrypted daily backups kept 30 days in Backblaze B2 (EU). Sessions use a random bearer token stored in local storage (hashed on the server); no cookies. “Удалить аккаунт” (Delete account) in the profile deletes all server data immediately.
- Cloud recognition (optional): only after signing in and only when you press “Распознать в облаке” and confirm, the photo (downscaled to 1600 px) is sent to the EyeCopy server and forwarded to the recognition service: Anthropic (Claude model, USA) or Alibaba Cloud Model Studio (Qwen model, Singapore); the confirmation dialog names the one in use. The photo is not stored; only the request size, model, token counts and cost are logged for quotas, and the recognised text is returned.
- Feedback: the “Write to us” button sends only what you type (message, topic, optional contact) and, if you keep the checkbox on, technical details (version, platform, screen size, mode, interface language) — no texts, photos or video. Messages are stored on the EyeCopy server while we handle them and forwarded to the developer as a Telegram notification. Without a server the button opens a regular email.
- Technical events (optional, on by default when the app is built with a server address, switchable in Settings): app start and platform, version, chosen mode and fragment size, writing speed, switch/back counts, camera calibration quality, local recognition outcome, and JavaScript errors (message and code location). They never contain note texts, files, photos, audio or video. Devices are identified by a random id; events are anonymous until sign-in. Errors may be mirrored to Sentry. The website may use self-hosted, cookie-less Umami visit counting.
- Camera: used only after the user turns on camera mode. Frames are processed on the device by MediaPipe Face Landmarker to detect whether the user looks at the screen or at the notebook. Video is never recorded, stored or transmitted; no biometric identification is performed.
- Microphone: knock/click detection analyses only the sound level on the device; audio is never recorded or transmitted.
- Voice commands (optional, off by default): use the platform Web Speech API. In Chrome, audio is processed by Google; in other browsers, by the browser vendor (e.g. Microsoft in Edge); in Safari and the iOS app, by Apple. Voice commands listen continuously until turned off. Voice input is not available in the Android app. The developer never receives audio or transcripts.
- Files (PDF, DOCX, TXT, photos) are parsed on the device and never uploaded. Text in photos of pages and in scanned PDFs is recognised on the device by the bundled Tesseract engine (tesseract.js); photos never leave the device and are not stored — only the extracted text is kept in memory (or in local storage if you save it to the local profile). On the website the engine and the Russian/English language data (about 8 MB) are downloaded from the site itself the first time (or from a public CDN as a fallback) and cached for offline use; the apps bundle them. Printed text works well; handwriting and blackboards are still inaccurate, and the app says so. Notebook checking (handwriting) is a demo in this version.
- Local storage: reading position, “don’t understand” marks, margin notes, an optional local profile (name, university, group, saved notes), daily word statistics, settings (including the last chosen mode) and UI flags (e.g. the install tip or the tutorial was dismissed, the camera should use the CPU) are kept in the device’s local storage only. In the apps, the open text is kept in session storage only while the privacy policy is open, to restore it on return. The website also caches the app’s own files for offline use.
- Network: the EyeCopy server (api.<EyeCopy domain>) is contacted only for sign-in, sync, cloud recognition and technical events; Google, Telegram or GitHub takes part in sign-in (Google: account id, name, e-mail, avatar; Telegram: id, name, username, avatar; GitHub: id, login, name, avatar); Anthropic or Alibaba Cloud in cloud recognition (see above). The website is hosted on GitHub Pages, which logs visitor IP addresses for security. The apps bundle all files. Public CDNs (jsDelivr, cdnjs, unpkg; Google Cloud Storage for the MediaPipe model) are contacted only as a fallback if a bundled library or model fails to load; they see the IP address like any website. Fonts have no fallback source. The stand-alone demo file EyeCopy-demo.html loads its libraries from these CDNs and its fonts from Google Fonts. External links open in the browser only when tapped.
- Lecture streaming (optional, requires the lecturer’s account): the lecturer’s phone sends single board frames (JPEG ≤ 1600 px, only when the board has changed and movement has stopped; never while writing) to the EyeCopy server and the same recognition service as cloud recognition (Anthropic or Alibaba Cloud, named in the dialog before streaming starts); frames are not stored, only the recognised text blocks, readable by anyone who has the session code. Sessions are deleted 30 days after they end and together with the lecturer’s account. Participants join by code without signing in; the server keeps no list of them, only the number of open connections.
- Demo features (groups, “Explain”, AI summary, notebook check, the “Demo” lecture) are local mock-ups with sample data; sync is real only with an account.
- Children: the app is not specifically directed at children under 13; without an account nothing leaves the device, and the account and technical events are optional.
- Deletion: Profile → Settings → “Стереть локальные данные” (Erase local data) erases all EyeCopy data in local and session storage, including marks, margin notes and the session token; “Удалить аккаунт” deletes server data; or uninstall the app / clear site data.
- Permissions (camera, microphone, speech recognition) are optional and can be revoked in system settings at any time.