The past month has been very busy for me with
#Nymchat development. I'm going to ease up and take a break. Just a few highlights on what was shipped in the past 30 days:
Quantum-resistant encryption — hybrid ML-KEM-768 + secp256k1 on all PMs, group chats and synced settings. Automatic, no setting. Shows a shield badge that says honestly when a message isn't protected.
Message threads — reply threads in channels, PMs and groups. On by default, opens in place. Nymbot replies in threads too.
Bluetooth mesh in the browser — the PWA now joins the same offline mesh as the apps and Bitchat, on Chrome/Edge/Brave/Opera.
Mesh actually remembers things — offline sends now republish to Nostr when you're back online; gossip sync serves backlog to people who walk in late; couriers carry sealed DMs via peers who can't read them; gateway mode lets an offline device publish through a peer with signal.
Group history sharing — owners can opt in to give new members the last 50 messages.
Group key resync — coming back after days offline no longer leaves you unable to decrypt.
Nymbot: ?image and ?speak commands — image generation and voice clips on paid tiers, plus vision (send it a picture and it actually sees it).
Formatting toolbar + media previews in the composer — bold/italic/code/quote/headings without knowing markdown, and thumbnails of attachments before you hit send.
Instant UI translation — 132 languages pre-translated all of the app's text and now all message translations moved in-house away from proxied Google.
Proof-of-work in the timestamp popup — recomputed from the event ID, not trusted from the tag, and shows the PoW of a message.
Build verification — the Android app's About screen checks the APK hash against Zapstore's signed release event to confirm you're running the authentic build.
Faster startup — persisted signature cache, lazy images, and an 11.9s main-thread freeze removed. The app should feel a lot snappier.
https://nymchat.app