Оформление
Приватность
Приложение, которое видит каждое нажатие клавиши, обязано объяснить, что оно с этим делает. Коротко: обрабатывает в памяти и забывает.
Что происходит с набранным текстом
LangFlip держит в памяти последнее слово — ровно столько, сколько нужно, чтобы решить, менять его или нет. Как только слово завершено и решение принято, буфер очищается. На диск не пишется ничего: ни слов, ни нажатий, ни истории исправлений.
Статистика считает события, а не текст: сколько раз сработало исправление в такой-то день. По этим числам восстановить набранное невозможно.
Защищённые поля ввода — пароли и всё, что macOS помечает как secure input, — исключены полностью: приложение в них не заглядывает.
Что происходит с голосом
Звук записывается только пока вы удерживаете клавишу диктовки, распознаётся на этом же Mac и стирается из памяти после того, как текст напечатан. Аудиофайлы не сохраняются.
Сеть
У приложения есть ровно два повода выйти в сеть, и оба выключены по умолчанию.
Первый — диктовка: в Настройках → «Диктовка» вы выбираете речевую модель, и приложение скачивает выбранную с Hugging Face, один раз, при первом использовании.
Второй — проверка обновлений: если вы включите её сами, приложение делает GET-запрос на https://langflip.app/latest.json, публичный файл с номером текущей версии и ссылкой на загрузку. Запрос не несёт ни версии приложения, ни идентификатора, ни какой-либо статистики — сервер видит только, что какой-то IP запросил публичный файл.
Аналитики, отправки отчётов об ошибках и любых других сетевых обращений нет.
Если не включать ни диктовку, ни проверку обновлений, приложение не выйдет в интернет никогда.
Почему этому можно верить
Обещания в документации ничего не стоят, поэтому они проверяются автоматически. При каждой сборке запускается проверка, которая ищет в исходном коде и в готовом бинарном файле:
- обращения к буферу обмена;
- библиотеки аналитики и сбора статистики;
- любые сетевые адреса, кроме загрузки речевой модели, проверки обновлений и четырёх ссылок, которые просто открываются в браузере (сайт, исходный код, политика приватности и vibecoded.ru из вкладки «О программе»);
- сетевые вызовы за пределами кода диктовки и проверки обновлений;
- попадание текста и содержимого полей в диагностические отчёты.
Если что-то из этого находится, сборка падает и релиз не выходит. Эта проверка встроена в процесс выпуска, а не запускается по желанию.
Файл диагностики
Кнопка «Сохранить диагностику…» на вкладке «Основные» выгружает счётчики и состояние разрешений — то, что помогает понять, почему приложение не работает. Набранный текст, содержимое полей и распознанная речь в этот файл не попадают: за этим следит та же автоматическая проверка.
Файл сохраняется туда, куда вы укажете, и никуда не отправляется — решение, показывать его кому-то или нет, остаётся за вами.
Что хранится на диске
| Что | Где |
|---|---|
| Настройки | ~/Library/Preferences/io.langflip.LangFlip.plist |
| Счётчики статистики (90 дней) | там же |
| Личный словарь | ~/Library/Application Support/LangFlip/CustomWords.json |
| Речевая модель, если включена диктовка | ~/Library/Application Support/LangFlip |
Удаление приложения вместе с этими файлами описано в разделе «Установка».