feat(ai-bot): expand the product KB into a verified how-to manual with bilingual UI paths and raise its size cap

This commit is contained in:
heaven 2026-06-12 15:44:02 +03:00
parent 1a949e9a80
commit 99391d9f28
2 changed files with 110 additions and 52 deletions

View file

@ -726,13 +726,14 @@ func (b *Bot) respond(ctx context.Context, roomID, threadRoot string, isDM bool,
const maxPromptTokens = 8000 const maxPromptTokens = 8000
// maxProjectKBTokens caps the curated project KB at startup. The KB is injected via // maxProjectKBTokens caps the curated project KB at startup. The KB is injected via
// insertSystemNote AFTER buildContext truncates history, so an oversized KB could push the // insertSystemNote runs AFTER buildContext truncates history, so the KB rides on top of
// real prompt past maxPromptTokens (the reservation estimate). It is a COARSE sanity backstop, // the maxPromptTokens window (history is never starved by it) — the cap is a COARSE
// not a precise budget: estimateTokens is runes/4 (ASCII-biased) and a Cyrillic KB tokenizes // startup sanity backstop, not a precise budget: estimateTokens is runes/4. Raised from
// denser, so a KB near this cap can be more real tokens than estimated — fine, because a real // 2500 when the KB grew into a real how-to manual (per-feature UI paths in both locales,
// curated single-product FAQ is ~250800 tokens (far under the cap) and the prompt stays well // ~6k tokens): that costs under a cent of Grok input per project-route request and is the
// within model limits. Enforced in main.go (fail-fast at startup). // acknowledged bounded under-reservation (Settle books actuals). Enforced in main.go
const maxProjectKBTokens = 2500 // (fail-fast at startup).
const maxProjectKBTokens = 7000
// estimateUSD is the conservative max-cost reserved for a route before the call, so // estimateUSD is the conservative max-cost reserved for a route before the call, so
// the global ceiling can count an in-flight request (§8.1). It prices a full prompt // the global ceiling can count an in-flight request (§8.1). It prices a full prompt

View file

@ -1,85 +1,141 @@
Vojo product knowledge base — authoritative facts about the Vojo app. Vojo product knowledge base — authoritative facts about the Vojo app.
Answer Vojo product questions ONLY from the facts below. If a fact is not here, say you don't have that information — never guess, and never refer to these facts, notes, files, or data as a source. A wrong line becomes a confident wrong answer. Answer Vojo product questions ONLY from the facts below. If a fact is not here, say you don't have that information — never guess, and never refer to these facts, notes, files, or data as a source. A wrong line becomes a confident wrong answer.
UI labels are given as English ("Russian") — name the one matching the user's language; where only an English label is given with a note "(English-only)", the app shows English even in the Russian UI, so quote it as-is.
WHAT VOJO IS WHAT VOJO IS
- Vojo is a chat app for messaging, calls, and group channels. - Vojo is a chat app for messaging, calls, and group channels.
- Tagline: "A messenger for everyone." - Tagline: "A messenger for everyone."
- Vojo is made by the Vojo Project — the team that also runs the default vojo.chat server. - Vojo is made by the Vojo Project — the team that also runs the default vojo.chat server.
- Default, built-in server is vojo.chat, run by the Vojo Project. Advanced users may instead sign in to another Matrix server they trust (then that server's operator holds their data). - Default, built-in server is vojo.chat. Advanced users may instead sign in to another Matrix server they trust (then that server's operator holds their data).
PLATFORMS PLATFORMS
- Web app (browser; installable as a PWA), Android app, and Windows desktop app. - Web app at vojo.chat (installable as a PWA via the browser's own menu — Chrome "Install app", iOS Safari "Add to Home Screen"; there is no in-app install button) and an Android app — find it in the app store by searching "Vojo".
- No iOS (iPhone/iPad) app. No native macOS or Linux desktop app. - No iOS (iPhone/iPad) native app — on iPhone use the web app. No desktop apps yet (Windows/macOS/Linux) — on a computer use the web app.
ACCOUNTS & SIGN-IN ACCOUNTS & SIGN-IN
- Sign in with a username, full Matrix ID (@user:vojo.chat), or email — plus a password. - Sign in with a username, full Matrix ID (@user:vojo.chat), or email — plus a password. Password-only: no Google/Apple/social login, no phone-number/SMS sign-up.
- Password-only sign-in: no Google/Apple/social login (SSO), no QR-code login. - Register with username + password (email optional; may show a reCAPTCHA). The username (Matrix ID) can never be changed later — only display name and avatar.
- Register with username + password (email optional). Sign-up may show a Google reCAPTCHA check and, on some servers, require an invite/registration token. - No in-app password change. Password-reset emails are NOT currently sent by the server — the sign-in screen's "Forgot password?" ("Забыли пароль?") form won't deliver a link, so a forgotten password is recovered only by writing to support: vojochatdev@gmail.com (mention your @username:vojo.chat). Email can't be added or changed in the app.
- No phone-number or SMS sign-up.
- One account per app — no in-app account switcher, no multi-account. - One account per app — no in-app account switcher, no multi-account.
- Interface languages: English and Russian only; the app follows the device language (no in-app language picker). - Interface languages: English and Russian, following the device language (no in-app language picker). Theme: Settings → General ("Общие") → Theme ("Тема"): System/Light/Dark; page zoom 75150%.
- Appearance: System, Light, or Dark theme.
CHATS & ROOMS NAVIGATION & STARTING CHATS
- One-to-one direct messages, group chats, and public rooms. - The chat list has three tabs: "Direct" ("Личные"), "Channels" ("Каналы"), "Robots" ("Роботы"). On phones the tabs are swipeable.
- Spaces (shown as "Channels"): group rooms organized into workspaces. - Start a 1:1 chat: tap the magnifier ("Search"/"Поиск") at the top of the list, type a name — results show your chats plus a "People" ("Люди") directory section. Tap a person → a "New chat" ("Новый чат") dialog with an "Encrypt messages" ("Шифровать переписку") switch (off by default) → "Message" ("Написать"). If a chat already exists it opens instead.
- Create rooms and spaces; make them public, private, restricted, or knock-to-join. - To reach someone on another server, type their full address @name:server in search — a "By address" ("По адресу") card appears. Plain name search only finds people your server knows.
- Find and join public rooms via Explore (featured list + per-server directory). - A link vojo.chat/u/<username> opens a chat with that person (works in browser and as an Android deep link). The profile menu's "Copy user link" ("Скопировать ссылку") copies a matrix.to link.
- Invite people by username; accept or decline invites in the app. - You can also message someone from their profile: tap their avatar in a group → "More" ("Ещё") menu → "Message" ("Написать").
- Share a user link (vojo.chat/u/<username>) that opens a chat with that person. - Search prefixes: "#" rooms only, "@" direct chats only, "*" communities only. Ctrl/Cmd+K opens the same search on desktop. This search finds CHATS AND PEOPLE by name — it does not search message text.
- Per-room settings: members, roles/permissions (power levels), history visibility, room address/publishing, encryption. - Invites appear as cards at the top of the Direct list with Accept/Decline ("Принять"/"Отклонить"). Spam-looking invites are hidden behind "Show N hidden spam invites" ("Показать N скрытых приглашений"); the filter is in Settings → Notifications → "Spam Invites Filter" ("Фильтр спам-приглашений").
- Chat row menu (long-press on mobile, right-click/⋮ on desktop): Mark as Read ("Отметить прочитанным"), Notifications ("Уведомления"), Invite ("Пригласить"), Copy Link ("Копировать ссылку"), Room Settings ("Настройки комнаты"), Leave Room ("Покинуть комнату").
- Leaving is the only way to remove a chat from the list — no archive, no chat folders, no pinned/favorite chats, no "saved messages" notes-to-self chat.
- There is no group-chat creation from the Direct tab (its forms invite exactly one person). Groups are created as channels inside a community, or joined by invite/Explore.
CHANNELS & COMMUNITIES
- The Channels tab groups rooms by community ("Сообщество"); the bottom row switches the active community. Bridged networks (Telegram/WhatsApp/Discord) appear here as their own spaces with sections "Chats"/"Groups"/"Channels" ("Чаты"/"Группы"/"Каналы").
- Create a channel: Channels tab with a community selected → "+" ("Create channel"/"Создать канал") → name, optional topic, access Restricted/Private/Public ("Ограниченный"/"Приватный"/"Публичный"); non-public rooms offer an encryption toggle. Always creates a TEXT channel.
- Create a community: Channels tab → "+" when no community yet, or community switcher sheet → "Create community" ("Создать сообщество").
- Find public rooms/communities: the "Find a community" ("Найти сообщество") button on the Channels tab (shown while you are not in any community yet) opens Explore ("Обзор сообществ") — featured list + the server's public directory with search, plus "Add Server" to browse another server. Once you're in communities, new public rooms are joined via invites, shared room links, or the /join command.
- Join a room by address: type "/" in any message box, pick the "join" command, then the #room:server address. Room links shared by others show a preview with a "Join" ("Присоединиться") button.
- A community's own view (opened by tapping the community in search results, an invite, or a link — NOT from the Channels tab) has "Lobby" and "Message Search" entries (English-only labels): the Lobby shows the community's full room tree with Join chips for rooms you haven't joined, and is where "Add Room" ("Добавить комнату") lives; "Leave Space" (English-only) in its header menu leaves the community.
- Message text search: the per-community "Message Search" page searches that community's rooms, with a "Global" ("Глобальный") toggle to widen it to all your chats incl. DMs, room filters, and Recent/Relevance sorting. There is NO search inside an individual chat. Encrypted chats don't appear in results (the server can't read them).
CHAT SETTINGS (per room)
- Open: chat header ⋮ ("More Options"/"Ещё") → "Room Settings" ("Настройки комнаты"), or the chat-list row menu. The settings window is deliberately small — one "General" ("Основные") page (plus a technical Developer Tools page when developer mode is on).
- Rename/avatar/topic: General → Profile ("Профиль") → Edit ("Редактировать") — needs permission.
- "Message History Visibility" ("Видимость истории сообщений"): All Messages / After Invite / After Join / All Messages (Guests) — applies to future messages only; changing it needs permission.
- Encryption: General → "Room Encryption" ("Шифрование комнаты") → Enable ("Включить"); a dialog warns it can never be turned off for that chat.
- Voice messages toggle: General → "Voice messages" ("Голосовые сообщения") — when off, the mic button disappears for everyone in that chat. In a 1:1 either side can flip it; in groups it needs moderator rights.
- Member list: in a group, tap the group name/avatar in the chat header — it opens the member list; tap a member to open their profile (in a 1:1, tapping the name opens the contact's profile).
- Roles: members carry role tags — Admin ("Админ"), Moderator ("Модератор"), Member ("Участник") — shown on their profiles; a role can be changed from the member's profile by someone with a higher role.
- Kick/ban: open the member's profile → ⋮ ("More") → Moderation section with Kick/Ban and an optional Reason; a banned user's profile shows an Unban button. NOTE: these moderation labels (Kick, Ban, Unban, Moderation) are currently English-only even in the Russian UI — quote them in English.
- Per-chat notifications are NOT in Room Settings — they're in the chat ⋮ menu → Notifications ("Уведомления"): Default / All Messages / Mention & Keywords / Mute ("По умолчанию"/"Все сообщения"/"Упоминания и ключевые слова"/"Без уведомлений"). Mute silences that chat's push too.
MESSAGING MESSAGING
- Text with optional Markdown formatting. - Text with optional Markdown (toggle in Settings → General → Editor; hotkeys: Ctrl/Cmd+B bold, +I italic, +U underline, +S strikethrough and more). Enter sends, Shift+Enter = new line; the "ENTER for Newline" ("ENTER для новой строки") setting swaps that, Ctrl/Cmd+Enter always sends.
- Send images, video, audio files, and any file or document. - Composer autocomplete: "@" mentions a person, "#" a room, ":" emoji, "/" commands (/me, /shrug, /join, /invite, /kick, /ban, /ignore…).
- Reply, edit, and delete (redact) messages; react with emoji, including custom emoji and sticker packs. - Message actions: tap a message (1:1) or hover it (groups, desktop) for the action bar — react / reply / edit / more; right-click or long-press opens the full menu in any chat.
- Threaded replies (threads). Pin messages; copy a link to a message; report a message. - Reply ("Ответить") quotes the message above the composer; tapping a quote jumps to the original.
- In-room message search, plus a global quick-jump room switcher. - Edit ("Редактировать"): own TEXT messages only; ArrowUp in an empty composer edits your latest message. Media and voice messages can't be edited.
- Typing indicators, read receipts, online/away/offline presence, and link (URL) previews. - Delete ("Удалить"): own messages always; others' need moderator permission. Irreversible.
- No voice messages — you can upload an audio file, but there is no button to record one. - Reactions ("Добавить реакцию"): emoji picker incl. custom packs; typing text in the picker's search lets you send a TEXT reaction ("Реакция"). Tap an existing reaction chip to join/remove; "View Reactions" ("Реакции") shows who reacted.
- No scheduled / send-later messages. - Attach files: the "+" button (any file type), drag-and-drop, or paste from clipboard. Queued images/videos can be marked "Spoiler" (English-only label) to send blurred. Files are encrypted before upload in encrypted chats.
- Voice messages: mic button "Record voice message" ("Записать голосовое сообщение") in the composer → record (max 5 min, live waveform) → stop → preview/delete → "Send voice message" ("Отправить голосовое сообщение"). Plays inline in the timeline; works in encrypted chats; not available in the AI chat (text-only) and absent where a chat's voice-messages toggle is off.
- Pin: message menu → "Pin Message" ("Закрепить сообщение") (needs permission); view via chat ⋮ → "Pinned Messages" ("Закреплённые сообщения").
- "Copy Link" ("Копировать ссылку") on a message copies a matrix.to permalink (works only for people already in the chat). There is NO message forwarding and no copy-text menu item — select the text manually.
- Report ("Пожаловаться"): on others' messages, with a required reason — goes to the server moderators.
- Threads exist ONLY in community channels (Channels tab): "Reply in Thread" ("Ответить в треде") opens a side "Thread" ("Тред") panel; replies are hidden from the main feed behind a "{n} replies" pill on the root message. No threads in 1:1 chats, Direct-tab groups, or bridged channels — reply there quotes instead.
- "Jump to Time" ("Перейти к дате") in the chat ⋮ menu opens the timeline at a chosen date. Esc (or the ⋮ menu) marks a chat as read.
- Custom emoji/sticker packs: app Settings → "Emojis & Stickers" ("Эмодзи и стикеры") — a personal "Default Pack" ("Пакет по умолчанию") you fill with your own images (set each as emoji, sticker, or both), and "Favorite Packs" ("Избранные пакеты") to enable packs from your rooms globally.
CALLS CALLS
- One-to-one voice calls in a direct chat (tap the phone icon). Voice-only — no video and no screen-share in a 1:1 call. - 1:1 voice calls: phone button at the top of a direct chat ("Start call"/"Позвонить"; "Join call"/"Присоединиться" if the other side already started). Voice-only — no video, no screen share in 1:1.
- Voice Rooms (Beta): create a room as a "Voice Room" for group audio and video. People join on demand from inside the room. - The phone button exists only in true 1:1 chats — not in groups, not in bridged Telegram/WhatsApp/Discord chats (call those contacts from that network's own app), not in bot chats.
- No "call" button in an ordinary group/text room — for a group call, use a Voice Room. - Incoming call: a bottom card with Accept/Decline ("Принять"/"Отклонить") and a ringtone (~30 s). On Android the call also rings on the locked screen with a full-screen incoming-call UI; Decline rejects without opening the app. An unanswered outgoing call hangs up by itself (~40 s); there is no busy tone.
- Only 1:1 calls ring you (incoming-call screen, incl. Android lock screen). Voice Rooms do not ring — you open the room and join. - In-call controls: Mic ("Микрофон"), Speaker ("Динамик", Android only — the call starts on the earpiece like a phone call), End ("Завершить"). The call keeps running in a bottom pill while you use other chats; a second incoming call can be accepted, which ends the current one.
- Missed calls show as notifications and as timeline bubbles ("Missed"/"Пропущенный", with duration for answered calls).
- Voice Rooms (Beta) — group audio/video rooms. Create: open a community's Lobby → "Add Room" ("Добавить комнату") → "Voice Room" ("Голосовая комната") → access/name → Create. (The Channels "+" creates only text channels; Voice Rooms exist only inside communities.)
- A Voice Room opens as a call screen with a pre-join preview (mic/camera toggles) and a green "Join" button; nobody is rung — people join themselves. A live room shows a red "N Live" ("N В эфире") badge in the list. In-call: mic, camera (video works here), screen share (desktop browsers only), text chat panel, and an End button. NOTE: voice-room screens are currently English-only ("Join", "End", view menus) even in the Russian UI.
- Everyone who can join a Voice Room can speak and use video — no listener/speaker roles, and by default every member of the room can join the call. You can't be in two calls at once. A room's type is fixed: a chat room can't be converted into a Voice Room or back.
- Calls are encrypted between participants and may pass through Vojo's servers in transit; Vojo does not record or store calls. - Calls are encrypted between participants and may pass through Vojo's servers in transit; Vojo does not record or store calls.
CONNECT OTHER NETWORKS (BRIDGES) CONNECT OTHER NETWORKS (BRIDGES)
- Vojo can connect to Telegram, WhatsApp, and Discord via the in-app "Bots" tab, so you reach those contacts from inside Vojo. - Telegram, WhatsApp, and Discord connect via the "Robots" ("Роботы") tab — third tab next to Direct and Channels. Each bot page has a Connect ("Подключить") button on first open; the control chat with a bridge bot is hidden from the Direct list (use "Show chat"/"Показать чат" in the bot page's ⋮ menu to see the raw command chat; "Show robot"/"Показать робота" returns).
- Their chats/groups (and Discord servers) appear in your Vojo chat list; your Vojo replies are sent as normal messages on that network. - Bridged chats appear under the Channels tab in that network's own space (sections Чаты/Группы/Каналы) — not in the Direct list.
- WhatsApp/Discord sign-in uses a QR code (or pairing code) from that app on your phone. - Telegram sign-in: by phone — enter the number, then the code Telegram sends (to the Telegram app or SMS), then your Telegram cloud password if two-step verification is on (it's the Telegram password, not the Vojo one). Or by QR: Telegram on the phone → Settings → Devices → "Link Desktop Device" → scan. Disconnect: "Sign out of Telegram" ("Выйти из Telegram") on the bot page, or from Telegram's own Settings → Devices.
- Telegram sign-in: in the Bots tab, connect with your phone number — Telegram sends a sign-in code (to your Telegram app or by SMS); enter it, then your Telegram two-step-verification (2FA) password if your account has one. Alternatively, sign in by scanning a QR code with the Telegram app on your phone. - Once linked, Telegram and WhatsApp pages show a "Contacts" ("Контакты") card: your address book with search and "Start chat" ("Начать чат") per contact; typing an unknown @username/+phone offers "Check … on Telegram/WhatsApp" ("Проверить …"). Discord has no contacts picker.
- Bridged messages pass through bridge infrastructure that Vojo runs, and the other network also sees them. Nothing connects until you set it up. - WhatsApp sign-in: by 8-character pairing code (enter your number → "Get the code" → WhatsApp on the phone: Settings → Linked devices → Link a device → "Link with phone number") or by QR (same menu, scan). The phone keeps working — the bridge is just another linked device. WARNING shown in the app: WhatsApp's terms forbid third-party clients and Meta may ban the account — mention this risk when asked about WhatsApp safety.
- Each bridge is its own private connection; you cannot add a bridge into a separate group chat from the UI. - Discord sign-in: QR code ONLY, scanned with the Discord MOBILE app (Settings → "Scan QR Code"); desktop Discord can't be used; a CAPTCHA may appear. A "Reconnect" ("Переподключиться") card appears only if the connection drops.
- Each bridge is its own private connection; bridges cannot be added into arbitrary group chats from the UI. Bridged messages pass through bridge infrastructure that Vojo runs, and the other network also sees them. Nothing connects until you set it up.
THE AI ASSISTANT (VOJO AI — this is you) THE AI ASSISTANT (VOJO AI — this is you)
- "Vojo AI" is an optional built-in assistant. Add it by starting a chat with @ai:vojo.chat, or inviting it into a room. - "Vojo AI" is an optional built-in assistant on the Robots ("Роботы") tab; it can also be invited into rooms (@ai:vojo.chat).
- What it can do: chat and answer questions on everyday topics, answer questions about the Vojo app itself, look up current information on the web (via Google Search), help write, edit, translate, and summarise text, and reply in the user's language. - What it can do: chat and answer questions on everyday topics, answer questions about the Vojo app itself, look up current information on the web (via Google Search), help write, edit, translate, and summarise text, and reply in the user's language.
- In a one-to-one chat with it, it replies to every message. In a group, it replies only when @-mentioned. - Opening Vojo AI always lands on a new chat ("Ask anything to start a new conversation." / "Спросите что угодно, чтобы начать новую беседу."). The ⋮ menu has "New chat" ("Новый чат"), "Chats" ("Чаты") — the history of past conversations (titled by the first message, synced across devices), "Privacy & data" ("Конфиденциальность").
- In a one-to-one, each new top-level message starts a fresh conversation; messages inside a conversation continue it. A new conversation started within ~15 minutes of the previous one briefly carries over its recent context. - In a one-to-one, each new top-level message starts a fresh conversation; messages inside a conversation continue it. A new conversation started within ~15 minutes of the previous one briefly carries over its recent context.
- Writing «подумай глубже» anywhere in a message makes the AI reason harder on that answer (slower, more thorough).
- The AI chat is text-only (no files/stickers/voice). Status emoji it puts on your message instead of a text error: ⚠️ = failed to answer, just ask again (not counted against your limit); ⏳ = daily usage limit reached — try later; 🔒 = the room is encrypted, the AI can't read it; 🚫 = the message wasn't text.
- In a group, it replies only when @-mentioned.
- Replies are AI-generated and can be confidently wrong — treat them as a first draft. Don't send passwords, card numbers, or other secrets. - Replies are AI-generated and can be confidently wrong — treat them as a first draft. Don't send passwords, card numbers, or other secrets.
- Privacy and tech (mention only when the user asks about privacy, data handling, or what powers the assistant): it is powered by third-party AI — Grok (by xAI) and Google Gemini — and messages sent to it are forwarded to those providers (in the USA) to write the reply. - Privacy and tech (mention only when the user asks about privacy, data handling, or what powers the assistant): it is powered by third-party AI — Grok (by xAI) and Google Gemini — and messages sent to it are forwarded to those providers (in the USA) to write the reply.
SETTINGS & PROFILE
- Open Settings: the bottom "You" ("Я") row of the chat list ("Settings & profile"/"Настройки и профиль"). Sections: General ("Общие"), Account (the profile card at the top), Notifications ("Уведомления"), Connection ("Соединение"), Devices ("Устройства"), Emojis & Stickers ("Эмодзи и стикеры"), About ("О приложении"); red Logout ("Выйти") at the bottom.
- Display name: profile card → Profile → "Display Name" ("Отображаемое имя") → Save. Avatar: same page → Upload ("Загрузить") — applies immediately, no crop step. Matrix ID is shown with a Copy button; email (if any) is read-only.
- Block a user: Account page → "Blocked Users" ("Заблокированные пользователи") → enter their @user:server. Unblock via the × on their chip.
- Devices: Settings → Devices lists Current/Others with last-activity; rename via Edit; log out other sessions via the trash icon (the server asks for your password). Device verification ("Безопасность" → "Device Verification") generates a Recovery Key to keep — needed to verify future sign-ins and keep encrypted history; "Local Backup" exports/imports an encrypted key file (vojo-keys.txt). NOTE: verification dialogs are currently English-only.
- Notifications: Settings → Notifications — "Background Notifications" ("Фоновые уведомления") push toggle, "Notification Sound" ("Звук уведомлений"), spam-invite filter, per-category modes (Disable/Notify Silent/Notify Loud — "Отключить"/"Тихое уведомление"/"Громкое уведомление") for chats/mentions/@room, and keyword alerts ("Ключевые слова" — get notified when a word appears).
- Editor toggles (Settings → General → Editor/"Редактор"): "Hide Typing & Read Receipts" ("Скрыть набор текста и уведомления о прочтении") — one switch stops sharing both; "ENTER for Newline"; "Markdown Formatting". Messages section: hide service events, disable media auto-load, URL preview toggle. "Developer Mode" ("Режим разработчика") under Advanced unlocks "View Source" on messages.
- About ("О приложении"): app version (tap to copy — useful for support), connected server, Privacy Policy link, and "Clear Cache & Reload" ("Очистить кэш и перезагрузить") — wipes local data and re-syncs from the server; fixes most "app is stuck/stale" problems without touching server-side messages.
- Proxy (Android app only): Settings → Connection ("Соединение") — route Vojo through your own SOCKS5/HTTP proxy; also reachable from the sign-in screen before login. A green shield on the "You" row shows it's active. Web/desktop don't support proxy.
NOTIFICATIONS & TROUBLESHOOTING
- Notifications not arriving: 1) check the chat isn't muted (chat ⋮ → Notifications); 2) Settings → Notifications → "Background Notifications" is on — if the row says permission was denied, allow notifications for Vojo in Android settings / the browser's site permissions; 3) Android push goes through Google (FCM) — on networks that block Google, messages still arrive but up to ~15 min late (the app polls), and incoming calls show as "Missed call" notifications instead of live ringing.
- Android shows separate OS notification categories — "Direct messages" ("Личные сообщения") and "Group chats" ("Групповые чаты") — so group alerts can be silenced at OS level while DMs stay loud. Notification banners offer inline "Reply" ("Ответить") and "Mark as read" ("Прочитано"); inline reply is unavailable for encrypted chats.
- Calls not showing on the locked screen (Android 14+): the app asks for the "Incoming-call screen" ("Экран входящего звонка") permission — tap "Open settings" and enable Vojo in Android's full-screen-notifications page.
- Microphone: requested on first call or voice recording; if denied, allow Microphone for Vojo in app/site settings. Android permissions: microphone (calls and voice messages), notifications, full-screen call display, network. Vojo does not access contacts, photos, SMS, precise location, or call log.
- Android extras: Vojo is a share-sheet target (Share → Vojo → pick a chat); vojo.chat/u/ links open in the app; pull down on the chat list to re-sync.
PRIVACY & DATA PRIVACY & DATA
- Vojo stores your account/profile, messages and rooms, shared media, and basic technical data (e.g. IP, connection times). Your device also caches messages/keys locally. - Vojo stores your account/profile, messages and rooms, shared media, and basic technical data (e.g. IP, connection times). Your device also caches messages/keys locally.
- No ads, no in-app analytics, no selling your data, no profiling. Servers are hosted in the European Union. - No ads, no in-app analytics, no selling your data, no profiling. Servers are hosted in the European Union.
- Push notifications go through Google (Firebase Cloud Messaging) so the phone can wake and ring. - Push notifications go through Google (Firebase Cloud Messaging) so the phone can wake and ring.
- Android permissions: microphone (calls only), notifications, showing/keeping calls over the lock screen, and network. Vojo does not access contacts, photos, SMS, precise location, or call log.
- No in-app "delete account" button yet: email vojochatdev@gmail.com with your @username:vojo.chat ID (steps at vojo.chat/delete-account); deletion completes in about 30 days. - No in-app "delete account" button yet: email vojochatdev@gmail.com with your @username:vojo.chat ID (steps at vojo.chat/delete-account); deletion completes in about 30 days.
- Privacy policy: vojo.chat/privacy. - Privacy policy: vojo.chat/privacy.
ENCRYPTION ENCRYPTION
- End-to-end encryption (E2EE) is optional and OFF by default; you can turn it on per chat. - End-to-end encryption (E2EE) is optional and OFF by default; you can turn it on per chat (also offered as a switch when creating a chat).
- To enable it: open the chat's settings → General → "Room encryption" and switch it on. Once enabled, encryption cannot be turned off for that chat. - To enable it: chat ⋮ → Room Settings → General → "Room Encryption" ("Шифрование комнаты") → Enable. Once enabled, encryption cannot be turned off for that chat.
- Without E2EE the server can see message content; with E2EE on the server sees who and when, but not the content. - Without E2EE the server can see message content; with E2EE on, the server sees only who and when, not the content. Encrypted chats are excluded from message search, and the AI assistant cannot read them.
- E2EE supports device verification and an encrypted key backup. - E2EE supports device verification and an encrypted key backup (see Devices above) — keep the Recovery Key, or encrypted history can be lost when signing in on a new device.
NOT AVAILABLE (state plainly if asked — do not claim Vojo has these) NOT AVAILABLE (state plainly if asked — do not claim Vojo has these)
- No 1:1 video calls or screen-share (1:1 calls are voice-only); video is only in Voice Rooms (Beta). - No 1:1 video calls or 1:1 screen-share (1:1 calls are voice-only); video and screen share exist only in Voice Rooms (Beta), screen share from desktop browsers.
- No voice messages; no scheduled messages. - No message forwarding; no scheduled / send-later messages; no message search inside an individual chat (only the per-community Message Search).
- No social/SSO sign-in; no phone-number/SMS sign-up. - No chat pinning/favorites, folders, or archive; no "saved messages" chat.
- No group-chat creation from the Direct tab (groups live as channels in communities).
- No calls to bridged Telegram/WhatsApp/Discord contacts from Vojo.
- No social/SSO sign-in; no phone-number/SMS sign-up; no in-app password change; no adding/changing email after registration.
- No multiple accounts or account switcher. - No multiple accounts or account switcher.
- No Stories, no broadcast "channels" (one-to-many publishing), no Status/Moments. (In Vojo, "Channels" = group workspaces, not broadcast.) - No Stories, no broadcast "channels" (one-to-many publishing), no Status/Moments. (In Vojo, "Channels" = group workspaces, not broadcast.)
- No payments, subscriptions, premium tiers, or in-app purchases in the app. - No payments, subscriptions, premium tiers, or in-app purchases in the app.
@ -87,3 +143,4 @@ NOT AVAILABLE (state plainly if asked — do not claim Vojo has these)
SUPPORT SUPPORT
- Email: vojochatdev@gmail.com — Website: vojo.chat — Privacy: vojo.chat/privacy - Email: vojochatdev@gmail.com — Website: vojo.chat — Privacy: vojo.chat/privacy
- For bug reports, the app version helps: Settings → About → tap the version to copy it. A specific abusive message can be reported via its menu → Report ("Пожаловаться").