update privacy

This commit is contained in:
heaven 2026-06-03 01:20:32 +03:00
parent c0658c38ec
commit a334612734

View file

@ -1,373 +1,449 @@
<!doctype html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" /> <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<meta name="theme-color" content="#0d0e11" /> <meta name="theme-color" content="#0d0e11" />
<meta name="robots" content="index,follow" /> <meta name="robots" content="index,follow" />
<title>Vojo — Privacy Policy</title> <title>Vojo — Privacy Policy</title>
<style> <style>
:root { :root {
--bg: #0d0e11; --bg: #0d0e11;
--panel: #181a20; --panel: #181a20;
--surface: #21232b; --surface: #21232b;
--text: #e6e6e9; --text: #e6e6e9;
--text-strong: #f4f4f6; --text-strong: #f4f4f6;
--muted: rgba(230, 230, 233, 0.62); --muted: rgba(230, 230, 233, 0.62);
--faint: rgba(230, 230, 233, 0.38); --faint: rgba(230, 230, 233, 0.38);
--divider: rgba(255, 255, 255, 0.08); --divider: rgba(255, 255, 255, 0.08);
--fleet: #9580ff; --fleet: #9580ff;
--fleet-soft: #a59cff; --fleet-soft: #a59cff;
color-scheme: dark; color-scheme: dark;
}
*,
*::before,
*::after {
box-sizing: border-box;
}
html,
body {
margin: 0;
padding: 0;
background: var(--bg);
color: var(--text);
font-family: -apple-system, 'SF Pro Text', 'Inter', system-ui, sans-serif;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
}
body {
min-height: 100vh;
line-height: 1.7;
font-size: 16px;
}
.frame {
max-width: 680px;
margin: 0 auto;
padding: 56px 28px 120px;
}
header.doc {
padding-bottom: 28px;
margin-bottom: 40px;
border-bottom: 1px solid var(--divider);
}
.brand {
display: flex;
align-items: center;
gap: 9px;
margin-bottom: 22px;
color: var(--muted);
font-size: 13px;
letter-spacing: 0.2px;
}
.brand-dot {
width: 8px;
height: 8px;
border-radius: 99px;
background: var(--fleet);
}
.brand-name {
color: var(--text-strong);
font-weight: 600;
}
.brand-sep {
color: var(--faint);
}
h1 {
font-size: 34px;
line-height: 1.15;
font-weight: 600;
margin: 0 0 10px;
letter-spacing: -0.6px;
color: var(--text-strong);
}
.effective {
color: var(--muted);
font-size: 14px;
margin: 0;
}
.lang-switch {
display: inline-flex;
margin-top: 24px;
font-size: 13px;
color: var(--muted);
}
.lang-switch button {
appearance: none;
-webkit-appearance: none;
background: transparent;
border: 0;
padding: 4px 0;
font: inherit;
color: var(--muted);
cursor: pointer;
transition: color 0.15s ease;
}
.lang-switch button:hover {
color: var(--text);
}
.lang-switch button[aria-pressed='true'] {
color: var(--text-strong);
font-weight: 600;
}
.lang-switch .sep {
padding: 0 10px;
color: var(--faint);
user-select: none;
}
h2 {
font-size: 20px;
font-weight: 600;
margin: 44px 0 12px;
letter-spacing: -0.2px;
color: var(--text-strong);
scroll-margin-top: 24px;
}
p {
margin: 0 0 14px;
color: var(--text);
}
ul {
margin: 0 0 18px;
padding-left: 22px;
}
ul li {
margin: 8px 0;
padding-left: 4px;
}
ul li::marker {
color: var(--faint);
}
ul li b,
p b {
color: var(--text-strong);
font-weight: 600;
}
a {
color: var(--fleet-soft);
text-decoration: none;
border-bottom: 1px solid rgba(165, 156, 255, 0.35);
transition: color 0.15s ease, border-color 0.15s ease;
}
a:hover {
color: #c0b9ff;
border-bottom-color: rgba(192, 185, 255, 0.7);
}
section[hidden] {
display: none;
}
section > h2:first-of-type {
margin-top: 0;
}
footer.doc {
margin-top: 64px;
padding-top: 24px;
border-top: 1px solid var(--divider);
font-size: 13px;
color: var(--faint);
display: flex;
justify-content: space-between;
align-items: center;
gap: 12px;
flex-wrap: wrap;
}
footer.doc .copy {
font-family: ui-monospace, 'JetBrains Mono', monospace;
}
footer.doc a {
color: var(--muted);
border-bottom-color: transparent;
}
footer.doc a:hover {
color: var(--text);
border-bottom-color: var(--divider);
}
@media (max-width: 560px) {
.frame {
padding: 36px 20px 96px;
} }
*, *::before, *::after { box-sizing: border-box; } h1 {
html, body { font-size: 28px;
margin: 0; }
padding: 0; h2 {
background: var(--bg); font-size: 18px;
color: var(--text); margin: 36px 0 10px;
font-family: -apple-system, "SF Pro Text", "Inter", system-ui, sans-serif;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
} }
body { body {
min-height: 100vh; font-size: 15.5px;
line-height: 1.7; line-height: 1.65;
font-size: 16px;
}
.frame {
max-width: 680px;
margin: 0 auto;
padding: 56px 28px 120px;
}
header.doc {
padding-bottom: 28px;
margin-bottom: 40px;
border-bottom: 1px solid var(--divider);
}
.brand {
display: flex;
align-items: center;
gap: 9px;
margin-bottom: 22px;
color: var(--muted);
font-size: 13px;
letter-spacing: 0.2px;
}
.brand-dot {
width: 8px;
height: 8px;
border-radius: 99px;
background: var(--fleet);
}
.brand-name { color: var(--text-strong); font-weight: 600; }
.brand-sep { color: var(--faint); }
h1 {
font-size: 34px;
line-height: 1.15;
font-weight: 600;
margin: 0 0 10px;
letter-spacing: -0.6px;
color: var(--text-strong);
}
.effective { color: var(--muted); font-size: 14px; margin: 0; }
.lang-switch {
display: inline-flex;
margin-top: 24px;
font-size: 13px;
color: var(--muted);
}
.lang-switch button {
appearance: none;
-webkit-appearance: none;
background: transparent;
border: 0;
padding: 4px 0;
font: inherit;
color: var(--muted);
cursor: pointer;
transition: color .15s ease;
}
.lang-switch button:hover { color: var(--text); }
.lang-switch button[aria-pressed="true"] {
color: var(--text-strong);
font-weight: 600;
}
.lang-switch .sep {
padding: 0 10px;
color: var(--faint);
user-select: none;
}
h2 {
font-size: 20px;
font-weight: 600;
margin: 44px 0 12px;
letter-spacing: -0.2px;
color: var(--text-strong);
scroll-margin-top: 24px;
}
p { margin: 0 0 14px; color: var(--text); }
ul {
margin: 0 0 18px;
padding-left: 22px;
}
ul li { margin: 8px 0; padding-left: 4px; }
ul li::marker { color: var(--faint); }
ul li b, p b { color: var(--text-strong); font-weight: 600; }
a {
color: var(--fleet-soft);
text-decoration: none;
border-bottom: 1px solid rgba(165, 156, 255, 0.35);
transition: color .15s ease, border-color .15s ease;
}
a:hover {
color: #c0b9ff;
border-bottom-color: rgba(192, 185, 255, 0.7);
}
section[hidden] { display: none; }
section > h2:first-of-type { margin-top: 0; }
footer.doc {
margin-top: 64px;
padding-top: 24px;
border-top: 1px solid var(--divider);
font-size: 13px;
color: var(--faint);
display: flex;
justify-content: space-between;
align-items: center;
gap: 12px;
flex-wrap: wrap;
}
footer.doc .copy {
font-family: ui-monospace, "JetBrains Mono", monospace;
}
footer.doc a { color: var(--muted); border-bottom-color: transparent; }
footer.doc a:hover { color: var(--text); border-bottom-color: var(--divider); }
@media (max-width: 560px) {
.frame { padding: 36px 20px 96px; }
h1 { font-size: 28px; }
h2 { font-size: 18px; margin: 36px 0 10px; }
body { font-size: 15.5px; line-height: 1.65; }
} }
}
</style> </style>
</head> </head>
<body> <body>
<div class="frame"> <div class="frame">
<header class="doc">
<header class="doc">
<div class="brand"> <div class="brand">
<span class="brand-dot" aria-hidden="true"></span> <span class="brand-dot" aria-hidden="true"></span>
<span class="brand-name">Vojo</span> <span class="brand-name">Vojo</span>
<span class="brand-sep">·</span> <span class="brand-sep">·</span>
<span>Legal</span> <span>Legal</span>
</div> </div>
<h1 data-i18n-h1>Privacy Policy</h1> <h1 data-i18n-h1>Privacy Policy</h1>
<p class="effective" data-i18n-effective>Effective 13 May 2026</p> <p class="effective" data-i18n-effective>Effective 13 May 2026</p>
<div class="lang-switch" role="group" aria-label="Language"> <div class="lang-switch" role="group" aria-label="Language">
<button type="button" data-lang="en" aria-pressed="true">English</button> <button type="button" data-lang="en" aria-pressed="true">English</button>
<span class="sep" aria-hidden="true">/</span> <span class="sep" aria-hidden="true">/</span>
<button type="button" data-lang="ru" aria-pressed="false">Русский</button> <button type="button" data-lang="ru" aria-pressed="false">Русский</button>
</div> </div>
</header> </header>
<section lang="en" data-lang="en"> <section lang="en" data-lang="en">
<p>This is the privacy policy for <b>Vojo</b>, a chat app built on the open <h2>How Vojo works</h2>
<a href="https://matrix.org" rel="noopener">Matrix</a> protocol. It's maintained by <p>
the Vojo Project, an independent developer. If you have questions about anything Vojo is a chat app built on the open
here, write to <a href="mailto:vojochatdev@gmail.com">vojochatdev@gmail.com</a>.</p> <a href="https://matrix.org" rel="noopener">Matrix</a> protocol, maintained by the Vojo
Project, an independent developer. Your messages, profile and rooms live on a Matrix
server. By default that's <code>vojo.chat</code>, which we run. You can also sign in to
any other Matrix server you trust — if you do, the operator of that server holds your
data, not us. We try to keep this short; if anything is unclear, write to
<a href="mailto:vojochatdev@gmail.com">vojochatdev@gmail.com</a>.
</p>
<p>We try to keep this short and readable. If something is unclear, ask.</p> <h2>What we hold, and why</h2>
<p>
To run the app we keep your account and profile, the messages and rooms you send and
receive, the media you share, and basic technical data such as your IP address and
connection times. Your device also caches messages and keys locally so you can read
offline and stay signed in.
</p>
<h2>How Vojo works, briefly</h2> <p>
<p>Your messages, profile and rooms live on a Matrix server. By default that's We process this to deliver and sync your messages and to ring your phone for calls —
<code>vojo.chat</code>, which we run. You can also sign in to any other Matrix that's our agreement with you. We keep limited logs to fight spam and abuse, which is our
server you trust — if you do, the operator of that server is the one holding your legitimate interest. Optional features run only if you turn them on, with your consent. We
data, not us.</p> don't advertise, run analytics in the app, sell your data or profile you.
</p>
<h2>What we hold and what we use it for</h2> <p>
<p>To make the app work we keep the obvious things: your account, the messages and You can turn on end-to-end encryption per chat. It isn't on by default: in a chat without
rooms you send and receive, the media you share, and basic technical data (IP it, our server can see message content. With it on, we can see who's talking and when, but
address, connection times) generated when your device talks to our servers. Your not what's said. Voice and video calls are encrypted between participants and may pass
device also caches messages and keys locally so you can read them offline and stay through our servers in transit; we don't record or store them.
signed in.</p> </p>
<p>Direct conversations are end-to-end encrypted by default. In an encrypted room <h2>Vojo AI</h2>
we can see who's talking to whom and when, but not what they're saying. In an <p>
unencrypted room we see the content too.</p> Vojo AI is an optional assistant. You don't have to use it — but if you start a one-to-one
chat with it, every message you send in that chat is forwarded to third-party AI providers
<p>Voice calls are encrypted between participants. When your device can't reach the to write the reply: Grok by xAI (USA) and Google's Gemini (USA). In a group chat, only
other side directly, the audio is relayed through our infrastructure on its way messages that mention it are sent. If a reply needs current information, your question may
through — we don't record it and we don't keep it.</p> also be sent to Google Search to look it up. Each provider handles your text under its own
privacy policy. By using Vojo AI you agree to your messages being sent to these providers
<p>We use this data to run the service: deliver messages, sync your devices, ring to generate replies. Because they are in the United States, this transfers that content
your phone for incoming calls, keep limited logs to fight abuse and spam. That's outside the EU; the transfer relies on your explicit consent to this optional feature.
the whole list. No advertising, no analytics, no resale, no profiling.</p> Replies are AI-generated and can be confidently wrong, so treat them as a first draft and
please don't send secrets. You can read the providers' policies at
<a href="https://x.ai/legal/privacy-policy" rel="noopener">x.ai/legal/privacy-policy</a>
and
<a href="https://ai.google.dev/gemini-api/terms" rel="noopener"
>ai.google.dev/gemini-api/terms</a
>.
</p>
<h2>Who else is involved</h2> <h2>Who else is involved</h2>
<ul> <p>
<li><b>Our hosting provider.</b> The Push notifications go through Google so your phone can wake and ring. For encrypted chats
<a href="https://www.hostinger.com" rel="noopener">Hostinger</a> the notification carries only the routing info needed to fetch the message locally; for
infrastructure carrying <code>vojo.chat</code> sits in the European Union.</li> unencrypted chats it may include a short preview. Signing up loads a Google
<li><b>Google's push service.</b> Push notifications go through Google so your human-verification check (reCAPTCHA), and Google sees that interaction. If you choose to
phone can wake up and ring or buzz. For end-to-end encrypted chats the connect another network you use, such as a messenger you already have an account on, your
notification only carries the routing info needed to fetch the message messages with it pass through bridge infrastructure we run, and that network sees them too
locally — the content stays on your Matrix server. For unencrypted chats — none of this is on unless you turn it on.
Google may see a short preview (who, where, snippet). This is the only </p>
routine reason data leaves the EU; we rely on the Standard Contractual
Clauses for that transfer.</li> <p>
<li><b>Bot checks.</b> Signing up, and a couple of optional features, briefly Our servers are hosted in the European Union. Some of the above sends data to providers
load a third-party "are you a human" check. That provider sees your outside the EU. Apart from the Vojo AI transfer described above (which relies on your
interaction with the puzzle and is governed by its own privacy policy.</li> consent), those transfers are covered by Standard Contractual Clauses, or by an adequacy
<li><b>Optional bridges.</b> If you choose to connect Telegram, Discord or framework where the recipient is certified under one; a copy of the relevant safeguards,
WhatsApp through Vojo, your messages with those networks have to pass and the current list of providers, is available on request at the address above.
through bridge infrastructure we run, and the network itself sees them </p>
too. None of this turns on unless you opt in.</li>
</ul>
<h2>Permissions on your phone</h2> <h2>Permissions on your phone</h2>
<p>On Android we ask for: the microphone (only used during calls); notifications <p>
(so we can show you messages and ring for calls); permission to show calls over On Android we ask for the microphone (used only during calls), notifications, permission
the lock screen and to keep a call running with the screen off; and network access. to show and keep calls running over the lock screen, and network access. That's it — we
That's it. We don't touch your address book, photo library, SMS, precise location don't touch your contacts, photo library, SMS, precise location or call log.
or call log.</p> </p>
<h2>How long we keep things</h2> <h2>How long we keep things, and your rights</h2>
<p>Your messages and account stay on your Matrix server until you delete them or <p>
ask us to deactivate the account. Deletion is processed within about thirty days. Your messages and account stay on your Matrix server until you delete them or ask us to
Server access logs are kept for no more than thirty days and then rotated out.</p> deactivate the account. There is no in-app delete button yet: to have your account
deleted, email <a href="mailto:vojochatdev@gmail.com">vojochatdev@gmail.com</a> with your
<code>@username:vojo.chat</code> ID (the steps and details are at
<a href="https://vojo.chat/delete-account">vojo.chat/delete-account</a>). We complete
deletion within about thirty days. Server access logs are kept no longer than thirty days.
Data cached on your device is removed when you uninstall Vojo or clear its data in your
phone's settings.
</p>
<p>Data cached on your device goes away when you uninstall Vojo or clear its data <p>
in your phone's settings. Signing out ends your session but doesn't always scrub If you live in the EU/EEA (and in many places elsewhere the law is similar), you can ask
every cached message immediately — the cleanest reset is an uninstall.</p> us to show, correct, export or delete your data, restrict or stop a particular use, or
withdraw a consent you've given — and you can complain to your local data-protection
authority. Email the address at the top. Vojo isn't aimed at anyone under 16, and we don't
knowingly collect children's data. The current version of this policy always lives at
<a href="https://vojo.chat/privacy">vojo.chat/privacy</a>; if we change it in a way that
affects you, we'll update the date above and flag it in the app.
</p>
</section>
<h2>Your rights</h2> <section lang="ru" data-lang="ru" hidden>
<p>If you live in the EU/EEA (and in many other places the law works similarly), <h2>Как устроено Vojo</h2>
you can ask us to show you what we hold, fix something that's wrong, delete your <p>
data, hand it over in a portable form, or stop a particular use. You can also Vojo — чат-приложение на открытом протоколе
withdraw any consent you've given for optional features, and complain to your <a href="https://matrix.org" rel="noopener">Matrix</a>, его поддерживает проект Vojo,
local data-protection authority if you think we're handling things badly. Email независимый разработчик. Ваши сообщения, профиль и комнаты хранятся на Matrix-сервере. По
the address at the top and we'll take it from there.</p> умолчанию это <code>vojo.chat</code>, который держим мы. Вы можете войти и на любой другой
Matrix-сервер, которому доверяете — тогда вашими данными распоряжается оператор того
сервера, а не мы. Стараемся писать коротко; если что-то непонятно — напишите на
<a href="mailto:vojochatdev@gmail.com">vojochatdev@gmail.com</a>.
</p>
<h2>Kids, changes, contact</h2> <h2>Что мы храним и зачем</h2>
<p>Vojo isn't aimed at anyone under 16, and we don't knowingly collect data from <p>
children. If we change this policy in a way that actually affects you, we'll Чтобы приложение работало, мы храним ваш аккаунт и профиль, отправленные и полученные
update the date above and try to flag it inside the app. The current version сообщения и комнаты, прикреплённые медиафайлы и базовые технические данные — IP-адрес и
always lives at <a href="https://vojo.chat/privacy">vojo.chat/privacy</a>. For время обращений. На самом устройстве хранится локальный кэш сообщений и ключей, чтобы
anything else: <a href="mailto:vojochatdev@gmail.com">vojochatdev@gmail.com</a>.</p> читать офлайн и не входить заново.
</section> </p>
<section lang="ru" data-lang="ru" hidden> <p>
<p>Это политика конфиденциальности <b>Vojo</b> — чат-приложения на открытом Эти данные мы обрабатываем, чтобы доставлять и синхронизировать сообщения и звонить на ваш
протоколе <a href="https://matrix.org" rel="noopener">Matrix</a>. Его поддерживает телефон при входящем вызове — это часть нашего соглашения с вами. Ограниченные логи мы
проект Vojo, независимый разработчик. Если по тексту возникают вопросы — пишите ведём для борьбы со спамом и злоупотреблениями — это наш законный интерес. Дополнительные
на <a href="mailto:vojochatdev@gmail.com">vojochatdev@gmail.com</a>.</p> функции работают только если вы их включили, по вашему согласию. Мы не показываем рекламу,
не ведём аналитику в приложении, не продаём данные и не профилируем вас.
</p>
<p>Постарались уложиться в нормальный читаемый объём. Если что-то непонятно — <p>
спрашивайте.</p> Сквозное шифрование можно включить для каждого чата отдельно. По умолчанию оно выключено:
в чате без него содержимое сообщений видит наш сервер. Когда оно включено, мы видим, кто и
когда переписывается, но не само содержимое. Голосовые и видеозвонки шифруются между
участниками и в пути могут проходить через наши серверы; мы их не записываем и не храним.
</p>
<h2>Как устроено</h2> <h2>Vojo AI</h2>
<p>Ваши сообщения, профиль и список комнат живут на Matrix-сервере. По умолчанию <p>
это <code>vojo.chat</code>, который держим мы. Вы можете войти на любой другой Vojo AI — необязательный ассистент. Пользоваться им необязательно, но если вы начнёте с
Matrix-сервер, которому доверяете — если так, оператором ваших данных будет тот ним личный чат, каждое отправленное в этом чате сообщение передаётся сторонним
сервер, не мы.</p> ИИ-сервисам, чтобы составить ответ: Grok от xAI (США) и Google Gemini (США). В групповом
чате отправляются только те сообщения, где его упомянули. Если для ответа нужна свежая
<h2>Что у нас лежит и зачем</h2> информация, ваш вопрос может также уйти в Google Поиск. Каждый сервис обрабатывает ваш
<p>Чтобы приложение работало, у нас лежат предсказуемые вещи: ваш аккаунт, ваши текст по своей политике конфиденциальности. Пользуясь Vojo AI, вы соглашаетесь, что ваши
сообщения и комнаты, медиа, и базовые технические данные (IP, время запросов), сообщения отправляются этим сервисам для генерации ответов. Поскольку они находятся в США,
которые возникают, когда устройство разговаривает с нашими серверами. На самом при этом содержимое передаётся за пределы ЕС; основанием для передачи служит ваше явное
устройстве лежит локальный кэш сообщений и ключей — чтобы можно было читать согласие на эту необязательную функцию. Ответы генерирует ИИ, и он может уверенно
офлайн и не входить заново каждый раз.</p> ошибаться — считайте их черновиком и не отправляйте секреты. Политики сервисов можно
прочитать на
<p>Личные переписки по умолчанию защищены end-to-end шифрованием. В зашифрованной <a href="https://x.ai/legal/privacy-policy" rel="noopener">x.ai/legal/privacy-policy</a> и
комнате мы видим, кто кому пишет и когда, но не видим, что именно. В <a href="https://ai.google.dev/gemini-api/terms" rel="noopener"
незашифрованных комнатах мы видим и содержимое.</p> >ai.google.dev/gemini-api/terms</a
>.
<p>Голосовые звонки шифруются между участниками. Если устройство не может </p>
дотянуться до собеседника напрямую, аудио ретранслируется через нашу
инфраструктуру по пути — мы его не записываем и не храним.</p>
<p>Все эти данные мы используем для того, чтобы сервис работал: доставка
сообщений, синхронизация устройств, входящие звонки, ограниченные логи для борьбы
со спамом и злоупотреблениями. Это весь список. Никакой рекламы, аналитики,
перепродажи или профилирования.</p>
<h2>Кто ещё в этом участвует</h2> <h2>Кто ещё в этом участвует</h2>
<ul> <p>
<li><b>Наш хостинг.</b> Push-уведомления идут через Google, чтобы телефон проснулся и зазвонил. Для зашифрованных
<a href="https://www.hostinger.com" rel="noopener">Hostinger</a> держит чатов уведомление несёт только маршрутную информацию, по которой сообщение подгружается
инфраструктуру <code>vojo.chat</code> в Европейском союзе.</li> локально; для незашифрованных в нём может быть короткий предпросмотр. При регистрации
<li><b>Push-сервис Google.</b> Push-уведомления идут через Google, чтобы загружается проверка Google, что вы человек (reCAPTCHA), и Google видит это
телефон проснулся и зазвонил. Для зашифрованных переписок уведомление взаимодействие. Если вы решите подключить другую сеть, которой пользуетесь, например
несёт только маршрутную информацию, нужную для того чтобы подгрузить мессенджер, где у вас уже есть аккаунт, сообщения с ней проходят через мостовую
сообщение локально — содержимое остаётся на Matrix-сервере. Для инфраструктуру, которую держим мы, и сама сеть тоже их видит — без вашего включения это не
незашифрованных Google может видеть короткий предпросмотр (кто, где, работает.
фрагмент). Это единственный регулярный случай, когда данные выходят за </p>
пределы ЕС; передача идёт по Стандартным договорным условиям Европейской
комиссии.</li> <p>
<li><b>Капча.</b> При регистрации и в паре дополнительных функций ненадолго Наши серверы размещены в Европейском союзе. Часть перечисленного отправляет данные
подгружается сторонняя проверка «вы не робот». Этот провайдер видит ваше сервисам за пределами ЕС. Кроме передачи в Vojo AI, описанной выше (она основана на вашем
взаимодействие с капчей и регулируется собственной политикой.</li> согласии), эти передачи покрыты Стандартными договорными положениями (SCC) или рамочным
<li><b>Опциональные мосты.</b> Если вы решите подключить Telegram, Discord соглашением об адекватности, если получатель в нём сертифицирован; копию соответствующих
или WhatsApp через Vojo, сообщения с этими сетями неизбежно проходят гарантий и актуальный список сервисов можно запросить по адресу выше.
через мостовую инфраструктуру, которую держим мы, и сама сеть тоже их </p>
видит. Без вашего явного действия это не включается.</li>
</ul>
<h2>Разрешения на телефоне</h2> <h2>Разрешения на телефоне</h2>
<p>На Android приложение просит: микрофон (используется только во время звонка); <p>
уведомления (чтобы показывать сообщения и звонки); право показывать звонок поверх На Android приложение запрашивает микрофон (только во время звонка), уведомления, право
локскрина и держать его при выключенном экране; доступ к сети. И всё. Мы не показывать и удерживать звонок поверх экрана блокировки и доступ к сети. И всё — мы не
трогаем адресную книгу, фотогалерею, SMS, точную геолокацию и журнал вызовов.</p> обращаемся к контактам, фотогалерее, SMS, точной геолокации и журналу вызовов.
</p>
<h2>Сколько мы это храним</h2> <h2>Сколько мы храним и ваши права</h2>
<p>Сообщения и аккаунт лежат на Matrix-сервере до тех пор, пока вы их не <p>
удалите или не попросите деактивировать аккаунт. Удаление обрабатывается в Сообщения и аккаунт хранятся на Matrix-сервере, пока вы их не удалите или не попросите
течение тридцати дней. Журналы доступа на сервере хранятся не более тридцати деактивировать аккаунт. Кнопки удаления в приложении пока нет: чтобы удалить аккаунт,
дней, затем уходят на ротацию.</p> напишите на <a href="mailto:vojochatdev@gmail.com">vojochatdev@gmail.com</a> и укажите
свой ID вида <code>@username:vojo.chat</code> (шаги и подробности — на
<a href="https://vojo.chat/delete-account">vojo.chat/delete-account</a>). Удаление мы
выполняем примерно за тридцать дней. Журналы доступа на сервере хранятся не дольше
тридцати дней. Кэш на устройстве удаляется, когда вы удаляете Vojo или очищаете его данные
в настройках телефона.
</p>
<p>Кэш на устройстве пропадает, когда вы удаляете Vojo или очищаете его данные в <p>
настройках телефона. Выход из аккаунта прекращает сессию, но не всегда подчищает Если вы живёте в ЕС/ЕЭЗ (во многих странах закон работает похоже), вы можете попросить
весь кэш сразу — самый чистый способ обнулиться — это переустановка.</p> показать, исправить, выгрузить или удалить ваши данные, ограничить или прекратить
конкретное использование, отозвать данное ранее согласие — и пожаловаться в местный
надзорный орган по защите данных. Напишите на адрес в начале. Vojo не рассчитан на лиц
младше 16 лет, и мы сознательно не собираем данные детей. Актуальная версия этой политики
всегда доступна по адресу <a href="https://vojo.chat/privacy">vojo.chat/privacy</a>; если
мы изменим её так, что это вас затронет, обновим дату вверху и отметим это в приложении.
</p>
</section>
<h2>Ваши права</h2> <footer class="doc">
<p>Если вы живёте в ЕС/ЕЭЗ (а во многих других местах закон работает похоже), вы
можете попросить нас показать, что у нас лежит, поправить неверное, удалить,
отдать в переносимом виде, остановить конкретное использование. Можно отозвать
согласие на дополнительные функции и пожаловаться в местный надзорный орган, если
кажется, что мы что-то делаем не так. Напишите на адрес сверху, и пойдём
разбираться.</p>
<h2>Дети, изменения, контакты</h2>
<p>Vojo не рассчитан на людей младше 16 лет, и мы сознательно не собираем данные
детей. Если что-то поменяется так, что это вас реально касается, обновим дату в
начале и постараемся отметить это в самом приложении. Текущая версия всегда
лежит по адресу <a href="https://vojo.chat/privacy">vojo.chat/privacy</a>. По
любым другим вопросам:
<a href="mailto:vojochatdev@gmail.com">vojochatdev@gmail.com</a>.</p>
</section>
<footer class="doc">
<span class="copy">© Vojo Project · 2026</span> <span class="copy">© Vojo Project · 2026</span>
<a href="https://vojo.chat">vojo.chat</a> <a href="https://vojo.chat">vojo.chat</a>
</footer> </footer>
</div>
</div> <script>
(function () {
<script>
(function () {
var buttons = document.querySelectorAll('.lang-switch button'); var buttons = document.querySelectorAll('.lang-switch button');
var sections = document.querySelectorAll('section[data-lang]'); var sections = document.querySelectorAll('section[data-lang]');
var h1 = document.querySelector('[data-i18n-h1]'); var h1 = document.querySelector('[data-i18n-h1]');
@ -375,26 +451,32 @@
var H1 = { en: 'Privacy Policy', ru: 'Политика конфиденциальности' }; var H1 = { en: 'Privacy Policy', ru: 'Политика конфиденциальности' };
var EFF = { en: 'Effective 13 May 2026', ru: 'Действует с 13 мая 2026 г.' }; var EFF = { en: 'Effective 13 May 2026', ru: 'Действует с 13 мая 2026 г.' };
function setLang(lang) { function setLang(lang) {
buttons.forEach(function (b) { buttons.forEach(function (b) {
b.setAttribute('aria-pressed', String(b.dataset.lang === lang)); b.setAttribute('aria-pressed', String(b.dataset.lang === lang));
}); });
sections.forEach(function (s) { sections.forEach(function (s) {
s.hidden = s.dataset.lang !== lang; s.hidden = s.dataset.lang !== lang;
}); });
if (h1 && H1[lang]) h1.textContent = H1[lang]; if (h1 && H1[lang]) h1.textContent = H1[lang];
if (eff && EFF[lang]) eff.textContent = EFF[lang]; if (eff && EFF[lang]) eff.textContent = EFF[lang];
document.documentElement.lang = lang; document.documentElement.lang = lang;
document.title = (lang === 'ru' ? 'Vojo — Политика конфиденциальности' : 'Vojo — Privacy Policy'); document.title =
try { localStorage.setItem('vojo-privacy-lang', lang); } catch (e) {} lang === 'ru' ? 'Vojo — Политика конфиденциальности' : 'Vojo — Privacy Policy';
try {
localStorage.setItem('vojo-privacy-lang', lang);
} catch (e) {}
} }
buttons.forEach(function (b) { buttons.forEach(function (b) {
b.addEventListener('click', function () { setLang(b.dataset.lang); }); b.addEventListener('click', function () {
setLang(b.dataset.lang);
});
}); });
var stored = null; var stored = null;
try { stored = localStorage.getItem('vojo-privacy-lang'); } catch (e) {} try {
stored = localStorage.getItem('vojo-privacy-lang');
} catch (e) {}
setLang(stored || 'en'); setLang(stored || 'en');
})(); })();
</script> </script>
</body>
</body>
</html> </html>