<< All updates
July 30, 2026·GeeChat Team

Direct messages, and nicknames that don’t collide

This is the biggest update since launch, so there's a lot here — encrypted DMs, friends, and per-server nicknames, plus a long list of fixes underneath.

Direct Messages

You can now send a friend request to anyone on a server you share, and once they accept, message them directly — outside of any channel, encrypted end-to-end. The server relays the message, but it never sees the content: only you and the person you're messaging can read it.

A few things worth knowing about how this works:

  • Friends are cross-server. If you and someone else are both on more than one shared server, you're friends everywhere at once, not per-server.
  • Verification is available, not required. Every conversation has a safety number — a short code you can compare with the other person over voice, in person, or any channel outside GeeChat — to confirm nobody's intercepting your messages. If you're on more than one server together, GeeChat also automatically checks whether both servers agree on their key, and warns you if they don't.
  • Unfriending or blocking someone doesn't erase your history. It stops new messages, but the conversation you already had stays exactly where it was — on both sides.

Per-Server Nicknames

Usernames are global — the name attached to your identity everywhere. Nicknames are new, and they're local to each server: what people on that server actually see you as.

The main reason this exists: if you join a server and someone's already there with the same name, you'd otherwise be indistinguishable from them. Now, the second person to join with a given name automatically gets a (2) appended — Alex, then Alex (2), then Alex (3) — so nobody has to sort out who's who by public key. From there, it's yours: change it any time from Settings, no restrictions on what you pick.

@mentions follow the same logic. Typing someone's nickname resolves to them specifically, even if someone else shares the same underlying username — and if you type someone's original username instead (say, you knew them before they changed their nickname), that still finds them too, as long as it's not ambiguous with someone else's current nickname.

Everything Else

A long list of smaller fixes rode along with this release:

  • Blocking someone now actually stops their messages everywhere you share a server with them — previously it only reliably worked on one.
  • Accepting a friend request from someone you've blocked is no longer possible by accident.
  • Unfriending, blocking, and unblocking now all validate that the other person actually exists before doing anything, instead of silently logging a broken record.
  • DM history now loads in pages as you scroll up, instead of everything at once, and a plaintext copy of your recent messages is cached locally so your conversation shows up instantly when you open it.
  • Identities created before end-to-end encryption existed are automatically upgraded the next time you open the app — no action needed.

As always, this ships automatically to anyone already running the app. Grab a build on the download page if you're setting up fresh.