← Changelog

September 2026

42 versions to production, 437 development entries — security hardening across the admin panel, calls, accounts and payments, decoy contacts, a rebuilt notification path, connection and sync reliability across the web app and a fast-maturing desktop client, re-sized rate limits, exact daily billing with a no-balance notice, the new prices, cancellable Pro invitations, deletes that reach all your devices, photo and file groups, and a payment service that no longer keeps your account id

Sep 2 v6.04.126 DEV A contact tunnel that can't be reached now properly gives up after about 30 minutes, instead of retrying forever
Sep 3 — DEV Closed 3 remaining data-integrity gaps in the tunnel-delete system, so a device offline at the moment of a delete correctly catches up instead of risking a resurfaced tunnel or message
Sep 3 v6.04.127 DEV The already-used-invite-link warning shipped in August is now available in all 41 languages
Sep 3 v6.04.130 DEV Security: recovery-phrase verification is now stored as a secure hash instead of in a form equivalent to plaintext
Sep 3 v6.04.130 DEV Security: fetching TURN/ICE relay credentials now requires being logged in
Sep 3 v6.04.130 DEV Security: added brute-force lockout and cross-site request forgery protection to the admin panel
Sep 3 v6.04.130 DEV Security: the admin panel no longer loads a third-party CDN script
Sep 3 v6.04.131 DEV Security: fixed a stored cross-site-scripting bug in the admin panel's diagnostic view
Sep 3 v6.04.131 DEV Security: fixed a spoofable network-address header that could bypass every per-IP rate limit and abuse protection
Sep 3 — DEV Closed the underlying mechanism behind a recurring admin-panel double-login bug, so a future deploy can't reintroduce it
Sep 3 v6.04.133 DEV Fixed the update banner needing two clicks and two reloads to actually apply an update
Sep 3 v6.04.134 DEV Fixed the same two-click update problem in the separate "update required" recovery screen
Sep 3 v6.04.135 DEV Fixed already-read messages reappearing as unread after a reconnect, or on a device that was offline when they were read
Sep 3 v6.04.135 PROD A large batch reaches production: the contact-tunnel give-up timeout, the tunnel-delete data-integrity fixes, the invite-link warning in all languages, six security fixes (hashed recovery-phrase verification, authenticated TURN/ICE credentials, admin brute-force and CSRF protection, admin CDN removal, a stored-XSS fix, and a spoofable IP-header bypass that defeated per-IP rate limits), the admin double-login bug closed at its root cause, the two-click update-banner fix, and the stale unread-badge fix
Sep 3 — DEV Fixed a proactive-reconnect coordination gap where redialing a peer could wrongly reset its own backoff timer
Sep 3 — DEV Fixed a tunnel deleted on one of your devices not disappearing from another of your devices' contact list (native and the desktop client)
Sep 4 — DEV Fixed a timing gap in the desktop client's delete-tunnel flow that could tear down local state before the deletion notice was actually sent
Sep 4 — DEV Fixed a pairing bug where a reused invite link could make the real recipient's pairing attempt silently fail after a 7-day wait
Sep 4 — DEV The desktop client no longer freezes for a few seconds while receiving a large incoming file — big transfers are now absorbed a few chunks at a time
Sep 4 — DEV Privacy: the desktop client now strips photo location/metadata from sent images, matching what the web app already does
Sep 4 — DEV Security: hardened an existing device-identity check so it can no longer be silently bypassed by an unrelated code change elsewhere
Sep 4 — DEV Fixed a race condition that could in theory let more devices past the 2-device session limit than intended
Sep 4 v6.04.136 DEV Security: the real-time signaling channel now enforces the same rate limit as the regular API path
Sep 4 v6.04.136 DEV Fixed an always-connected device being unfairly frozen out in favor of newer sessions competing for the same connection slot
Sep 4 v6.04.136 DEV Privacy: fixed a local-storage leak that stored a real contact identifier in a place meant to only ever hold a blinded one
Sep 4 v6.04.137 DEV Added the Normal/Pro/Business plan choice to the invite-link sign-up flow — it was already available on direct sign-up
Sep 4 v6.04.138 DEV Added a button to create and copy a fresh invite link directly from the pairing banner
Sep 4 v6.04.138 DEV Security: an internal payment-reconciliation secret no longer appears in server access logs
Sep 4 v6.04.139 DEV Security: fixed a bug where switching accounts in the same browser tab could leave an active call's camera/microphone running under the new account
Sep 4 v6.04.140 DEV Fixed the mute button showing no pressed feedback, and the microphone icon getting stuck on "muted" after unmuting
Sep 4 v6.04.140 DEV Fixed turning on the camera during a voice call doing nothing — the call view now properly switches to video
Sep 4 — DEV Fixed the "connection trouble" banner not clearing itself once the connection had already recovered on its own
Sep 4 — DEV The app can now detect a missing camera/microphone permission before a call starts and shows a clearer explanation
Sep 5 v6.04.143 DEV Fixed the unread-message counter undercounting when catching up a batch of missed messages at once
Sep 5 v6.04.143 DEV Deleting your account no longer force-erases your local data on this device by default — a new checkbox lets you keep it
Sep 5 v6.04.143 DEV Corrected an install-prompt claim that said the app "takes no space" once installed — now accurately says it never appears in an app store's purchase history, in all languages
Sep 5 v6.04.143 DEV Security: fixed other signed-in devices wiping their local data on an account-deletion signal sent before the deletion had actually succeeded
Sep 5 v6.04.143 DEV Security: fixed a rare race condition that could in theory let a wallet balance go negative under concurrent transfers
Sep 5 — DEV Fixed GIFs that could get permanently stuck mid-delivery and never resend, even after reconnecting
Sep 5 — DEV Fixed the desktop client not responding when a peer asked it to resync shared conversation history
Sep 5 v6.04.145 DEV Added a relationship check to ring/pulse notifications so they can no longer be sent to someone you're not actually paired with
Sep 5 — DEV The desktop client can now retry/reconnect a tunnel manually, instead of only waiting to be dialed into
Sep 5 — DEV The desktop client's presence indicator now shows whether a connection is direct (P2P) or via relay
Sep 5 — DEV Fixed the caller seeing "connected" before the callee's camera/microphone permission had actually been confirmed
Sep 5 — DEV Sped up reopening the app in the same browser tab by caching the derived encryption key instead of re-deriving it every time
Sep 5 — DEV Fixed the desktop client occasionally failing to resume syncing with a peer after a brief connection drop mid-sync
Sep 5 v6.04.147 PROD A large batch reaches production: the connection-reliability and pairing fixes above, native/desktop parity work (large-file receiving, photo-metadata stripping, delete-tunnel sync), five more security fixes (session-limit race, signaling rate limit, an account-switch call-audio leak, a payment-secret log leak, and a device-identity hardening), the account-deletion opt-in checkbox, the unread-counter and GIF-delivery fixes, and the relationship check on ring/pulse notifications
Sep 6 — DEV The desktop client now shows a "DUP" badge when two contacts turn out to share the same underlying identity
Sep 6 v6.04.148 DEV Replaced the static boot spinner with a 4-dot progress stepper reflecting real boot phases
Sep 6 v6.04.148 DEV Added the missing translated label for the "keep local data" option on account deletion, in all 41 languages
Sep 6 — DEV Removed a redundant connection watchdog that could prematurely disconnect a self-tunnel between your own devices while it was still actively connecting
Sep 6 — DEV Fixed the desktop client showing two save-confirmation toasts for a single file save
Sep 6 v6.04.149 DEV Fixed a specific connection race between your own devices that could repeatedly fail to connect for several seconds
Sep 7 v6.04.151 DEV Added decoy contacts — every new account is now seeded with a few realistic-looking fake contacts, for cover if someone is ever forced to show their contact list
Sep 7 v6.04.152 PROD A batch reaches production: decoy contacts, the desktop client's new boot stepper and duplicate-identity badge, the account-deletion translation fix, and a self-tunnel connection watchdog and race-condition fix
Sep 7 v6.04.154 DEV Fixed a device losing its notification registration whenever another Chromium-based device on the same account started up — only the most recently started device ever received notifications
Sep 7 v6.04.154 DEV Fixed notifications on iOS 18.4 and later opening the landing page instead of the chat, and showing a missing icon
Sep 7 v6.04.154 DEV Notification registrations that the push service reports as dead are now removed, and a stalled push service can no longer tie up server resources
Sep 7 v6.04.154 DEV Fixed notifications for a muted contact being dropped in a way that could make iOS revoke the app's notification permission
Sep 7 v6.04.154 DEV A notification registration rotated by the browser now renews itself instead of silently going dead
Sep 7 v6.04.154 DEV Fixed sending a touch skipping the server signal whenever the connection merely looked ready, so a sleeping phone or your contact's second device was never woken
Sep 7 v6.04.154 DEV Fixed a touch delivered by notification triggering duplicate alerts
Sep 7 v6.04.154 DEV A pending ring and touches from two different contacts no longer collapse into a single notification
Sep 7 v6.04.154 DEV Notification text moved into the translation system instead of being hardcoded in Spanish, and Settings gained a "last notification received" line with a test button
Sep 7 v6.04.154 DEV Push-notification delivery is now measured end to end (sent, shown, opened) instead of assumed
Sep 7 — DEV The desktop client got a full look-and-feel pass: a proper type scale with bold and sized text, and accented characters that render correctly
Sep 7 — DEV The desktop client's contact list and chat panel were restyled, including per-contact colours in the chat header
Sep 7 — DEV The desktop client now shows real image and PDF thumbnails in chat, and renders colour emoji
Sep 7 — DEV The desktop client gained a theme picker (its first saved setting) and small motion effects
Sep 7 — DEV Fixed the desktop client refusing to open any account created before September 6, caused by a database migration running in the wrong order
Sep 7 v6.04.155 DEV Fixed a pasted invite link doing nothing — the manual-code field silently cut off the last character of longer links
Sep 7 v6.04.156 DEV A paused or grace-period account's tunnel rows now say why they are off ("Account paused" / "Grace period") instead of a generic "Off"
Sep 7 v6.04.156 PROD A batch reaches production: the notification-delivery rebuild, the pasted-invite-link fix and the paused-account tunnel labels
Sep 7 — DEV Fixed the desktop client dropping conversation records written by a newer app version when syncing from your other device — they are now stored untouched and readable once the client is updated
Sep 7 — DEV Fixed the sending side of that same sync: a device that cannot decode a newer-format record now passes it along untouched instead of leaving it out
Sep 7 — DEV Fixed a device that still held a contact deleted elsewhere resurrecting that contact's whole message and file history on its next sync
Sep 7 — DEV Fixed a contact's history catch-up sending or saving a blank message when a record was written by a newer app version — such records are now skipped and counted
Sep 8 — DEV Fixed a connection between your own devices dropping mid-sync and leaving stale sync state behind, which could make the next sync skip work
Sep 8 v6.04.157 DEV Fixed the browser not announcing that the link to your other device was gone on every kind of failure, so the other side could keep treating it as live
Sep 8 v6.04.157 DEV Security: the real-time channel now refuses connection attempts that come from another website's origin
Sep 8 — DEV The desktop client can now start the connection to your other device itself — before, two desktop clients on one account could never mirror each other
Sep 8 — DEV The desktop client now notices a silently dead connection (an unanswered heartbeat) and reconnects instead of forwarding into a dead link forever
Sep 8 — DEV The desktop client now sends connection signals over its open real-time channel instead of opening a new secure connection for each one, removing several seconds from connection setup
Sep 8 — DEV The desktop client no longer redials an offline contact forever, or slows its whole connection loop for one dead entry
Sep 8 — DEV The desktop client now corrects for a wrong local clock — a computer more than 30 seconds off had every connection signal silently rejected
Sep 8 — DEV The desktop client now waits out a brief network hiccup instead of tearing a connection down at the first sign of trouble, and detects the computer waking from sleep
Sep 8 v6.04.158 DEV Connection-setup deadlines are now one shared table used by both the web app and the desktop client, with more time for a stage that is making progress — the two sides' timers had drifted 3–6× apart
Sep 8 v6.04.158 DEV Fixed a device's own echoed connection signal being processed as if it came from the other device, and added a short cooldown after a failed connection
Sep 8 v6.04.158 DEV Security: the "ring" connection signal is now encrypted like every other connection signal — the browser had been sending it in the clear
Sep 8 — DEV The desktop client's sync now reports honest file counts and no longer re-sends a message twice in one cycle
Sep 8 — DEV The desktop client's integrity check now compares the same fields as the web app, including records written by a newer version, so identical data no longer looks different
Sep 8 — DEV Fixed opening the payment page from the desktop client freezing the app while the browser launched
Sep 8 — DEV A device-to-device sync that ended with a mismatch now retries twice instead of giving up permanently
Sep 8 — DEV Fixed a burst of large files starving the desktop client's outgoing message queue long enough to time out — large-file sending now yields regularly
Sep 9 — DEV Fixed a message deleted on the desktop client becoming undeliverable forever once its 7-day delete record expired — a stale duplicate-detection entry made a re-sent copy look already stored
Sep 9 — DEV Deleting a message, or every message from a contact, now also removes its duplicate-detection entry
Sep 9 — DEV The desktop client's file transfers to your other device no longer wedge permanently when one transfer never completes — a 30-second safety timeout moves the queue on
Sep 9 — DEV Fixed device-to-device sync never reporting a match on a re-sync, because items the receiver already held were never counted
Sep 9 — DEV The desktop client now records the same anonymous connection-quality statistics as the web app, from one shared implementation
Sep 9 v6.04.159 DEV The desktop client now sends its anonymous statistics, and the server-side receiver for the new metrics went live on dev — until then they were silently discarded
Sep 9 v6.04.159 DEV Fixed the desktop client sending its statistics at every startup instead of once a day, because its saved "last sent" record was never read back
Sep 9 v6.04.160 DEV The anonymous once-a-day statistics beacon now sends even when there is nothing to report — checked at startup, hourly and whenever the app becomes visible again — so a quiet day is distinguishable from a broken one
Sep 9 v6.04.160 PROD Four versions reach production: the connection-establishment rework (shared stage deadlines, the desktop client starting its own device-to-device connection, heartbeat-loss recovery, signalling over the open channel, presence-gated redials, server clock sync, network-hiccup grace and wake detection, own-echo rejection, encrypted ring signals), plus the desktop client's anonymous statistics and the daily beacon
Sep 9 v6.04.161 DEV The fullscreen image and PDF viewers now put close at the top left and download at the top right, the usual convention
Sep 9 v6.04.161 DEV Fixed backups taken on an older app version silently leaving out every message written by a newer version — the export reported success with clean counts while the messages were missing
Sep 9 v6.04.161 DEV Fixed the same silent loss for file attachments in a backup taken on an older app version
Sep 9 v6.04.161 DEV Fixed one malformed record aborting an entire backup — a single bad record now only affects itself
Sep 9 v6.04.161 DEV Fixed the readable export printing an empty line attributed to your contact for a message written by a newer app version — it now appears unattributed, with a marker
Sep 10 v6.04.161 DEV Fixed a message written by a newer app version showing as "corrupted" or leaking raw internal text into the chat bubble and sidebar — it now shows a clear "unsupported message" placeholder, worded the same as the desktop client's
Sep 10 — DEV Fixed the desktop client's sync integrity check reporting false differences against the browser for identical data, from four separate causes: a blank contact id, an ignored filter, an unsorted digest and a fabricated empty result
Sep 10 v6.04.161 DEV Sync integrity checks now count only contacts you still have, and stray index entries left by deleted contacts are cleaned up cautiously — never message content, and only after being seen twice 24 hours apart
Sep 10 v6.04.161 DEV A sync that is still making progress now gets more time to finish instead of being cut off by a fixed timeout, and the follow-up integrity check also runs after a partial sync
Sep 10 v6.04.161 DEV History catch-up now streams contact by contact, newest first, instead of one huge or slow contact holding back every other contact's messages
Sep 10 — DEV Fixed a message of a kind the app doesn't recognise being saved as an ordinary text message, permanently losing its real type
Sep 10 — DEV Fixed the desktop client rejecting a message of an unrecognised type instead of storing it
Sep 10 — DEV Fixed the desktop client syncing device-only notices that are supposed to never leave the device
Sep 10 — DEV Fixed hashing zero-length data in the browser's crypto module, which handed back an out-of-bounds memory pointer and could fail with a range error
Sep 10 v6.04.163 DEV Fixed a message written by a newer app version arriving on your other device as undecryptable data that crashed on read — each device seals its data under its own key, so such records are now re-sealed for the receiving device and show the usual "update the app" placeholder
Sep 10 v6.04.164 DEV The same fix for file records in a backup: an attachment entry from a newer app version now restores byte for byte
Sep 11 v6.04.166 DEV Fixed a second process opening the same database silently discarding a running app's recent writes — the database's write-ahead log is now protected from being deleted, on the desktop client and on every server database
Sep 11 — DEV Fixed the desktop client's password change generating a brand-new master key on a device that already held data, which would have made every local record permanently unreadable — it now refuses and points to recovery, as the browser does
Sep 11 v6.04.166 PROD Six versions reach production: backups and exports that keep messages and attachments written by a newer app version, the "unsupported message" placeholder, contact-by-contact newest-first history catch-up, the re-sealing fix for newer-format records crashing the receiving device, the empty-data hashing fix, and protection of the database write-ahead log on the production server
Sep 11 v6.04.167 DEV Removed write-only acknowledgement and operation counters from the mirror-sync bookkeeping
Sep 11 v6.04.168 DEV Photo and document scans now ask the camera for its real resolution (up to 4K) instead of a 1080p preview frame, so small print reads sharper — using the sensor's true still-photo mode where the browser offers it
Sep 11 v6.04.168 DEV Taking a photo no longer asks for microphone permission — only video recording does; on iOS a refused microphone had made the whole camera fail
Sep 11 v6.04.168 DEV Fixed document scanning copying the full-size image buffer back and forth before shrinking it, which had made higher-resolution scanning heavy on phones
Sep 11 v6.04.168 DEV The notification texts and the "unsupported message" text are now translated into all 41 other languages (19 new keys)
Sep 11 v6.04.168 PROD A batch reaches production: sharper photo and document capture with no microphone prompt for a photo, lighter document scanning, and the notification and "unsupported message" texts in all languages
Sep 11 v6.04.169 DEV Fixed every live connection being dropped abruptly with no notice whenever the server was updated — the server now sends a proper "going away" close, so apps reconnect at once instead of backing off and showing "Connection problem"
Sep 11 v6.04.169 DEV The real-time connection now has connect and sign-in watchdogs; before, it could hang silently for a minute or two half-open
Sep 11 v6.04.169 DEV Added a periodic health check that starts a fast reconnect when the connection has been down too long, instead of waiting for a wake-up event
Sep 11 v6.04.169 DEV A rejected login token now triggers a fresh sign-in instead of the app reconnecting forever with the same dead token
Sep 11 v6.04.169 DEV The "connection problem" detector no longer fires just because your contacts are offline — it now reflects your own connection to the server
Sep 11 v6.04.170 DEV The connection-problem message was reworded and translated into 42 languages, no longer implying the server is involved in your message content
Sep 11 v6.04.170 PROD Two versions reach production: all five connection-reliability fixes and the reworded connection-problem message in 42 languages
Sep 11 — DEV The desktop client now allows only one running process per account vault, so a second instance can no longer silently discard a running one's data
Sep 11 — DEV Fixed the desktop client ignoring the "maximum security" account setting and saving the master key to disk anyway — the setting is now honoured and previously saved keys are cleared
Sep 12 — DEV The desktop client's command-line tool can now back up and restore an account's records, using the same backup container as the web app
Sep 12 — DEV The desktop client can now read why the real-time connection was closed and renew its own expired sign-in token — before, it had no way to renew even an ordinarily expired token
Sep 12 — DEV The desktop programs were renamed: solo2 is now the graphical app and solo2-cli the command-line tool
Sep 12 — DEV The desktop client's backups now carry real file contents, and the backup format is shared code with the web app — a backup exported by the desktop client, attachments included, restores byte for byte on another device
Sep 12 v6.04.172 PROD The shared backup-format code and a few small server-side monitoring fixes reach production (no web-app changes)
Sep 12 v6.04.173 DEV Fixed the recurring "Connection problem" pop-up: a session frozen by the two-device limit was never recognised, because the check only ran for successful replies, so the app never entered its proper "Session paused" mode
Sep 12 v6.04.173 DEV Fixed repeated failed session refreshes piling up ghost session records that competed for the two-device limit
Sep 12 v6.04.173 PROD The connection-pop-up fix reaches production: a session paused by the two-device limit now says "Session paused" instead of "Connection problem"
Sep 12 v6.04.175 DEV Fixed devices sharing the two-device limit freezing and unfreezing each other about every 5 seconds — a fully connected device never refreshed its activity time, so it looked dead after 30 seconds
Sep 12 v6.04.175 DEV Fixed a frozen session being reported as a fresh sign-in, which undid the app's own "Session paused" state during the same startup
Sep 12 v6.04.175 DEV The app no longer restarts connections, tunnels and watchers while a session is paused
Sep 12 v6.04.175 DEV A paused session now says so at startup instead of a generic "Session expired"
Sep 12 v6.04.175 PROD The two-device-limit fixes reach production: several browsers sharing one account no longer cause a connection storm or a false "Connection problem"
Sep 13 v6.04.176 DEV Found the real cause of the recurring "Connection problem" pop-up: nineteen app modules had been bundled twice since September 1, so the copy of the connection logic the rest of the app checked never actually connected — deploys now abort if any module would be bundled twice
Sep 13 v6.04.176 PROD The duplicate-module fix reaches production: signals arrive over the real-time connection again and the false "Connection problem" pop-up is gone
Sep 13 v6.04.177 DEV A connection the server reports as dead while the browser still thinks it is open is now replaced automatically, once per episode
Sep 13 v6.04.177 DEV Fixed cross-chat search silently losing older results on every account: a fixed 256-field limit in the storage bridge made index entries for common words unreadable, and the next write overwrote them
Sep 13 v6.04.177 DEV Fixed the plain-text export loading a second copy of the app's storage layer, which had probably kept it from working since mid-June
Sep 13 v6.04.178 DEV The search index now repairs itself, with a paced one-time rebuild after login for accounts that had already lost entries
Sep 13 v6.04.179 DEV The "server unreachable" banner is translated into all 41 other languages
Sep 13 — DEV The desktop client's contact list now updates live when a contact arrives through device sync
Sep 13 — DEV The desktop client's chat scrolls with PageUp and PageDown, the window remembers its size, and a leaked app icon at quit was fixed
Sep 13 — DEV Twelve out-of-bounds and memory-leak bugs in the core message, vault, pairing and packing decoders were fixed after a new fuzzing harness fed them deliberately mangled data — six of them only appeared on 32-bit builds
Sep 13 v6.04.179 DEV The fullscreen image viewer gained zoom and pan: a slider zooms, a zoomed image can be dragged without ever leaving the screen, and it recentres exactly at 1×
Sep 13 v6.04.179 DEV The fullscreen viewer gained previous and next arrows across photos, PDFs and videos — a PDF's page turns come first and hand off at its ends, and arriving at a PDF backwards opens its last page
Sep 13 v6.04.179 DEV The blocking "Connection problem" pop-up became a non-blocking, closable banner under the chat header, with a Reconnect button, shown after 120 seconds of lost connection
Sep 13 v6.04.179 DEV Fixed the identity export and the avatar editor running from a second copy of the crypto module — the export now shows the real fingerprint
Sep 13 v6.04.179 DEV Fixed the release check misreading a code comment as a broken import, which had blocked a deploy
Sep 13 v6.04.180 DEV Fixed a cross-account data-loss bug: switching between two accounts remembered on one browser silently deleted the other account's attachment files, because the start-up cleanup only checked the active account's own vault
Sep 13 v6.04.181 DEV Fixed a fast reconnect inheriting the dead connection's missed-heartbeat count and being dropped again straight away
Sep 14 v6.04.181 PROD Five versions reach production, everything since 176: the dead-socket replacement, the search-index fix and its rebuild, the plain-text export fix, image zoom and pan, viewer previous and next arrows, the non-blocking connection banner, the identity-export fix, the fix for another account's attachments being deleted on account switch, and the missed-heartbeat reconnect fix
Sep 14 v6.04.182 DEV Fixed the chat header and banner staying stuck on "Off" after a page reload even though the connection was actually up — the header was drawn before the connection layer had finished starting and was never redrawn
Sep 14 v6.04.182 PROD The stuck-header fix reaches production
Sep 14 v6.04.183 DEV Fixed the desktop message column overflowing on windows narrower than about 1720px, which could push the sidebar off the left edge with no scrollbar to bring it back — the width was measured against the whole window instead of the chat panel
Sep 14 v6.04.184 DEV Fixed that layout guard doing nothing in Chrome: it clipped one axis only, which browsers silently turn back into "hidden" — both axes are now clipped
Sep 14 v6.04.184 PROD The desktop layout fixes reach production
Sep 14 v6.04.185 DEV Added logging to the server's signal rate limit — which account, which signal type and whether it targeted its own account — after its silent drops made an ongoing rate-limit noise impossible to trace
Sep 14 v6.04.185 PROD The signal rate-limit logging reaches production
Sep 14 v6.04.187 DEV A persistent "MIRROR" text badge now marks a device that is mirroring another, replacing a subtle avatar ring that was easy to mistake for a fault
Sep 14 v6.04.187 PROD Reaches production: the MIRROR badge and more detailed server-side diagnostics for the signal rate limit
Sep 14 v6.04.188 DEV Fixed a stale "unrecognized contact" banner lingering for a contact whose account no longer exists — entries now expire after 7 days without a repeat ring
Sep 14 v6.04.189 DEV Added an "X of Y connected" line under the tunnel list, counting direct and relayed connections and leaving out your own device link
Sep 14 v6.04.189 DEV Moved the MIRROR badge onto the @alias line so it no longer crowds out the account name
Sep 15 v6.04.190 DEV The connected counter now names the rows it leaves out, for example "0 of 7 connected · 1 removed"
Sep 15 v6.04.191 DEV The counter's wording, including the removed-rows suffix, is translated into all 41 other languages
Sep 15 — DEV Closed the last nine fuzzing findings: five overflow and out-of-bounds bugs in the peer-to-peer decoders, a use-after-return that could corrupt a contact's identity key in some builds, and unchecked size arithmetic in the message decoder
Sep 15 — DEV Fixed two reference errors in the browser's file-transfer code — a missing import and a missing declaration
Sep 16 — DEV The desktop client now stamps the duplicate-detection fingerprint on the text messages it sends, as the web app does
Sep 16 v6.04.192 DEV Fixed a decoy contact's fractional creation time making the sync bridge drop your whole contact list from another device, so two devices could show different contacts — it affected every account registered since September 6
Sep 16 v6.04.192 DEV Decoy contacts' timestamps are now whole numbers like real contacts' — a fractional value was a giveaway
Sep 16 v6.04.192 PROD Reaches production, everything since 187: the contact-list sync fix, the expiring unrecognized-contact banner, the "X of Y connected" line, the MIRROR badge on the @alias line, and the fuzzing fixes
Sep 16 v6.04.193 DEV Fixed the two devices of one account sharing a single signal budget of ten per second, which dropped the answer to a reconnect and stalled the link between them for up to two minutes — signals now use a token bucket, and a reload reconnects in 6 to 10 seconds
Sep 16 v6.04.194 DEV Fixed a mirror sync stamping every contact's "last seen" with the current time, which scrambled the sidebar order and the choice of which contacts to dial first
Sep 16 v6.04.194 PROD Reaches production: the self-tunnel signal-budget fix and the last-seen fix
Sep 16 v6.04.195 DEV The signal rate limit was widened so 150 tunnels reconnecting at once are never throttled (a burst of 4,000 and 100 per second), and a drop is now logged at most once per account per 10 seconds
Sep 16 v6.04.195 PROD The wider signal rate limit reaches production
Sep 16 — DEV The desktop client's search key is now derived from the account's master key, as in the browser, so search keys agree between devices — verified byte for byte
Sep 16 — DEV Fixed the duplicate-detection fingerprint throwing an error when given a fractional timestamp — it now truncates it
Sep 16 — DEV A backup exported from the web app now restores on the desktop client — eight of eight real records matched exactly (file contents are still refused, a known gap)
Sep 17 — DEV The desktop client now recognises a new computer after login and asks for a device name
Sep 17 — DEV Fixed the desktop client crashing instead of reporting "never logged in" when its stored credentials could not be unsealed after a machine change
Sep 17 — DEV Mirror sync now moves on to its second phase when the first is really complete, instead of after a fixed 100 ms wait
Sep 17 v6.04.197 DEV The sidebar's three-dot menu is now pinned to the profile card's top-right corner instead of sliding with the length of the name
Sep 17 v6.04.197 DEV The server-connection dot was retired: reachability now shows as a green ring on your avatar, and manual connect and disconnect moved into the user menu
Sep 17 v6.04.197 DEV The founder badge is no longer drawn next to names, and the sidebar's bottom tool buttons match the size of the contact names
Sep 17 v6.04.197 DEV The chat header's call, video and search icons went back behind one menu — on a real phone they left no room for the contact's name — and the "Off / P2P / Relay" text became a ring on the contact's avatar
Sep 17 v6.04.198 DEV Registration is no longer limited to 3 per day per address, which a taken username or an unticked box could use up: it now allows a burst of 20 plus one every 3 minutes, and a failed attempt gives its slot back
Sep 17 v6.04.198 DEV Login backoff is now per address and username instead of per address alone, so one colleague's typos no longer make a whole office wait, while a separate ceiling still stops password spraying
Sep 17 v6.04.198 DEV Security: password verification now has a backoff, and the session status and refresh routes got a per-address gate
Sep 17 v6.04.199 DEV Fixed typing "Solo 2" in the sign-up anti-bot question producing a fake success — a zero token and a forced logout 15 seconds later, with no account — the answer is now checked before anything is cleared, tolerating case, spaces and punctuation
Sep 17 v6.04.199 PROD Reaches production: the real-phone layout fixes, the re-sized rate limits and the anti-bot sign-up fix
Sep 17 — DEV The desktop client now broadcasts its own profile whenever a tunnel becomes ready
Sep 17 — DEV The desktop client's anonymous statistics now cover the same connection families as the browser's, and its tunnel list gained the same "N of M connected" line
Sep 17 — DEV Fixed the desktop client's tier update wiping every other flag on a contact, including the browser's re-pair marker
Sep 17 — DEV Fixed the desktop client overwriting the nickname you gave a contact with their own profile name on every ready signal from a browser peer
Sep 17 — DEV Fixed the desktop client mixing up a contact's touch preference with your own and erasing a held touch token on an empty one; contact avatars are now validated and can be cleared, as in the browser
Sep 17 v6.04.200 DEV Fixed the admin panel not opening a user: its stylesheet path resolved to the landing's smaller build, so the user and balance windows opened below the page
Sep 17 v6.04.201 DEV Fixed a double charge: an account whose balance sat between one and two days' cost could be charged twice in one run, and one that paid its last cents could be put in grace the same day — the daily charge now takes one step per account per run
Sep 17 v6.04.202 DEV An account with no balance now says why it cannot connect: a "No balance" tag, and a notice that your data is still yours and when the account would be deleted — the server no longer says "Account suspended"
Sep 17 v6.04.202 PROD Reaches production: the admin-panel fix, the double-charge fix and the no-balance notice
Sep 17 v6.04.203 DEV Fixed a balance added from the admin panel not unblocking an account in grace — only a payment cleared it; a positive balance now does the same, never for a paused account, which is the owner's own choice
Sep 17 v6.04.204 PROD The admin balance-unblock fix reaches production
Sep 17 v6.04.205 DEV Fixed the account statement recording a mixed charge entirely as real money — a charge takes bonus first, and the statement now shows one entry per fund with the exact split
Sep 18 v6.04.206 DEV The daily rate is now the month's price divided by that month's number of days, rounded down to the cent, instead of a fixed 30 — the fixed divisor had overcharged by about 1.3% a year
Sep 18 v6.04.206 DEV The plan chooser now shows the advertised monthly prices instead of rebuilding them from the daily rate, which read 96.60 € for the 100 € plan in a 31-day month
Sep 18 v6.04.207 DEV A closed QR invite code is now replaced on the spot the next time you show the QR, instead of showing a spent code with a warning
Sep 18 v6.04.208 DEV Fixed the file bubble always drawing a green delivered check, so a document that never left the phone looked delivered
Sep 18 v6.04.208 DEV Nine dialogs and menus that ignored the theme — invite and QR share, QR scanner, message menu, delete dialog, incoming call, install prompt, offline login, two recovery dialogs and the update overlay — now follow it
Sep 18 v6.04.209 DEV Every message type now shows delivery status the same way: location messages had none, touches looked identical sent or not, and a rebuilt row repainted a waiting message as sent
Sep 18 v6.04.210 DEV Added a "Gallery" entry to the + menu to attach photos and videos from the phone's library
Sep 18 v6.04.211 DEV Chat image and PDF previews are sharper — they were rendered at 200 px and blown up 4 to 6 times on phones; there is now one source at 640 px with a size budget, and PDF previews follow the page's width instead of its height
Sep 18 v6.04.212 DEV The Gallery, no-balance and daily-rate texts are translated into all 41 other languages
Sep 18 v6.04.212 PROD Reaches production: exact billing (one statement entry per fund, the month's-days daily rate, the plan chooser), the QR refresh, themed dialogs, the file-delivery check, delivery status for every message type, the Gallery entry, sharper previews and the translations
Sep 18 v6.04.213 DEV Fixed a re-paired contact's history never reaching your other device: that device still held an old deletion marker for the contact and dropped every message and file as if the tunnel had been deleted — a re-pairing now supersedes the older deletion (five separate causes)
Sep 18 v6.04.214 DEV Fixed a tab left open across an update failing to load its own lazy-loaded parts — each release now keeps the previous nine releases' chunks, so an old tab's requests still resolve
Sep 18 v6.04.214 PROD Reaches production: the re-paired contact history fix and the open-tab-across-update fix
Sep 18 v6.04.215 DEV The vault diagnostic now names what became of each orphaned contact record (own, live, deleted or gone) with counts and date ranges, so the daily "orphan" cleanup churn could be traced
Sep 18 v6.04.216 DEV Fixed every page reload re-saving every server alert already received (264 on one account) and counting each one as unread again, and the cleanup deleting that alert channel a day after it was first seen
Sep 18 v6.04.217 DEV The admin panel's Alerts tab now also lists the server's alert channel, newest first, with paging and a filter
Sep 18 v6.04.217 PROD Reaches production: the alert-duplication fix, the cleanup exemption and the alert view
Sep 18 v6.04.218 DEV Fixed a mirror-sync request that arrived just before the link reached READY being answered too early and refused, leaving the requester to wait out a 50-second timeout — such a request is now held and answered once the link is ready
Sep 18 v6.04.218 DEV Fixed two sync rounds starting on every device-to-device connection, which crossed their acknowledgements and re-sent every file's metadata — there is now one round per connection
Sep 18 v6.04.218 DEV When the integrity check finds a mismatch it now names every differing tunnel and rotates which one it drills into, instead of always drilling the first
Sep 18 v6.04.218 PROD Reaches production: the held sync request, the single sync round and the named differing tunnels
Sep 18 v6.04.219 DEV The integrity check now starts on a different tunnel each time the app loads, instead of always drilling the same one
Sep 18 v6.04.219 PROD The rotating integrity check reaches production
Sep 18 v6.04.220 DEV Fixed a race where an integrity check started by the other device was discarded by this device's own delayed check, so the repair never ran
Sep 18 v6.04.220 DEV The debug console's Copy button now copies only the lines that match its filter
Sep 18 v6.04.220 PROD The integrity-check race fix reaches production
Sep 18 v6.04.221 DEV Fixed the safety number never matching between two devices: each side showed its own signing key as "yours" and the contact's exchange key as "theirs" — all three safety views now use the exchange key, and both devices show the same number
Sep 19 v6.04.222 DEV The safety number is now reachable and can be marked verified: the ⋮ menu row reads "Safety number" with the connection state as a note and a check once the contact is verified, and the panel it opens gains a "Mark verified" button that turns into "Identity verified"
Sep 19 v6.04.222 DEV Fixed the safety-number menu and panel describing the wrong contact when opened from a sidebar row with no chat open, and retired an unreachable duplicate safety screen that drew a different grid
Sep 19 v6.04.222 DEV Fixed a file sent before the connection was ready being lost for good if the page reloaded — the resend reported success the moment the transfer was dispatched, before the offer left; the transfer's own completion now settles the status
Sep 19 v6.04.222 DEV Fixed a logged-out account's attachment files being deleted by the next account's start-up cleanup — the cleanup now checks every vault on the device and skips the whole pass if any cannot be listed
Sep 19 v6.04.222 DEV Every server error reply now carries a stable error code beside its text, so apps can show translated messages; 21 new texts were sent for translation
Sep 19 v6.04.222 DEV The new price structure was applied on the development site: the Normal plan at 4 € a month, top-up bonuses of 0, 10, 15 and 25 % on every tier, and a funding cap of 4 € per recipient per month
Sep 19 v6.04.222 DEV An idle app's periodic contact-request checks were replaced by a push: the server now nudges both sides on every change, and the app checks every 120 seconds instead of every 10 while connected
Sep 19 v6.04.222 DEV Fixed a restarted device's connection request being thrown away in three places, which made the link take about 45 seconds to re-form after a login — it is now answered at once
Sep 19 v6.04.222 DEV Logging in with the 24-word phrase now finds your existing vault on the device
Sep 19 v6.04.223 DEV The periodic check for contact presence and queued signals now rides the open real-time connection, with HTTP as the fallback if it does not answer within 3 seconds
Sep 19 v6.04.223 DEV Fixed the "new version available" banner covering the bottom of the security panel, where the verify button sits
Sep 19 v6.04.224 DEV Server alert replies are now pushed over the real-time connection and the fallback check runs every 5 minutes instead of every 30 seconds — an idle app's HTTP requests fell from about 22 a minute to under 2
Sep 19 v6.04.225 DEV Fixed a text message being marked "sent" while its frame still sat in the tunnel's in-memory queue — it now reports sent, queued or failed, and settles when the frame actually leaves
Sep 19 v6.04.225 DEV Fixed a duplicate touch still ringing, and a duplicate "delivered" acknowledgement pulling an already-read message back to delivered — statuses now only move forward
Sep 19 — DEV The desktop client now settles a file resent before the link is ready on the transfer's own completion, instead of marking it sent at dispatch
Sep 19 — DEV The desktop client's touch rows now show delivery ticks like every other message, and the neutral tier badge (NORMAL, FUND, DUP) follows the theme — it was white text on a translucent white pill, invisible on the light themes
Sep 19 — DEV The desktop client now sends and applies a contact's plan tier in both directions, its start-up orphan report names each contact, and its dial sweep is capped at 150 tunnels, most active first
Sep 19 — DEV The desktop client now marks a text as sent only once its frame has left the tunnel, and moves delivery status forward only
Sep 19 v6.04.226 DEV Fixed messages typed into the support chat never leaving the device: they went through the contact chain, which found no tunnel, so every one sat queued — they now go over HTTP, are saved as delivered only on the server's OK, and a refusal shows a translated error
Sep 19 v6.04.227 DEV The support chat now hides the touch button and the + menu, which handed touches, files and locations to the contact chain where they queued forever
Sep 19 v6.04.228 DEV A file pasted or dropped onto the support chat is now refused with the usual file-send error instead of queueing forever
Sep 19 — PROD The new prices are live: the Normal plan at 4 € a month, top-up bonuses of 0, 10, 15 and 25 % on every tier, and a funding cap of 4 € per recipient per month
Sep 19 v6.04.229 DEV The 21 server-error texts are now translated into all 41 other languages, and every place that shows a server error displays it in the user's language
Sep 19 v6.04.230 DEV The support messages that never reached the server no longer sit in the chat forever: the old stuck ones are deleted, along with their copies on your other devices, and anything sent since the fix is untouched
Sep 19 v6.04.230 DEV The unrecognized-contact row now shows when that contact last tried to connect
Sep 19 v6.04.230 DEV The "No balance" notice now says that after a deletion the device keeps everything, readable with the 24 words
Sep 19 v6.04.230 DEV When the server no longer accepts a session, the login screen now says the session could not be opened and that the data is still on the device — open it with the 24 words or log in again; it never says anything was deleted
Sep 19 v6.04.230 DEV App-resume statistics now record how long the app was in the background together with whether the session survived it, as anonymous aggregate counts — nothing personal
Sep 19 v6.04.230 DEV Server alerts in the support chat are now deleted automatically after 90 days — messages users wrote are never touched
Sep 19 v6.04.230 DEV The per-address request and connection limits were raised so that many people behind one shared network address are never caught by them; the per-user limits and every sign-in, sign-up, pairing and signal limit are unchanged
Sep 19 — DEV Fixed the desktop client saving, extracting, rendering and backing up every file sent from the browser still encrypted: it now writes the real file, a half-written save is deleted on any error, and a backup no longer seals the file a second time
Sep 19 v6.04.220→230 PROD Reaches production, everything since 220: the safety number that now matches on both devices and can be marked verified, the fixes for files and texts marked sent too early or lost on a reload, server errors in all 42 languages, far fewer background requests from an idle app, faster reconnection after a device restarts, the 24-word login finding its vault, support-chat messages that now reach the server, the unreachable-session and no-balance screens, and per-address limits re-sized for shared networks
Sep 20 v6.04.231 DEV Fixed the first reconnection after a page reload sometimes stalling for about 20 seconds: a reloaded page could answer a connection attempt that had already ended, and the browser and the desktop client now ignore replies that belong to a different attempt; devices on the previous version still connect exactly as before
Sep 20 v6.04.231 DEV Invite links no longer ask the server for a reply every 10 seconds forever: they check every 10 seconds for the first 10 minutes, then every minute for an hour, then every 5 minutes, and check again as soon as the app comes back into view
Sep 20 v6.04.231 DEV The "server unreachable" notice, its "last attempt" line and the "your data stays" message are now translated into all 42 languages
Sep 20 v6.04.232 DEV The anonymous error and diagnostics reports are now limited per client address instead of across the whole server, so one noisy client can no longer use up everyone's allowance
Sep 20 — DEV The desktop client now shows a dismissible strip when the server cannot be reached
Sep 20 v6.04.233 DEV Fixed the paused-account notice in all languages: it told you that you would not be charged, and it now says that only part of the daily price is charged while the account is paused
Sep 20 v6.04.233 DEV A Pro user can now cancel an invitation that has not been claimed yet from inside the app: the waiting account is deleted and the invite and the monthly allowance it used are given back; an invitation whose recipient has already chosen a password cannot be cancelled
Sep 20 v6.04.233 DEV Trying to cancel an invitation that was already claimed now explains why nothing happened instead of showing a missing text
Sep 20 v6.04.235 DEV Fixed formal wording in French, German, Dutch, Czech, Russian and Turkish: several texts addressed you formally and now use the same informal "you" as the rest of the app, except where a text speaks to two people
Sep 20 v6.04.235 DEV The 13 texts for cancelling an invitation are now translated into all 41 other languages instead of appearing only in Spanish
Sep 20 v6.04.236 DEV Fixed the Spanish "location unavailable" message, which was missing its accents
Sep 20 v6.04.236 DEV Fixed the wrong message shown by a browser with no location support at all: it said the position was unavailable and to use a mobile device, and it now says the feature is not supported
Sep 20 v6.04.238 DEV A contact you verified on one of your devices now shows as verified on your other devices too
Sep 20 v6.04.238 DEV The connection indicator now follows one shared rule in the browser and the desktop client, so both agree on when a connection counts as live
Sep 21 v6.04.239 DEV Commands and hints in French, Slovak, Portuguese, German, Czech, Russian, Dutch, Turkish and Ukrainian now use the informal "you" in their verbs too, not only in the pronouns
Sep 21 v6.04.239 DEV Fixed the French "location unavailable" message, which had turned into a sentence about GPS: it again tells you to use a mobile device
Sep 21 v6.04.239 DEV The new "location not supported" message is now translated into every supported language
Sep 21 v6.04.240 DEV The server no longer keeps one of its shared request slots busy while it waits on the payment provider, so a slow checkout cannot hold back other people's requests
Sep 21 v6.04.241 DEV Fixed the payment-options request failing for every client if a top-up list ever grew past a fixed size: an oversized entry now falls back to an empty list instead of a broken reply
Sep 21 v6.04.230→242 PROD Reaches production, everything since 230: the first reconnection after a reload no longer stalling for about 20 seconds, invite links that stop asking the server every 10 seconds, Pro invitations that can be cancelled before they are claimed, the corrected paused-account notice, informal wording in nine languages, contacts verified on one device showing as verified on all of them, fixed location messages, a slow payment provider no longer holding back other requests, and diagnostics limits per client address
Sep 21 v6.04.243 DEV Fixed peer connections re-dialling each other in a loop: a call signal the server re-delivered was being read as the other person restarting, so an already-processed signal is now ignored
Sep 21 v6.04.243 DEV Fixed a related issue found while testing that repair, where a rapid burst of repeated call signals could keep growing in memory
Sep 21 v6.04.242→243 PROD Reaches production: the repeated-reconnection fix
Sep 21 v6.04.244 DEV The admin panel gains a view of store purchases per day and per store, with alerts for unconsumed purchases and unusual refund rates, and no personal identities anywhere in it
Sep 21 v6.04.245 DEV Fixed actions being signed with an expired session after a silent re-login: taps, call rings, support messages and renames kept using the old credential until the page was reloaded, and every one of them now re-checks it first
Sep 21 v6.04.245 DEV The admin load view now shows which actions make up the requests it counts, so a busy figure can be explained rather than guessed at
Sep 21 — DEV A device now shows whether it is the active one or a mirror, in all 42 languages, and a device demoted to mirror stops displaying "Offline"
Sep 21 — DEV The desktop client can send a file from disk, and resumes the transfer if it is interrupted
Sep 21 — DEV The desktop client accepts files dropped onto its window, with live progress while they send
Sep 21 — DEV Removing a photo's hidden metadata no longer leaves portrait pictures rotated onto their side
Sep 21 v6.04.243→246 PROD Reaches production: actions signed correctly after a silent re-login, the active/mirror device indicator, the admin load view's per-action breakdown, and the store purchases view
Sep 21 v6.04.247 DEV A desktop client receiving a file sent from disk now builds its own preview for it, instead of showing nothing until the file is opened
Sep 21 v6.04.247 DEV The attach-file label and the message shown when no file picker is available became properly translated text in all 42 languages; the browser had been showing an untranslated English word
Sep 22 v6.04.248 DEV The unread badge stops counting your own messages
Sep 22 v6.04.248 DEV Files sent from the desktop client now respect the ephemeral conversation mode, matching the browser
Sep 22 — DEV The desktop client gains a fullscreen viewer for photos and PDFs, with zoom, pan, close and download — a click used to write the file straight to disk
Sep 22 — DEV The fullscreen viewer moves between a conversation's photos and documents with arrow keys and on-screen chevrons
Sep 22 v6.04.249 DEV A device acting as your mirror no longer asks for the same unavailable files on every reconnect, and no longer marks your own older messages as failed
Sep 22 v6.04.249 DEV Messages waiting to go out are no longer sent several times over when many arrive at once, which had made syncing between your own devices restart again and again
Sep 22 v6.04.249 DEV Restoring a backup no longer brings back messages you had deleted
Sep 22 v6.04.249 DEV Very long text messages are capped in height and scroll inside their own bubble
Sep 22 v6.04.249 DEV The chat background pattern is half as dense
Sep 22 v6.04.249 DEV The message menu also opens from the time row of a text message
Sep 22 v6.04.249 DEV Updating the app clears outdated cached files on every update path, not just some of them
Sep 22 v6.04.249 DEV A release can no longer go out with an outdated compiled component when that component fails to build: the build stops instead
Sep 22 — DEV Quick taps and clicks are no longer lost in the desktop client, and Escape reliably closes the wallet window
Sep 22 — DEV Typing or sending a message on the desktop client marks it as your active device, as in the browser
Sep 22 v6.04.250 DEV Search stays fast as an account grows: adding a message no longer rewrites the whole index of a common word, in the browser and the desktop client
Sep 22 — DEV Sending a photo or PDF from the desktop client no longer freezes the app while the file is checked for hidden metadata
Sep 22 v6.04.250 DEV A received file copied to your other device during catch-up is no longer shown as sent by you, and a delivered or read message is no longer downgraded to failed
Sep 22 v6.04.250 DEV A contact who has never connected no longer shows the mirror label and a false sent tick; the message goes out once the connection really exists
Sep 22 — DEV The desktop client, as your active device, no longer re-sends the copies for your other device at every reconnect
Sep 22 — DEV Desktop search ranks results by how many of your words they match, like the browser
Sep 23 v6.04.250 DEV Trying to reach an account that is paused or out of balance now shows "this person cannot connect right now" instead of silence, without saying why
Sep 23 v6.04.250 DEV When the relay is full, the app counts down 30 seconds and tries once more; a tap cancels the retry
Sep 23 v6.04.250 DEV An update no longer breaks a still-open page from the previous version while it finishes
Sep 23 v6.04.250 DEV Photos can be rotated 90° per press; the rotation is only a display setting and syncs to your other devices
Sep 23 v6.04.250 DEV Sending many files at once: photos are read two at a time, a second selection is no longer dropped as a duplicate, and batches go out in order
Sep 23 v6.04.250 DEV Downloading several selected files gives a single download: the file itself, or one zip in chat order
Sep 23 v6.04.250 DEV The skip-to-content link appears only when you navigate with the keyboard, and the hidden-metadata question now says photo, document or files as appropriate
Sep 23 v6.04.250 DEV Clearing the unrecognised sign-in alert on one device clears it on your other devices too
Sep 23 v6.04.250 DEV Asking another device to send you everything no longer turns received files into empty text messages, and no longer stops early
Sep 23 v6.04.250 DEV Syncing between your devices no longer skips messages written in the same millisecond, and no longer stops early on a batch with nothing new
Sep 23 v6.04.250 DEV A reload no longer shows again an incoming call signal that was already handled
Sep 23 v6.04.250 DEV The browser tells your other device about every change of a message's status
Sep 23 v6.04.250 DEV The relay's access credential is now per session and refreshed before it expires, so the relay no longer sees a stable identifier for your account
Sep 23 — DEV Payments: a payment whose credit fails to save is delivered again until it is credited, and an unconfirmed or cancelled Bitcoin payment can no longer be credited
Sep 23 — DEV The desktop client shows "this person cannot connect right now" too, and re-checks your own account state every two minutes
Sep 23 — DEV The desktop client shows the no-balance tag and notice, like the browser
Sep 23 — DEV The desktop client shows the Active / Mirror badge, and its viewer reports whether a download was saved
Sep 23 — DEV Settings changed on the desktop client (mute, metadata choice, conversation mode) now reach your other device, and an older setting can no longer overwrite a newer one
Sep 23 — DEV The desktop client records balance movements pushed by the server and fetches the ones it missed
Sep 23 — DEV The desktop client no longer silently drops 24 kinds of internal messages — deleting a contact, updating a name, unsending and requesting thumbnails among them now reach the other side
Sep 23 v6.04.251 DEV Deleting a contact also stops the file transfers and pending sends of that conversation, in the browser and the desktop client
Sep 23 v6.04.251 DEV A contact is kept when their conversation could not be deleted, instead of disappearing while its messages stay behind
Sep 23 — DEV The desktop client gains the payments statement, opened by clicking a balance line
Sep 23 — DEV The desktop client refreshes its relay access before it expires, and a backup import no longer overwrites newer settings
Sep 23 v6.04.252 DEV The app starts faster: 19 scripts not needed at startup now load after the page
Sep 23 v6.04.252 DEV Linking a contact to a new account clears the old conversation's activity the same way deleting it does
Sep 23 — DEV The desktop client sends read receipts when a message arrives in the open chat
Sep 23 — DEV Photo previews on the desktop client are prepared off the main thread, and a preview that arrives after its bubble is drawn now appears
Sep 23 — DEV Photo bubbles on the desktop client show their rotation
Sep 23 v6.04.254 DEV Payments are cross-checked every day, one by one and by amount, against the payment processor, including days with no charges, with the result shown in the admin panel
Sep 23 v6.04.255 DEV Every change made in the admin panel now alerts the administrator, including changes made through routes added later
Sep 23 v6.04.256 DEV Neither the browser nor the desktop client falls back to a third-party connection server any more; only Solo2's own is used
Sep 23 v6.04.256 DEV Admin edits that match no account now report an error instead of a false success
Sep 23 v6.04.257 DEV Fixed a loop in development builds since 6.04.250 that could exhaust the page while syncing message statuses between your devices
Sep 23 v6.04.258 DEV A file you send is saved together with its message, so an interrupted batch can no longer leave hidden, never-sent photos behind
Sep 23 v6.04.258 DEV With three devices on one account, a device taking over the connection could leave two of them showing connected while no message crossed; fixed in the browser and the desktop client
Sep 23 v6.04.258 DEV Stopping automatic reconnection also cancels the connection attempts still scheduled
Sep 23 — DEV The desktop client can open your history offline with your 24 words, read-only and without touching the network
Sep 23 v6.04.246→258 PROD Reaches production, everything since 246: mirror devices no longer re-asking for files or re-sending messages, restores no longer bringing back deleted messages, faster search, the "cannot connect right now" notice, the relay-full retry, photo rotation, many-file sends and single downloads, per-session relay access, a faster start, contact deletion that stops its transfers, admin alerts, and the three-device connection fix
Sep 23 v6.04.259 DEV The open chat stays at the newest message while photos load and while the app refreshes in the background, instead of creeping upward
Sep 23 v6.04.259 DEV A device that stands down because you signed in elsewhere now stops its mirror badge and syncing correctly
Sep 23 v6.04.259 DEV Forwarded files are saved together with their message
Sep 23 v6.04.259 DEV The trial days-left tag matches the server exactly, in the browser and the desktop client, and no longer says "last day" a day early
Sep 23 v6.04.259 DEV The payment service no longer receives or keeps your Solo2 account id: each top-up uses a single-use reference that is deleted once your balance is credited
Sep 23 — DEV The payment service now issues the credit note for an expired Bitcoin payment
Sep 23 — DEV The desktop client no longer leaves hidden leftovers when it is closed while sending a file, wipes its key from memory when it closes your data, and quits promptly while it cannot reach the server
Sep 23 v6.04.258→259 PROD Reaches production, together with the payment service: the processor no longer keeping your account id, the chat holding its place while photos load, forwarded files saved with their message, and the corrected trial tag
Sep 23 — PROD Card top-ups work again; since September 5 the card payment form could not be submitted
Sep 23 v6.04.260 DEV Asking another device to send you everything: it now asks its owner before sharing, a refusal is shown to you, reactions come along, and the files' contents follow their messages
Sep 23 v6.04.260 DEV The French local-data notice shows its warning sign instead of a leftover placeholder
Sep 23 — DEV The desktop client can export a backup while offline, protected by a password or a new set of 24 words
Sep 23 v6.04.261 DEV Importing a backup in the browser places the files of your own account correctly and reports anything it cannot place; a refused history request reads properly in English
Sep 23 — DEV A desktop backup and restore no longer loses files or forgets which messages were still waiting to be sent
Sep 23 v6.04.259→261 PROD Reaches production: ask-before-sharing for "send me everything" with the files' contents, the backup import fixes and the French warning sign
Sep 23 v6.04.263 DEV A balance change whose statement entry cannot be saved now fails as a whole instead of leaving your statement incomplete
Sep 23 v6.04.263 DEV The trial bonus is paid back at the same daily rate the service charges, so short months no longer return less than they charge
Sep 24 v6.04.263 DEV Signing out no longer dials a contact on the way out and breaks the next connection, and duplicate connection signals are ignored
Sep 24 v6.04.263 DEV A conversation recovered with "send me everything" appears at once, without reopening it
Sep 24 v6.04.264 DEV Requesting your history from another device shows a short floating notice: requesting, refused, or how many messages were recovered
Sep 24 v6.04.264 DEV Photos can also be rotated to the left, and a rotated thumbnail no longer turns back when the pointer rests on it
Sep 24 — DEV The desktop client saves received files into the chat with their own preview, rotates left with Shift+R, and no longer shows an unread badge on the chat you are reading
Sep 24 — DEV The desktop client exports an online backup without freezing the app, even for a large account
Sep 24 v6.04.265 DEV In Spanish, "La Bóveda" becomes "Mis datos", and delete messages say exactly what they delete
Sep 24 v6.04.265 DEV Messages that manage your own devices are accepted only from your own devices; a contact can no longer trigger them
Sep 24 v6.04.261→265 PROD Reaches production: the device-management protection, the matching trial bonus, sign-out and duplicate-signal fixes, the floating history notice, rotate left, and "Mis datos" in Spanish
Sep 24 v6.04.266 DEV Deletes made on one device now reach your account's other devices, including those made from the Mis datos screen, and are never synced back; two options are renamed "Delete tunnel messages" and "Delete local data"
Sep 24 v6.04.267 DEV Clearing a conversation removes its older content on all your devices, deleting a contact respects a later re-pairing, and delete records no longer expire
Sep 24 v6.04.267 DEV An explicit "Recover history" brings back everything the other device shares, even messages you had deleted before; a later delete still wins
Sep 24 v6.04.267 DEV Messages recovered while reconciling with your other device appear in place, without reloading the whole chat and losing your scroll position
Sep 24 v6.04.267 DEV The backup import panel shows records it could not attach to a conversation, and a desktop backup restores in the browser with the same counts
Sep 24 — DEV The desktop client accepts connection requests: from its own invitation link and from Pro invitations
Sep 24 v6.04.268 DEV Your record of deletions is kept inside your encrypted data on each device, instead of being wiped at every update and sign-out
Sep 24 v6.04.269 DEV "Delete everything" now reaches all your devices while keeping your account and settings; contacts re-paired afterwards and a later history recovery are kept
Sep 24 v6.04.269 DEV Signing out no longer carries one account's delete state into the next account on the same device
Sep 24 v6.04.270 DEV Several photos or videos sent together within a second show as one grid (up to 2×2 with "+N"), in the browser and the desktop client
Sep 24 v6.04.270 DEV Clearing a conversation first stops the files still being sent into it
Sep 24 v6.04.271 DEV "Delete everything" removes each conversation exactly as deleting it alone does, telling each contact and your other devices
Sep 24 v6.04.271 DEV Support becomes a regular conversation you can open from the app, reachable even from a paused account
Sep 24 v6.04.273 DEV The app asks for notification permission only when you tap to allow it, the sidebar links the Terms, and the account-deletion warning says any balance is lost
Sep 24 v6.04.273 DEV A top-up that arrives while an account without balance is being removed now keeps the account
Sep 25 v6.04.275 DEV A contact you deleted no longer appears among the unrecognised contacts trying to reach you, and the delete confirmation says they cannot contact you again without a new invitation
Sep 25 v6.04.275 DEV A one-time suggestion on first sign-in invites you to turn on notifications, with a single tap
Sep 25 v6.04.276 DEV The new "Mis datos" names, the delete wording and the notification suggestion reach all 42 languages
Sep 25 v6.04.277 DEV A support reply you deleted no longer comes back
Sep 25 v6.04.278 DEV A backup restored right after "delete everything" is no longer wiped again on your other devices
Sep 25 v6.04.278 DEV Clearing a single chat no longer shows the whole-device wipe title
Sep 25 v6.04.279 DEV One send is limited to 50 files: the first 50 go out and a notice says what was left behind
Sep 26 v6.04.280 DEV Syncing between the browser and the desktop client now completes even with many files: every sync message stays within size limits instead of being refused silently
Sep 26 — DEV The desktop client's contact list scrolls
Sep 26 v6.04.281 DEV A photo preview that arrives late appears in its bubble instead of a broken image, and a reload looks the same as the live chat
Sep 26 v6.04.282 DEV A group of more than four photos can be expanded to show them all and folded again, in the browser and the desktop client
Sep 26 v6.04.283 DEV Select several messages to forward them in chat order or delete them at once; the desktop client can select and delete too
Sep 26 v6.04.284 DEV Restoring a backup shows steady progress instead of freezing at a third and then jumping
Sep 26 v6.04.285 DEV Exporting a backup is 2.5 times faster, and its progress moves steadily until the file is really handed over
Sep 26 v6.04.286 DEV Very long texts and oversized profile pictures are limited at entry
Sep 26 — DEV The desktop chat keeps your place while previews load or a photo group is expanded
Sep 26 v6.04.287 DEV A photo group leaves clearly more space after it than between its cells
Sep 26 — DEV The desktop client can forward messages and files through a contact picker; a forward lands whole or not at all
Sep 26 v6.04.289 DEV A plain text from your desktop device no longer shows as unsupported in the browser
Sep 26 v6.04.289 DEV Several forwarded messages reach the contact in the order you composed them
Sep 26 v6.04.289 DEV The invitation-link dialog asks in one sentence whether to connect with whoever sent the link, and no longer shows or records the raw code
Sep 26 v6.04.289 DEV Three Spanish backup-reminder texts get their accents back
Sep 26 — DEV The desktop client keeps every file body encrypted on disk, and its metadata question names photos, documents or both
Sep 26 — DEV The desktop client really connects to contacts on its own and hands relayed files over as proper transfers
Sep 26 v6.04.290 DEV A file body arriving from your other device retries the sends still waiting for that contact
Sep 26 v6.04.265→290 PROD Reaches production, everything since 265: deletes that reach all your devices, including "delete everything", Support as a conversation, photo grids with expand, multi-select forward and delete, the 50-file limit, steadier backup progress and a faster export, restores that survive a clear, sync size limits, and the forwarding fixes
Sep 26 v6.04.291 DEV Files of any type sent in one gesture form one group, with mixed cells and a text note showing its first lines; the viewer pages through the whole group
Sep 26 v6.04.292 DEV An arriving file appears where a reload would place it, so a group no longer looks split until you reload
Sep 26 — DEV The desktop client draws mixed file groups too, with a card for files it cannot preview
Sep 26 v6.04.294 DEV A received file is stored once, whichever arrives first, its offer or its message
Sep 26 v6.04.295 DEV The update banner no longer offers the version you are already running
Sep 26 v6.04.296 DEV Unsending or reacting to a forwarded file also reaches the sender's own other device
Sep 26 v6.04.297 DEV File contents reach your other device again after a large send, and a file still syncing shows "Syncing…" instead of "Queued"
Sep 27 v6.04.298 DEV Signing in again keeps the open chat's recipient, so a message typed right away is no longer lost
Sep 27 v6.04.298 DEV A burst of arriving files no longer marks already delivered files as failed
Sep 27 v6.04.299 DEV A file's delivery time is recorded when the other side confirms it, so your other devices no longer think delivered files still need sending
Sep 27 v6.04.290→299 PROD Reaches production: file contents syncing to your other device again, file groups of any type, the recipient kept after signing in again, no false failures after a burst of files, and file delivery times
Sep 27 v6.04.300 DEV Your devices tell each other which messages still need sending, instead of guessing it
Sep 27 v6.04.300 DEV The messaging core handles running out of memory safely in about 80 places where it could leak or crash
Sep 27 v6.04.301 DEV Your devices merge their delivery confirmations, keeping the earliest
Sep 27 v6.04.302 DEV A delete is recorded before the message is removed, and a contact's unsend is no longer echoed back
Sep 27 v6.04.303 DEV A deleted message leaves a permanent marker in your encrypted data, and backups carry it
Sep 28 v6.04.304 DEV A deleted message is replaced by its marker in one step, in the browser and the desktop client
Sep 28 v6.04.305 DEV A deleted message stays deleted through sync and reconnection, while restoring a backup still brings back every message it holds; no more stray "Today" divider
Sep 28 v6.04.299→305 PROD Reaches production: devices sharing what still needs sending and merging delivery confirmations, the delete fixes, permanent delete markers with per-message backup restore, the memory-safety fixes in the messaging core, and no stray "Today" divider
Sep 29 v6.04.306 DEV Your devices keep each other's deleted-message markers in step, each catching up from where it left off
Sep 29 v6.04.307 DEV Each deleted message's marker now crosses between your own devices once, and the old capped list of deletes is gone
Sep 29 v6.04.308 DEV Restoring a backup now reproduces it: its deletions apply to messages you still have too
Sep 29 v6.04.309 DEV Restoring a backup asks before deleting a message you still have: one question per message, with an “apply to the rest” option
Sep 29 v6.04.309 DEV Fixed a red “transfer stalled” strip appearing over a file that had already arrived, after the same file was requested from two sources at once
Sep 29 v6.04.309 DEV Every red error notice is now translated; none shows raw technical text any more
Sep 29 v6.04.309 DEV The GIF picker speaks your language instead of English
Sep 29 v6.04.310 DEV The Pro invitation window shows how many of this month's 30 invitations and gifts you have left
Sep 29 v6.04.312 DEV Running out of memory during a restore no longer shows up as a wrong password
Sep 29 v6.04.312 DEV Fixed the “tunnel recreated” separator being sent to your contact as if it were a message
Sep 29 — DEV Fixed a contact being able to crash the desktop client with one malformed file offer
Sep 29 v6.04.313 DEV Account types are renumbered so that a missing or unknown type can never be read as Admin, including by older app versions
Sep 29 v6.04.313 DEV Fixed a failed send on one device clearing the “needs resending” state on your other devices
Sep 29 v6.04.313 DEV A backup made by a newer app now tells you to update instead of failing
Sep 30 v6.04.314 DEV The relay is now called “Espejo” in the app, shown in orange, and sync between your own devices says “Sincronizado”
Sep 30 — DEV Fixed a desktop-client crash when offering files between devices
Sep 30 v6.04.315 DEV Fixed file status marks: a waiting file no longer shows as sent, and a reloaded file keeps its delivered and read ticks
Sep 30 — DEV Fixed the desktop client resuming a crashed large-file transfer from the wrong place, so the file never completed
Sep 30 — DEV Fixed the desktop client crashing when its display connection disappeared while you were logged in
Sep 30 v6.04.319 DEV Four app texts that wrongly said “server” were corrected in Spanish
Sep 30 v6.04.320 DEV Deleting your account now clears only the device you are using, and tells your other devices their data was kept
Sep 30 v6.04.321 DEV Fixed a brand-new account being unable to connect to anyone until the page was reloaded