Vasyapp Logo Vasyapp v0.8.0

Changelog

Track every update, feature, and fix shipped in Vasyapp.

v0.8.0

Latest

[0.8.0] - 2026-06-12

Web

  • Vasyapp now runs in the browser. The same React UI talks to a remote vasya-server over HTTP/SSE instead of the in-process Tauri engine. Self-host it from backend/deploy/; connect with your server URL + a JWT (email/password against the backend) or an access token. Builds can pre-fill the API origin via the VITE_VASYA_API_URL build var.

Features

  • Date separators in the message list — Telegram-style "Today / Yesterday / 10 June" day dividers between messages of different calendar days.
  • Rich link previews — pages shared in chat render a card (site name, title, description) instead of a bare "Link Preview" placeholder. vasya-server now extracts the Telegram webPage metadata; the desktop backend still shows the minimal preview (parity pending).

Server / infra

  • Telegram over a SOCKS5 proxy — set TELEGRAM_PROXY_URL (e.g. socks5://user:[email protected]:1080) to route MTProto through an egress when the host's own IP has Telegram blocked. Unset = direct connection (unchanged). Enabled via grammers' proxy feature in vasya-core.

[0.7.7] - 2026-06-10

Security

  • Telegram sessions are now encrypted at rest (ChaCha20-Poly1305). The master key lives in the OS keychain (Keychain / Credential Manager), with a 0600 key-file fallback. Existing plaintext sessions are migrated automatically on first launch and the plaintext file is deleted.
  • Per-user account isolation on the sync backend: data routes accept a personal JWT and an account is bound to the first user who syncs it; other users get 403. Legacy shared-API-key mode still works unless REQUIRE_USER_AUTH=true.
  • Rate limiting on backend login/register (per-IP); JWT_SECRET fails fast if set but shorter than 32 chars.
  • Calls are now behind an off-by-default "Experimental" toggle (VoIP audio is not end-to-end encrypted yet).
  • Local Whisper is the default STT provider — no audio leaves the device unless you opt into Deepgram.
  • Tightened CSP (object-src/frame-src 'none', base-uri/form-action 'self').

Features

  • My QR Code: share your contact via a t.me QR like the native Telegram app (sidebar header → QR icon).
  • Backend account sign-in/registration in Settings → Storage (issues the JWT used for synced data).

Performance

  • File sending uses raw IPC (binary body) instead of a JSON number array — ~4× smaller bridge payload.

Fixes

  • Login phone field now formats per country (libphonenumber as-you-type) like the native Telegram apps — e.g. +998 90 829 55 93 instead of the mis-grouped +9 989 082 95 59 3.

[0.7.6] - 2026-06-10

Security

  • Deepgram API key is no longer embedded in the binary — add your own key in Settings → STT (or use local Whisper)
  • Validate transcription file paths (must stay inside app data dir)
  • Mask phone numbers in logs; remove stale .bak/patch files
  • Allowlist URL schemes in rendered messages (http/https/tg/mailto) — blocks javascript:/data:/file: links
  • Narrow asset protocol scope to the media directory; disable devtools and withGlobalTauri

Performance

  • Virtualized chat list and message list (@tanstack/react-virtual) — long chats no longer render thousands of DOM nodes
  • Chat list updates live on incoming messages: preview, unread badge, chat moves to top
  • Fixed re-render hotspots: proper Zustand selectors, rAF-throttled call audio levels, batched avatar updates, memoized translations, stable hotkey handlers
  • Autoscroll on new messages only when already near the bottom

Mobile (iOS/Android)

  • The app can no longer be dragged down past the top (document rubber-band) — native WKWebView bounce disabled + CSS overscroll-behavior
  • Pinch/double-tap zoom of the UI is disabled (in-app image viewer zoom still works)
  • Media auto-download is viewport-scoped: only photos/stickers/voice actually on screen are fetched; scrolling away cancels queued downloads; tap-to-download jumps the queue

See the assets below to download and install this version.

See the assets below to download and install this version.

Bug Fixes

  • Fix Android keyboard squishing entire app — switch from resizes-content to overlays-content
  • Keyboard now overlays content instead of compressing it; input lifts above keyboard via --keyboard-height CSS var
  • Auto-scroll messages to bottom when keyboard opens on mobile

Bug Fixes

  • Fix Android keyboard pushing content up by using visualViewport API
  • Add interactive-widget=resizes-content viewport meta for proper keyboard handling
  • Replace 100dvh with var(--app-height) CSS variable computed from visualViewport.height
  • Fix MessageInput padding-bottom override (safe-area-inset-bottom was being ignored)

See the assets below to download and install this version.

See the assets below to download and install this version.

See the assets below to download and install this version.

What's New

Telegram-Style Message Bubbles

  • Rounded bubble shapes with tail effect for outgoing/incoming messages
  • Colored sender names in group chats (8-color palette)
  • Message grouping: consecutive messages from same sender within 3min
  • Sender avatars in group chats
  • Inline time + read status inside bubbles

Unread Badges

  • Unread message count on each chat in the list
  • Gray badges for muted chats, accent color for normal
  • Unread chat count on folder/tab icons in sidebar

Enhanced Search

  • 3 sections like Telegram: Contacts & Chats, Global Search, Messages
  • Global user/channel search via Telegram API
  • Message search across all chats
  • "Show more" for global results

Media & Voice

  • Voice recorder with waveform visualization (OGG/Opus)
  • Attachment menu: photo/video, document, camera capture
  • Microphone button when input is empty (Telegram-style)

Hotkeys & Navigation

  • Arrow Up/Down to navigate chat list
  • 27 Telegram-like hotkeys (Cmd+K, Cmd+F, Ctrl+Tab, etc.)
  • Hotkeys settings page with categories

Other

  • Placeholder call buttons (coming soon)
  • Disabled autocomplete/autocorrect on all inputs
  • Changelog page on landing site

Full Changelog: https://github.com/suenot/vasya/compare/v0.4.0...v0.5.0

What's New

Telegram Forum Topics Support

Full support for Telegram forum-style supergroups (topics/темы):

  • Forum detection — forum groups are detected and marked with a badge icon in the chat list
  • Topic list — clicking a forum group shows its topics with colored icons, pinned/closed indicators, and unread counts
  • Topic messaging — read and send messages within individual topics
  • Navigation — seamless chat → topics → messages flow with back navigation and Escape key support

Technical Details

  • Backend: raw TL API calls (messages.GetForumTopics, messages.GetReplies) via grammers
  • Frontend: new TopicList component, updated MessageList/MessageInput with topicId support
  • SQLite migration adding is_forum column
  • i18n: English + Russian translations

Full Changelog: https://github.com/suenot/vasya/compare/v0.3.0...v0.4.0

See the assets below to download and install this version.

What's New

  • Chat folders with SQLite persistence — custom folders now stored in database instead of localStorage
  • Tab management in settings — show/hide toggles, drag-and-drop reordering via @dnd-kit
  • Context menu "Add to folder" — right-click on any chat to add/remove from custom folders
  • Build-time API credentials — .env credentials baked into binary, no setup screen needed
  • Active tab underline styling — cleaner tab indicator without background highlight
  • Bug fixes — fixed React error #310 (hooks violation in folder settings)

See the assets below to download and install this version.