Repository navigation
Ekko 0.7.1 — first-contact fixes
Everything below came out of one day of live cross-client testing (browser ↔ browser and browser ↔ iOS).
Secure-channel setup
- First contact with an account connection no longer publishes a "Secure-channel setup" message into the chat: the sender checks the account mailbox first (staging its session there, or adopting the one the peer staged). The in-chat setup only remains for peers you aren't connected to on Ekko — or when offline.
- Restoring on a fresh browser adopts the
@handlethe identity already owns, so the popup can't show an empty "claim a handle" prompt right after onboarding said "You are@you" (#6).
Chat auto-linking
- Phone numbers linked on an account are canonicalized to bare digits everywhere. A "+39 333 …" typed on the phone never matched the digits an adapter reads off the page, so chats silently stayed unlinked at "Encrypted with
@contact— click the Ekko button to read". - Auto-link now matches the platform username or a linked phone number — digits-for-digits against phone-shaped handles only, never against ids that merely contain digits. Telegram exposes a mutual contact's phone, and a phone is often the only identifier two people have linked.
- When a chat can't be confirmed as a 1:1 but the vault already holds the session that sealed its messages, the glyph offers "Read messages from
@contact". Binding unblocks reading only; sending stays paused until the chat is confirmed.
Telegram
- An identity read landing before Telegram Web wrote its user record was cached as a permanent "no username" for the tab's life, killing auto-link until the next reload. Misses now retry after a short backoff.
- WebK's thread id no longer falls back to a bubble's peer id, which could belong to the previously open chat. Header id, or the visible "identifying this chat" state — never a guess. Thanks @MN012 for independently running down the same root cause (#5).
Repo
- The nightly release banks its download counts before replacing assets, so the README badge accumulates instead of resetting.
Install: unzip, then chrome://extensions → Developer mode → Load unpacked → pick the unzipped folder. The Firefox zip is experimental.