diff --git a/releases-manifest.json b/releases-manifest.json
index 63b8716..23b07d4 100644
--- a/releases-manifest.json
+++ b/releases-manifest.json
@@ -1,646 +1,198 @@
-{
- "schema": "silentmode-releases/2",
- "updated": "2026-10-25",
- "mirrors": [
- "https://hermes.x/",
- "https://dl.silentmode.st/"
- ],
- "releases": [
- {
- "id": "hermes-android",
- "product": "Hermes for Android",
- "version": "0.3.39",
- "date": "2026-10-25",
- "platform": "android",
- "minSdk": 26,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
- "changes": "QR device linking. Profile -> Link another device shows a QR + 6-digit code (sk AES-GCM encrypted with HKDF of the code). Welcome -> Scan to link opens the camera, scans, asks for the code, seals the primary's sk on this device. Both devices run the same identity. Camera permission + ZXing.",
- "files": {
- "hermes-v0.3.39.apk": "b040e73a14cd7e177b167514da223379a5988a845787424072b072798ec0ce95"
- }
- },
- {
- "id": "hermes-android",
- "product": "Hermes for Android",
- "version": "0.3.21",
- "date": "2026-10-25",
- "platform": "android",
- "minSdk": 26,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
- "changes": "Profile card redesign to match the drawing. Info card holds Name / Mobile / About as three inline-editable rows (verified check + phone number on the Mobile row, pencil on each). Separate Identity card for npub + Copy with Accounts-on-this-device section underneath (current account shows as Active; the switcher UI lands when multi-account ships). Edit Info pill removed — rows are directly editable; Settings pill stays as the nav shortcut. Single-field edit dialogs auto-publish to relays when Privacy → Profile visibility allows. Same signing key as 0.3.20.",
- "files": {
- "hermes-v0.3.21.apk": "74f9e196e2809a26045adb975d32c1938ed38789d5e9cc6a6f8f55fe1b69d4dd"
- }
- },
- {
- "id": "hermes-android",
- "product": "Hermes for Android",
- "version": "0.3.20",
- "date": "2026-10-24",
- "platform": "android",
- "minSdk": 26,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
- "changes": "Delivered + read ticks. Outbound bubbles progress clock → sent → DOUBLE tick (delivered, after the recipient's client unwrapped it) → BLUE double tick (read, after they opened the chat). Bidirectional receipt convention — recipient's client sends a NIP-17-wrapped empty-content kind:14 chat with `['r', , 'received'|'read']` back to the sender; sender matches by (peer, mid) and forward-only transitions local status. Privacy → Send delivery & read receipts toggle (default ON, matches Signal/Telegram). Off = your contacts stay at single tick on their side and nobody can tell when you came online. Group receipts deferred (ack-to-whom needs its own design). Schema v6 → v7 destructive: messages gain receiptSentReceived + receiptSentRead flags. Same signing key as 0.3.19.",
- "files": {
- "hermes-v0.3.20.apk": "9ffd93dff3a1f7d4516178e61cb357112bfc19d371254680e523dd24687ce31e"
- }
- },
- {
- "id": "hermes-android",
- "product": "Hermes for Android",
- "version": "0.3.19",
- "date": "2026-10-24",
- "platform": "android",
- "minSdk": 26,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
- "changes": "Delivery reliability + chat polish. Fixes the 'other device never sees new messages' / 'have to send to pull' bugs: mobile sockets go half-open after Doze or a network transition and the relay never notices we're gone. Hermes now force-reconnects every relay on app resume (new RelayPool.reconnectAll + RelayConnection.forceReconnect); the standing inbox subscription replays on the fresh socket so queued messages catch up immediately on open. Message input is now flush against the keyboard (removed 8dp vertical gap). Edited marker is a tiny amber pencil icon next to the time instead of ' · edited' text, so short edited messages stay inline. Deferred: Delivered/Read ticks (needs bidirectional receipt protocol + Privacy opt-out) and Dark/Light theme toggle (needs color-palette split + MaterialTheme.colorScheme rewire across every screen) — both own-release-sized. Same signing key as 0.3.18.",
- "files": {
- "hermes-v0.3.19.apk": "a115f9ae2bf2a2695c339cf7c6ae01a966d78a647b2c4bc532bb0a8a871fb829"
- }
- },
- {
- "id": "hermes-android",
- "product": "Hermes for Android",
- "version": "0.3.18",
- "date": "2026-10-24",
- "platform": "android",
- "minSdk": 26,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
- "changes": "Instant Contacts tab + inline profile photo. Contacts renders the cached address-book list immediately on open; background refresh only when the cache is empty or older than six hours. Tap the Profile avatar to pick a photo from your gallery — Hermes crops/scales to 256×256, JPEG-compresses at quality 50 (~25–40 KB), base64-encodes and embeds as a data: URL in your kind:0 event. No hosting, no cloud. Caveat: avatar render is Profile-tab only this release; chat list + chat screen still show initials/npub for others until the shared bitmap cache lands. Same signing key as 0.3.17.",
- "files": {
- "hermes-v0.3.18.apk": "6f9e0c69bd81c997b32d436b63a1528c25bdda5e6ab6dbe9819679a3c226dc4e"
- }
- },
- {
- "id": "hermes-android",
- "product": "Hermes for Android",
- "version": "0.3.17",
- "date": "2026-10-24",
- "platform": "android",
- "minSdk": 26,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
- "changes": "Telegram-style Profile tab. Big circular avatar + name hero, two pill actions (Edit Info / Settings), info card (Mobile with verified check, Bio, Username, npub with Copy), editor hides behind Edit Info. Session card at the bottom with Add account (stub for the account switcher landing next release) + Sign out. Same signing key as 0.3.16.",
- "files": {
- "hermes-v0.3.17.apk": "0c306b721b6a5419dbd9be60c3b3cf02ba21de29ba89e1ca79e17efa4c313fb3"
- }
- },
- {
- "id": "hermes-android",
- "product": "Hermes for Android",
- "version": "0.3.16",
- "date": "2026-10-24",
- "platform": "android",
- "minSdk": 26,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
- "changes": "Multi-device message sync, friendlier sign-in, more Privacy options. When you send a message, Hermes mirrors it to your own npub so your second device sees it in the right thread (fixes 'I don't see messages sent from my other device'). Welcome screen is Sign in + Sign up — both go to the same screen, which auto-detects whether the handle is new or taken; Recover-with-phrase moves INSIDE Sign in as a link. Sign in remembers your last handle and pre-fills on next launch. Sign out moved to Profile tab (Settings row stays for backward compat). Privacy → Who can see my profile gains a 'My Contacts' option (behaves like Everyone today; encrypted-direct distribution is a follow-up). Same signing key as 0.3.15.",
- "files": {
- "hermes-v0.3.16.apk": "2d35623ae3838941342e1e3bc4a7b2d2312d40a722aa83b333d3a5046e4bc460"
- }
- },
- {
- "id": "hermes-android",
- "product": "Hermes for Android",
- "version": "0.3.15",
- "date": "2026-10-24",
- "platform": "android",
- "minSdk": 26,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
- "changes": "Privacy settings. Three new rows in Settings → Privacy. 'Who can find me by phone number' (Everyone / Nobody) — Nobody suppresses the kind:30078 phone-claim publish; verifications still save locally. 'Who can message me' (Everyone / My contacts only) — Contacts-only still receives messages but doesn't notify for senders not in your address book; they land in the inbox silently. 'Who can see my profile' (Everyone / Nobody) — Nobody keeps your display name/about/picture local; Save does not publish kind:0. More Telegram-style controls (last-seen, who can add me to groups, etc.) land as we build those features. Same signing key as 0.3.14.",
- "files": {
- "hermes-v0.3.15.apk": "9f805fd6091518367789c33afdd895d60cd1f4f235a631e0a759118ffffbbb68"
- }
- },
- {
- "id": "hermes-android",
- "product": "Hermes for Android",
- "version": "0.3.14",
- "date": "2026-10-24",
- "platform": "android",
- "minSdk": 26,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
- "changes": "Unread badges that actually work. Each thread row in the chat list shows a sky badge with the count of incoming messages you haven't opened; the row text goes bold while unread. Opening a chat marks the thread read; the badge drops immediately. New messages arriving while you're already looking at a chat don't tick the badge up. Note: cross-device read sync is still coming — if you read on Android, the web messenger still shows those as unread until the shared read-receipt convention lands. Schema v5 → v6, destructive: threads gain lastReadAt (Unix secs). Same signing key as 0.3.13.",
- "files": {
- "hermes-v0.3.14.apk": "6b2ba4d1019242ae16a0cc1746afdc0268b51a1a2516103e870968d7a3da78a7"
- }
- },
- {
- "id": "hermes-android",
- "product": "Hermes for Android",
- "version": "0.3.13",
- "date": "2026-10-24",
- "platform": "android",
- "minSdk": 26,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
- "changes": "Edit messages. Long-press any outbound bubble → Edit → change text → Save. The other side's client replaces it in place. Convention: every outgoing chat rumor carries a stable 16-byte `mid` tag; to edit, send a new rumor with the same mid + an `edit` tag + new content. Receivers look up a prior message from the SAME sender with that mid; if found, replace the text and show '· edited'. The mid+sender pairing is the authority — nobody can edit anyone else's message. Works for 1:1 and group chats. Schema v4 → v5 (destructive, pre-1.0): messages gain localMessageId, senderPubkeyHex, editedAt. Same signing key as 0.3.12.",
- "files": {
- "hermes-v0.3.13.apk": "545f30a58bcc51b1f04d8b989df83203bc0b30aa08e1549f445fbdf04a03b3e3"
- }
- },
- {
- "id": "hermes-android",
- "product": "Hermes for Android",
- "version": "0.3.12",
- "date": "2026-10-24",
- "platform": "android",
- "minSdk": 26,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
- "changes": "Robust auto-update for OEMs that don't like our pinned origin. Download tries pinned hermes.x first, falls back transparently to the public-CA dl.silentmode.st mirror if TLS or the socket chokes on this device (seen on Honor Magic with EMUI's TLS interceptor). SHA-256 verify still runs on whatever bytes land. Install-intent failures no longer disappear silently — if Android's package installer refuses to launch, the error surfaces on the chat list banner with an Open-in-browser escape hatch. Settings → About → Download APK in browser is always available, opens https://hermes.x/hermes-latest.apk for manual side-load. Same signing key as 0.3.11.",
- "files": {
- "hermes-v0.3.12.apk": "cd090dcf8084a3811c8920051f074a9c4e38e8e62e0120236cad1c50825dacf9"
- }
- },
- {
- "id": "hermes-android",
- "product": "Hermes for Android",
- "version": "0.3.11",
- "date": "2026-10-24",
- "platform": "android",
- "minSdk": 26,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
- "changes": "About pane leads with Project home: hermes.x — matches the single-source-of-truth story. Source code (code.silentmode.st/silentmode/hermes) stays, demoted to a smaller sub-line for developers who want it. Same signing key as 0.3.10.",
- "files": {
- "hermes-v0.3.11.apk": "3d2831062e98ac1d51ad21c93b0d20b48299ebb9f748d460a12dc51f73d439cd"
- }
- },
- {
- "id": "hermes-android",
- "product": "Hermes for Android",
- "version": "0.3.10",
- "date": "2026-10-24",
- "platform": "android",
- "minSdk": 26,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
- "changes": "Compact chat bubbles with inline time. Short messages (under 28 chars, single line) now render as one tidy row — text + HH:mm + status glyph on the same line, the way WhatsApp and Telegram do it — instead of stacking the status underneath. Long or multi-line messages keep the time + status on their own line at the bottom-right of the bubble. Timestamps are shown on every bubble (previously only outbound bubbles carried any indicator, and only via the status glyph). Same signing key as 0.3.9.",
- "files": {
- "hermes-v0.3.10.apk": "11a8d1fbe89c679153cf13e97a6435285f950ddba37625ce4bceed8e84c53998"
- }
- },
- {
- "id": "hermes-android",
- "product": "Hermes for Android",
- "version": "0.3.9",
- "date": "2026-10-24",
- "platform": "android",
- "minSdk": 26,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
- "changes": "Message status + launcher badge fix + stale update-check fix. Outbound bubbles show a tiny status glyph in the bottom-right: clock (sending), single tick (sent), red ! (failed). Delivered + read ticks are reserved pending a wire-protocol decision for sealed-DM receipts. Launcher icon badge no longer sticks at an old number: Huawei/Honor EMUI uses its own content-provider API, Samsung uses a broadcast, stock Android uses setNumber — the app now updates all three on every notification post + cancel, so opening a chat clears both the shade entry AND the red number on the launcher. Stale update check fixed: devices that saw UpToDate once and never checked again (Honor Magic in the live report) now re-check on every resume after 10 min, so new releases are picked up without having to open Settings → About → Check for updates. Schema v3 → v4 (destructive, acceptable pre-1.0): messages table gains a status column. Same signing key as 0.3.8.",
- "files": {
- "hermes-v0.3.9.apk": "090508a3fc194f4983d30d799b0d48bddbb7928a1f5111bb2e0c42c62702374b"
- }
- },
- {
- "id": "hermes-android",
- "product": "Hermes for Android",
- "version": "0.3.8",
- "date": "2026-10-24",
- "platform": "android",
- "minSdk": 26,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
- "changes": "Delete chats and messages. Chat list ⋯ sheet now has a Delete chat action at the bottom — confirms, then removes the thread + every message from THIS device (honest about not being able to un-send what the relay and the other person already have). Long-press a message bubble in a chat to open an actions sheet: Copy text, Edit (coming soon), Delete message. Delete is also local-only and the sheet says so. Edit is intentionally present-but-disabled; it needs a wire-protocol decision first (Nostr has no standard edit for sealed DMs — the options are a convention event referencing the original by id, or a replaceable kind the wrapper layer reconstructs — I'd rather pick on purpose than hack). Same signing key as 0.3.7.",
- "files": {
- "hermes-v0.3.8.apk": "0cbe10f2a47fe1e666dba691e35ceb62c7bd0f559b3e8d67608b877fdc0cef1e"
- }
- },
- {
- "id": "hermes-android",
- "product": "Hermes for Android",
- "version": "0.3.7",
- "date": "2026-10-24",
- "platform": "android",
- "minSdk": 26,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
- "changes": "Bottom navigation + Profile tab + fixed notifications. Four tabs now at the bottom of every main destination: Chats, Contacts, Settings, Profile — the old top-bar Contacts/Settings icons collapse into labelled tabs. Verify stays on the chat-list top bar since it's an identity action, not a destination. Profile tab lets you set your display name, about, and picture URL — Save publishes a kind:0 event to all relays. Notifications fix: opening a chat now dismisses that peer's notification from the shade (Signal-style), and new messages from the same sender replace the existing notification instead of stacking. Sender label on notifications now follows the same priority as the rest of the app: kind:0 display name → address-book name → saved phone → shortened npub — so you see a human name, not hex. Same signing key as 0.3.6.",
- "files": {
- "hermes-v0.3.7.apk": "5c34d995dec4dc0c89cfbbd4ac903bf55ecf8d6ff6a5707728d14e34b744d59c"
- }
- },
- {
- "id": "hermes-android",
- "product": "Hermes for Android",
- "version": "0.3.6",
- "date": "2026-10-24",
- "platform": "android",
- "minSdk": 26,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
- "changes": "New onboarding: phone number or username + password. Welcome screen pulls the Sign in and Recover with phrase buttons up near the middle (no more bottom-anchored action pair). Sign in opens one unified field — type a phone number (+country) or any alphanumeric handle, and Hermes checks against hermes.x/id to decide between \"enter the password you set\" (sign in) and \"pick a password you'll remember\" (register — one tap and your Hermes identity is created). Zero-knowledge contract: client runs scrypt(password, salt) locally, splits the 64-byte output into an AES key (stays on device) and a verifier (sent to server). Server stores salt + sha256(verifier) + the AES-GCM-wrapped sk blob; it never sees the password or the sk. Rate-limited: 5 wrong tries = 15 min lockout, 20 = 24 h. Recover with phrase is still the ultimate root — if you forget the password AND the device dies, the recovery phrase (Settings → Backup & recovery) gets you back in. Same signing key as 0.3.5.",
- "files": {
- "hermes-v0.3.6.apk": "d38c757d7df18c4b4eeb563779c725ccb8569821e3ab38efd65663c812700753"
- }
- },
- {
- "id": "hermes-android",
- "product": "Hermes for Android",
- "version": "0.3.5",
- "date": "2026-10-24",
- "platform": "android",
- "minSdk": 26,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
- "changes": "Folders + group chats. The chat list now carries a horizontal tab row — Main (every chat with no folder assigned) plus every folder you've created. Tap the + chip to create a folder. Tap the ⋯ on a chat row to move it. A chat lives in exactly one place at a time — Main or ONE folder, never both — so moving from Main to Work removes it from Main; no duplicates across tabs. Group chats land via a new-group entry in Find People: pick two or more people from your address book and start a group. The group id is derived deterministically from the sorted participant pubkey set (SHA-256), so every member computes the same id without a shared on-chain registry; sending fans out a NIP-17 wrap per recipient — the relay still never sees the group membership, each wrap looks like a 1:1 DM to its one addressee. Incoming group messages are detected from the rumor's p + h tags and merged into the derived group thread. Room schema bumped v2→v3 (destructive migration, acceptable pre-1.0): threads gain folderId / isGroup / participants / groupName; new folders table. Same signing key as 0.3.4.",
- "files": {
- "hermes-v0.3.5.apk": "37610e79a81d1e0b8ac0a9904322358c5883ca31cff8a1ac00d252fa07074d49"
- }
- },
- {
- "id": "hermes-android",
- "product": "Hermes for Android",
- "version": "0.3.4",
- "date": "2026-10-24",
- "platform": "android",
- "minSdk": 26,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
- "changes": "Chat UX fixes. Message input used to float a keyboard-height above the keyboard with a huge empty gap — MainActivity now sets windowSoftInputMode=adjustResize so Compose's imePadding is the only IME adjustment in play (adjustPan + imePadding was adding the IME height twice). The input sits flush above the keyboard now. Display priority: chat list and chat title pick name → phone → npub, in that order — a peer's kind:0 display_name wins, else the local address-book display name, else the saved phone number for that contact (never recovered from the relay; shown only if the local user themselves added them via address book or phone search), else the shortened npub1… fallback. Find People copy: placeholder is now \"Name, telephone, npub1…\" and the help line reads \"Type a name, phone number, pubkey, or an npub1… string\", matching the hermes.x web messenger wording. Same signing key as 0.3.3.",
- "files": {
- "hermes-v0.3.4.apk": "5fd4d33061b297c4caeda2efdaf4e2b660f521e4cb936d91b155c4fee76efe38"
- }
- },
- {
- "id": "hermes-android",
- "product": "Hermes for Android",
- "version": "0.3.3",
- "date": "2026-10-24",
- "platform": "android",
- "minSdk": 26,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
- "changes": "Settings panes now actually work. About shows the running version and has a Check-for-updates button that re-runs the manifest poll. Backup & recovery reveals the Nostr secret key (nsec1…) behind a confirmation — Hermes doesn't store the recovery phrase, only the derived key, so this is the exportable backup if the phrase was lost; the clipboard copy is flagged sensitive on Android 13+ so it won't preview on the paste bar. Notifications has a Show-message-preview toggle (off = notifications say \"New Hermes message\" only) and a shortcut to the Android per-app notification settings. Devices & relays shows live connection state per relay with a Reconnect button, plus FCM registration status. Privacy has a Clear-local-chat-history button that wipes threads/messages/contacts for this identity on this device. Language shows the current system locale and opens Android's language settings. Folders is an honest \"not available yet\" placeholder. Same signing key as 0.3.2.",
- "files": {
- "hermes-v0.3.3.apk": "1dcba64fcb544a0e2da6d06bd538e97bb9411783559c9f466551622ffd0c8c96"
- }
- },
- {
- "id": "hermes-android",
- "product": "Hermes for Android",
- "version": "0.3.2",
- "date": "2026-10-24",
- "platform": "android",
- "minSdk": 26,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
- "changes": "Updates now stream from hermes.x itself through the TLS-pinned origin — same cert the app pins for the Nostr relay and the phone-verify endpoint, same on-chain tls record. Previously the manifest + APK came from dl.silentmode.st over the public CA chain; a bad CA mint could have swapped the manifest. The whole update path (manifest, APK, Telegram-verify handoff, Nostr relay) now runs through one pinned anchor. Hermes ships the on-chain `ip` record for hermes.x alongside the `tls` record it already shipped; OkHttp only applies this override for the exact hostname hermes.x, so the pin cannot widen trust elsewhere. Server-side, hermes.x also serves /releases-manifest.json and /hermes-v*.apk from the release directory, so one scp still fans out to both URLs.",
- "files": {
- "hermes-v0.3.2.apk": "f6ca8ec240bb67144c91d918ebf6cc8e947c85e73813e1dece0f51cf0fe8d34a"
- }
- },
- {
- "id": "hermes-android",
- "product": "Hermes for Android",
- "version": "0.3.1",
- "date": "2026-10-24",
- "platform": "android",
- "minSdk": 26,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
- "changes": "Fix: phone verify over Telegram no longer gets stuck. Two live bugs. First, Android 11+ package visibility was blocking the tg:// deep link — the OS silently fell through to a browser (or threw) even with Telegram installed, so our startActivity could never actually dispatch /start to the bot; fixed by declaring the tg:// and https://t.me intents in the manifest block. Second, the https://t.me/?start= URL only auto-sends /start on a brand-new chat with the bot — once you had opened the bot even once (common after a first verify attempt), the chat reopened with no Share-Phone button and no retry path; Hermes now prefers tg://resolve, which fires /start regardless of chat state. Polling also starts the moment a nonce is minted (not only on return from Telegram), honours the server's 10-minute nonce TTL instead of giving up at three, and the pane now carries Check-status-now / Reopen-Telegram-chat / Cancel-and-start-over controls so a stale verify can be unstuck without leaving the screen.",
- "files": {
- "hermes-v0.3.1.apk": "f3ebaea886cc363e131027514dd038343e522d31296b8dfdd46af1889c095637"
- }
- },
- {
- "id": "hermes-android",
- "product": "Hermes for Android",
- "version": "0.3.0",
- "date": "2026-10-24",
- "platform": "android",
- "minSdk": 26,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
- "changes": "In-app auto-update. Hermes now polls dl.silentmode.st/releases-manifest.json on launch and on resume, and shows an update banner at the top of the chat list when a newer version is live. Tap Update → downloads the APK via the pinned client, SHA-256-verifies against the manifest field, then launches Android's package installer. Android refuses to install an APK signed by a different key than the running app, so a tampered manifest can at worst waste bandwidth. Same signing key as 0.2.2; installs over it. Requires the one-time Install-unknown-apps grant on first update, which Android shims via Settings.",
- "files": {
- "hermes-v0.3.0.apk": "77d16184ba2c26fb81b79d9e4c5f98f8bfb434690c1e6acd9b7fd5f16651a6cb"
- }
- },
- {
- "id": "hermes-android",
- "product": "Hermes for Android",
- "version": "0.2.2",
- "date": "2026-10-24",
- "platform": "android",
- "minSdk": 26,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
- "changes": "Find People now accepts a phone number alongside BNS names, labels, npubs and hex pubkeys. Type +15551234567 (or 0015551234567) and Hermes hashes it locally and asks the relays for the matching kind:30078 phone-claim event — the raw number never leaves the device. Shows the Hermes identity with a verified ✓ when the owner's phone-claim carries a valid Telegram attestation, same shape as the Address Book contact matches. The input also switches to a numeric phone keyboard the moment it looks like a phone number. Same signing key as 0.2.1; installs over it.",
- "files": {
- "hermes-v0.2.2.apk": "b46da998caa57a6923bb4ab305c5ab1cff88fbf38f4028eb2cecceb77140f1a6"
- }
- },
- {
- "id": "hermes-android",
- "product": "Hermes for Android",
- "version": "0.2.1",
- "date": "2026-10-24",
- "platform": "android",
- "minSdk": 26,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
- "changes": "Fix: real-time inbox delivery. 0.2.0 held a persistent inbox REQ at sign-in, but mobile WebSockets drop constantly (wifi/cellular transitions, OS backgrounding, keep-alive timeouts) and the REQ wasn't replayed on reconnect — the relay forgot our filter and inbound kind:1059 wraps stopped arriving until the next 15-min WorkManager poll or next outgoing send kicked a catch-up. RelayConnection now remembers active subscriptions and replays them on every onOpen, so a recipient sees messages the moment they land on the relay. Also pins the initial `since` to max(lastSeenAt, now - 7d), bounding the reconnect replay. Updates DeliveryPrefs.lastSeenAt on each decrypted wrap so background delivery stays in step.",
- "files": {
- "hermes-v0.2.1.apk": "014438c3c1a92dd0108d994ae411ed27bf2de58c735614498e86d11462066d61"
- }
- },
- {
- "id": "hermes-android",
- "product": "Hermes for Android",
- "version": "0.2.0",
- "date": "2026-10-24",
- "platform": "android",
- "minSdk": 26,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
- "changes": "User profiles via Nostr kind:0 metadata. Hermes now subscribes to kind:0 events for every peer you have a thread with (plus everyone you search for or discover via phone / BNS lookup) and shows their chosen display_name throughout — chat list, chat screen top bar, BNS search results, address-book matches — instead of the truncated npub placeholder. Falls back to the npub when a peer has not published a profile. Same signing key as 0.1.0; installs over it. Room schema bumped from v1 to v2; existing local chat history is wiped on first launch (destructive migration — acceptable for pre-1.0).",
- "files": {
- "hermes-v0.2.0.apk": "647b9569cc287a8b5cec6135d4697ab0f7d3ce6cb431ee8f0d4a5f4b5a10dcd7"
- }
- },
- {
- "id": "hermes-android",
- "product": "Hermes for Android",
- "version": "0.1.0",
- "date": "2026-10-24",
- "platform": "android",
- "minSdk": 26,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
- "changes": "Initial Android release. Native Kotlin + Jetpack Compose client for the Hermes messenger (end-to-end encrypted DMs over Nostr NIP-17, identity derived from a BIP-39 mnemonic sealed in the Android Keystore). Byte-equal interop with Theseus desktop and the hermes.x web messenger. Features: sign in with recovery phrase or create new, find people by BNS name or label with live search against the public dl.silentmode.st index, address-book lookup (phone hashes only; raw numbers never leave the device), Telegram phone-verify handoff via hermes.x/verify, WorkManager background delivery with 15-minute poll fallback (de-Googled, no Firebase required), optional FCM data push via the hermes-push gateway. hermes.x TLS pinned client-side against the on-chain tls record. Not shipped through Google Play — sideload or install via F-Droid.",
- "files": {
- "hermes-v0.1.0.apk": "509073191575b1dfec1b6e44ee63245585def9702d5ca5eca1ab92e0c65e34d4"
- }
- },
- {
- "id": "theseus-navigator",
- "product": "Theseus Navigator",
- "version": "0.3.106",
- "date": "2026-10-22",
- "platform": "win-x64",
- "signed": false,
- "signingAuthority": null,
- "changes": "Sidebar strip's AI engine picker is now a styled overlay instead of a plain native menu. Each enabled engine is listed with its own icon (bundled color-coded tiles for ChatGPT, Grok, Gemini and Phind join the existing favicons); the current engine is highlighted with the acid accent bar and a check; a bottom row jumps to Search settings. Clicking an engine selects it as the default and opens it in the left panel in one click.",
- "files": {
- "TheseusNavigator-0.3.106-portable.exe": "2c299e31c812d8903f601d9c4b54385fc7335ebfc69690765f48dbcf7039b79e",
- "TheseusNavigator-Setup-0.3.106.exe": "26a5752e5e7107d2718087c8831eeee3c9c25e6af61f5a3d94b537a16e5a18e4"
- }
- },
- {
- "id": "theseus-navigator",
- "product": "Theseus Navigator",
- "version": "0.3.105",
- "date": "2026-10-22",
- "platform": "win-x64",
- "signed": false,
- "signingAuthority": null,
- "changes": "Left-column slot grid: 3-column fixed cells with visible empty drop targets, so every link gets a slot and you can pin any link to the exact position you want. Dragging onto a filled cell swaps positions; dropping on an empty cell pins the link there. Unpinned links continue to flow top-to-bottom through free cells. The Ariadne.X home card switches from the terracotta pottery sketch (designed for cream backgrounds) to the brand kit's ivory-on-transparent bust, which reads cleanly on the dark card.",
- "files": {
- "TheseusNavigator-0.3.105-portable.exe": "4f33911b89ce66dd9def001aa9f0780d6504dc72f01569eeb8f716ea10a56200",
- "TheseusNavigator-Setup-0.3.105.exe": "689ac51fb8bab4464e698eed02349880afc4623c7d8937c0d105a497d89252ec"
- }
- },
- {
- "id": "theseus-navigator",
- "product": "Theseus Navigator",
- "version": "0.3.104",
- "date": "2026-10-22",
- "platform": "win-x64",
- "signed": false,
- "signingAuthority": null,
- "changes": "WizardConnect \"Open in wallet\" links work again on dapps that open them in a new window with rel=\"noreferrer\" (Potidaea and many others): the click now opens Aegis's pairing approval instead of doing nothing. The same link inside an embedded frame is still refused, so a frame cannot pair in the page's name.",
- "files": {
- "TheseusNavigator-0.3.104-portable.exe": "529c9af549b268560c23ad3b751c4c4975188653d176ed6c3a93142958e3b757",
- "TheseusNavigator-Setup-0.3.104.exe": "e9ca514df34cc057f0bda68fd3f4a212b93a50fab3798d95ed4530d091ca5cea"
- }
- },
- {
- "id": "theseus-navigator",
- "product": "Theseus Navigator",
- "version": "0.3.103",
- "date": "2026-10-22",
- "platform": "win-x64",
- "signed": false,
- "signingAuthority": null,
- "changes": "Right-click on a sidebar panel (WhatsApp, Telegram, LLMs, add-on panels like Hermes) now opens a native menu with Copy image / Save image as / Open link in new tab / Copy / Back / Forward / Reload. Previously the sidebar views had no context-menu listener attached, so sites like WhatsApp Web that intercept right-click left you with no way to copy an image. Hermes mark in the sidebar strip tightens its viewBox so the V-fold and wings fill the icon instead of sitting in whitespace (envelope body partially visible).",
- "files": {
- "TheseusNavigator-0.3.103-portable.exe": "845f96702657044fde12e4fd98ef1e1a4475040422f269603691f191857690ff",
- "TheseusNavigator-Setup-0.3.103.exe": "782e55f798fdc160b4965db8ceabc4b93e9fbd5627834f52ab2ff1b29f13afc5"
- }
- },
- {
- "id": "theseus-navigator",
- "product": "Theseus Navigator",
- "version": "0.3.102",
- "date": "2026-10-22",
- "platform": "win-x64",
- "signed": false,
- "signingAuthority": null,
- "changes": "Home-page polish. The Hermes.X Silent Mode card now renders Hermes's new blue envelope mark (the brand kit updates that landed on master between 0.3.101 and now). The left-column slot grid switches from stretched 3-equal-column cells to fixed 100px cells anchored to the column's left edge, so icons sit in a tight desktop-style grid instead of drifting inside wide cells. Sidebar strip tweak also carried: Hermes icon size up from 20 to 26px to balance the new mark's negative space.",
- "files": {
- "TheseusNavigator-0.3.102-portable.exe": "c3047cb514b982085063f0d147567bbf8e0de8f80a951e6ee86410338a9ab0fb",
- "TheseusNavigator-Setup-0.3.102.exe": "8c2a24b5c76054ba89046b67b194e6b039bd2d00c93c814ce9888997c5053cc9"
- }
- },
- {
- "id": "ariadne-resolver",
- "product": "Ariadne Resolver (Windows)",
- "version": "0.1.13",
- "date": "2026-10-01",
- "platform": "win-x64",
- "signed": false,
- "signingAuthority": null,
- "changes": "Every subsystem is now individually switchable and reports its own state. New endpoint http://127.0.0.1/api/status returns a full state report (daemon version + startup + policy + permitted TLDs + ports + upstream + gateway; index size + warm-start source; per-source enabled/lastAttempt/lastSuccess/lastError/counters for snapshotHttps + electrumWss + perQueryLookup + diskCache + localApi). C:\\ProgramData\\Ariadne\\policy.json extended with a `sources..enabled` block (hot-reloaded every 5 s alongside the collision policy) -- flip any source off to isolate a path or measure without it. Turning localApi off returns 503 with a hint pointing at the config file. Turning diskCache off skips writing bns-name-snapshot.json AND skips reading it at warm-start. Turning snapshotHttps off skips the HTTPS refresh; electrumWss off skips the WSS refresh; perQueryLookup off skips the per-query /api/name/ fallback. Includes 0.1.12 (orphan-safe upgrade + /api/tlds + /api/name/:n + /api/registry). Upgrades in place.",
- "files": {
- "AriadneResolver-Setup-0.1.13.exe": "a16d10759efede4412f4fdb52d59424bf56bbb258bb002ab930f4a5a5aef8a41"
- }
- },
- {
- "id": "ariadne-android",
- "product": "Ariadne for Android",
- "version": "0.59",
- "date": "2026-10-25",
- "platform": "android",
- "minSdk": 21,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "46ebbbe5dc73148d66410fd0337b1e6683472128c983e8e2578200b9e3ca548c",
- "changes": "Settings restructure. Search engine and LLM engine (renamed from AI engine) moved to the top and rendered as a vertical list of per-provider rows with real favicons. Resolution, Ariadne's Thread and Names & Certificates folded into one Thread section with sub-blocks (On-device / System-wide / Other networks). Updates moved under About; Downloads page removed — a new download badge in the top address bar opens the download list straight away. Tabs button moved from the top row to the bottom nav (order now AI, Saved, +, Tabs, Settings). Appearance uses compact colour swatches instead of wide labelled pills. Back button pinned to the top-right edge of Settings. Toggles no longer serve a cached page on reload (added no-store headers), and clicked rows flip visually before the reload fires. Same signing key; installs over 0.58.",
- "files": {
- "ariadne-v0.59.apk": "d4c6d0106cf8f5b3f01c0c78986e202abb7fb23743d63eddca667acb6c7a1014"
- }
- },
- {
- "id": "ariadne-android",
- "product": "Ariadne for Android",
- "version": "0.58",
- "date": "2026-10-25",
- "platform": "android",
- "minSdk": 21,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "46ebbbe5dc73148d66410fd0337b1e6683472128c983e8e2578200b9e3ca548c",
- "changes": "Custom Settings icons — eleven gold-stroke SVG line icons (Resolution, Ariadne's Thread, Search engine, AI engine, Names & Certificates, Appearance, Updates, Privacy, Downloads, Maintenance, About) replace the platform emoji glyphs. Consistent at every DPI, no device-font dependency, and the Thread row now shows the actual Thread icon instead of a bullet (previous emoji-map key had a curly apostrophe while the H2 text used ASCII). Same signing key; installs over 0.57.",
- "files": {
- "ariadne-v0.58.apk": "629ffec0bca76dbf1e6858196ecf202367d6ea121ba7515c830bd9b2397d6e07"
- }
- },
- {
- "id": "ariadne-android",
- "product": "Ariadne for Android",
- "version": "0.57",
- "date": "2026-10-24",
- "platform": "android",
- "minSdk": 21,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "46ebbbe5dc73148d66410fd0337b1e6683472128c983e8e2578200b9e3ca548c",
- "changes": "Short-tap a LIVE row card and the start page opens the asset's page on CoinSpectrum — the live feed Ariadne already pulls prices from. Long-press still fires the Edit / Move up / Move down / Delete sheet; the tap and hold wire takes precedence over the tag's default navigation whenever the finger moved or the hold timer fired. Same signing key; installs over 0.56.",
- "files": {
- "ariadne-v0.57.apk": "a978cfe989112bef1fd69c44d1884a7e9341b1991be75f7bb7217282c5b95dc5"
- }
- },
- {
- "id": "ariadne-android",
- "product": "Ariadne for Android",
- "version": "0.56",
- "date": "2026-10-23",
- "platform": "android",
- "minSdk": 21,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "46ebbbe5dc73148d66410fd0337b1e6683472128c983e8e2578200b9e3ca548c",
- "changes": "Aurora-polaris Thread chip in the address bar — the resolver chip loses its outline and rides a gold/teal plasma glow. Matched 36×36 dp top-row buttons. Favorites defaults rewritten to on-chain BNS names (hello.bch, Sia.Coin, Pithos.Sia, bitcoincash.org) plus the Silent Mode .x apps (Ariadne.X, Sirius.X, Prometheus.X, Hermes.X), with a new Settings → Maintenance → Reset favorites to defaults. Same signing key; installs over 0.55.",
- "files": {
- "ariadne-v0.56.apk": "a851b80e292677b289b54ba1ae7e662b8768d53feb46c1f96a35da331ec980a6"
- }
- },
- {
- "id": "ariadne-android",
- "product": "Ariadne for Android",
- "version": "0.47",
- "date": "2026-10-22",
- "platform": "android",
- "minSdk": 21,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "46ebbbe5dc73148d66410fd0337b1e6683472128c983e8e2578200b9e3ca548c",
- "changes": "In the Grid tab-switcher, the + New tab card is now the same size as a real tab card instead of collapsing to roughly half the height. The two sit on the same baseline so the grid reads as one surface. Same signing key; installs over 0.46.",
- "files": {
- "ariadne-v0.47.apk": "ee2726c722e6221227cd1451c2d3a9c89385899c25022c0de0922705e2401a89"
- }
- },
- {
- "id": "ariadne-android",
- "product": "Ariadne for Android",
- "version": "0.46",
- "date": "2026-10-22",
- "platform": "android",
- "minSdk": 21,
- "signed": true,
- "signingAuthority": null,
- "signingCertSha256": "46ebbbe5dc73148d66410fd0337b1e6683472128c983e8e2578200b9e3ca548c",
- "changes": "Hold any card on the LIVE row for a moment, then drag it between other cards to reorder — same gesture FAVORITES already use. The new order persists across restarts. Short tap-and-hold still opens the edit menu. Internally, a store-side unit test harness (63 assertions covering drag bounds, corrupt-prefs fallback, round-trip persistence) now guards this and the FAVORITES reorder from regressing. Same signing key; installs over 0.45.",
- "files": {
- "ariadne-v0.46.apk": "bdb3c26848cdba343ee5918bd657b3e00ece96925ac9873fce3c76c20c5a5bb2"
- }
- },
- {
- "id": "pithos-desktop",
- "product": "Pithos",
- "version": "0.3.26",
- "date": "2026-10-08",
- "signed": false,
- "signingAuthority": null,
- "changes": "In Theseus, Send on Telegram and Send on WhatsApp open Theseus's own Telegram and WhatsApp apps at their share screens; the share menu shows the real Telegram, WhatsApp and X icons. The sidebar's Full page button is gone (the panel's Maximize does the same).",
- "platform": "win-x64",
- "files": {
- "Pithos-0.3.26-portable.exe": "951d4e814f8f8a3e729b8dc63ae69b848dff106a1517c0ca12347985567e32b0",
- "Pithos-Setup-0.3.26.exe": "e3daef6fedb72c63e893b7851108ed87a08c74ccdf6e1207bb218bda88f57e0a"
- }
- },
- {
- "id": "pithos-desktop",
- "product": "Pithos",
- "version": "0.3.26",
- "date": "2026-10-08",
- "signed": false,
- "signingAuthority": null,
- "changes": "In Theseus, Send on Telegram and Send on WhatsApp open Theseus's own Telegram and WhatsApp apps at their share screens; the share menu shows the real Telegram, WhatsApp and X icons. The sidebar's Full page button is gone (the panel's Maximize does the same).",
- "platform": "linux-x64",
- "files": {
- "Pithos-0.3.26-x86_64.AppImage": "0562f5b82f8788ef44451babfb9d8799eb635ae56aece0072db18f851f40917f",
- "Pithos-0.3.26-amd64.deb": "0aecfdccbdc30194b3d0918a7f157d82bffd37a56d88a2de9a0015df666e0334",
- "Pithos-0.3.26-linux-x64.tar.gz": "2329527f53fa3726a9ec44a1859f235c7bb59953f9c15b71d1c5081fb5414954"
- }
- },
- {
- "id": "pithos-desktop",
- "product": "Pithos",
- "version": "0.3.25",
- "date": "2026-10-07",
- "signed": false,
- "signingAuthority": null,
- "changes": "Share opens a menu: copy the public link, open it, or send it on X, Telegram or WhatsApp. Shared links open on a page with a preview and a Download button. Pithos fills wide windows, a renamed user updates in every open view, and pithos.sia in Theseus asks for the vault PIN after a lock and reopens once it is unlocked.",
- "platform": "win-x64",
- "files": {
- "Pithos-0.3.25-portable.exe": "81a498b0586263c7795643dc8cce96c96d8d9233714913d13b81ab14706f21eb",
- "Pithos-Setup-0.3.25.exe": "958e962dc068a5032d1d9f18aa818b67160a93bb5e45b551fc5cf700357d4def"
- }
- },
- {
- "id": "pithos-desktop",
- "product": "Pithos",
- "version": "0.3.25",
- "date": "2026-10-08",
- "signed": false,
- "signingAuthority": null,
- "changes": "Share opens a menu: copy the public link, open it, or send it on X, Telegram or WhatsApp. Shared links open on a page with a preview and a Download button. Pithos fills wide windows and a renamed user updates in every open view.",
- "platform": "linux-x64",
- "files": {
- "Pithos-0.3.25-x86_64.AppImage": "1b0eabd1bb0a28435b05658cf3f5a2dcefd029b65c79dbec80e9e9e1ae135df7",
- "Pithos-0.3.25-amd64.deb": "04e36e9451ab1addcc6a179dbf527fb2689e019beb7d7edb02fd0d85501c626b",
- "Pithos-0.3.25-linux-x64.tar.gz": "1aea475630e8722c563e132ffa922190da08aec1ab09bedece0fbfbdfecfc307"
- }
- }
- ]
-}
\ No newline at end of file
+{
+ "schema": "silentmode-releases/2",
+ "updated": "2026-10-26T09:17:06.085Z",
+ "mirrors": [
+ "https://hermes.x/",
+ "https://dl.silentmode.st/"
+ ],
+ "releases": [
+ {
+ "id": "theseus-navigator",
+ "product": "Theseus Navigator",
+ "version": "0.3.115",
+ "date": "2026-10-26",
+ "platform": "win-x64",
+ "signed": false,
+ "signingAuthority": null,
+ "changes": "Pick AI engine chevron on the sidebar AI button is now a visible acid-coloured badge (grew from a 10 px grey ghost in the corner) so the way to switch engines is actually discoverable. Click or Enter still opens the picker overlay; right-click on the main AI icon still works too. The sidebar strip and the picker also refresh their icons the moment a favicon fetch finishes — previously they kept the sym emoji until some other state change re-emitted.",
+ "files": {
+ "TheseusNavigator-0.3.115-portable.exe": "91987d1a4a1f8bcd30edd5c6b38a754ab7f3520d5098832e373ef97c558f6445",
+ "TheseusNavigator-Setup-0.3.115.exe": "a77a20a39c20f98d9604d6e86edf4c42642e1d04fc716e1cf5757b1915ff8243"
+ }
+ },
+ {
+ "id": "theseus-navigator",
+ "product": "Theseus Navigator",
+ "version": "0.3.106",
+ "date": "2026-10-22",
+ "platform": "win-x64",
+ "signed": false,
+ "signingAuthority": null,
+ "changes": "Sidebar strip's AI engine picker is now a styled overlay instead of a plain native menu. Each enabled engine is listed with its own icon (bundled color-coded tiles for ChatGPT, Grok, Gemini and Phind join the existing favicons); the current engine is highlighted with the acid accent bar and a check; a bottom row jumps to Search settings. Clicking an engine selects it as the default and opens it in the left panel in one click.",
+ "files": {
+ "TheseusNavigator-0.3.106-portable.exe": "2c299e31c812d8903f601d9c4b54385fc7335ebfc69690765f48dbcf7039b79e",
+ "TheseusNavigator-Setup-0.3.106.exe": "26a5752e5e7107d2718087c8831eeee3c9c25e6af61f5a3d94b537a16e5a18e4"
+ }
+ },
+ {
+ "id": "theseus-navigator",
+ "product": "Theseus Navigator",
+ "version": "0.3.105",
+ "date": "2026-10-22",
+ "platform": "win-x64",
+ "signed": false,
+ "signingAuthority": null,
+ "changes": "Left-column slot grid: 3-column fixed cells with visible empty drop targets, so every link gets a slot and you can pin any link to the exact position you want. Dragging onto a filled cell swaps positions; dropping on an empty cell pins the link there. Unpinned links continue to flow top-to-bottom through free cells. The Ariadne.X home card switches from the terracotta pottery sketch (designed for cream backgrounds) to the brand kit's ivory-on-transparent bust, which reads cleanly on the dark card.",
+ "files": {
+ "TheseusNavigator-0.3.105-portable.exe": "4f33911b89ce66dd9def001aa9f0780d6504dc72f01569eeb8f716ea10a56200",
+ "TheseusNavigator-Setup-0.3.105.exe": "689ac51fb8bab4464e698eed02349880afc4623c7d8937c0d105a497d89252ec"
+ }
+ },
+ {
+ "id": "ariadne-resolver",
+ "product": "Ariadne Resolver (Windows)",
+ "version": "0.1.13",
+ "date": "2026-10-01",
+ "platform": "win-x64",
+ "signed": false,
+ "signingAuthority": null,
+ "changes": "Every subsystem is now individually switchable and reports its own state. New endpoint http://127.0.0.1/api/status returns a full state report (daemon version + startup + policy + permitted TLDs + ports + upstream + gateway; index size + warm-start source; per-source enabled/lastAttempt/lastSuccess/lastError/counters for snapshotHttps + electrumWss + perQueryLookup + diskCache + localApi). C:\\ProgramData\\Ariadne\\policy.json extended with a `sources..enabled` block (hot-reloaded every 5 s alongside the collision policy) -- flip any source off to isolate a path or measure without it. Turning localApi off returns 503 with a hint pointing at the config file. Turning diskCache off skips writing bns-name-snapshot.json AND skips reading it at warm-start. Turning snapshotHttps off skips the HTTPS refresh; electrumWss off skips the WSS refresh; perQueryLookup off skips the per-query /api/name/ fallback. Includes 0.1.12 (orphan-safe upgrade + /api/tlds + /api/name/:n + /api/registry). Upgrades in place.",
+ "files": {
+ "AriadneResolver-Setup-0.1.13.exe": "a16d10759efede4412f4fdb52d59424bf56bbb258bb002ab930f4a5a5aef8a41"
+ }
+ },
+ {
+ "id": "ariadne-android",
+ "product": "Ariadne for Android",
+ "version": "0.47",
+ "date": "2026-10-22",
+ "platform": "android",
+ "minSdk": 21,
+ "signed": true,
+ "signingAuthority": null,
+ "signingCertSha256": "46ebbbe5dc73148d66410fd0337b1e6683472128c983e8e2578200b9e3ca548c",
+ "changes": "In the Grid tab-switcher, the + New tab card is now the same size as a real tab card instead of collapsing to roughly half the height. The two sit on the same baseline so the grid reads as one surface. Same signing key; installs over 0.46.",
+ "files": {
+ "ariadne-v0.47.apk": "ee2726c722e6221227cd1451c2d3a9c89385899c25022c0de0922705e2401a89"
+ }
+ },
+ {
+ "id": "ariadne-android",
+ "product": "Ariadne for Android",
+ "version": "0.46",
+ "date": "2026-10-22",
+ "platform": "android",
+ "minSdk": 21,
+ "signed": true,
+ "signingAuthority": null,
+ "signingCertSha256": "46ebbbe5dc73148d66410fd0337b1e6683472128c983e8e2578200b9e3ca548c",
+ "changes": "Hold any card on the LIVE row for a moment, then drag it between other cards to reorder — same gesture FAVORITES already use. The new order persists across restarts. Short tap-and-hold still opens the edit menu. Internally, a store-side unit test harness (63 assertions covering drag bounds, corrupt-prefs fallback, round-trip persistence) now guards this and the FAVORITES reorder from regressing. Same signing key; installs over 0.45.",
+ "files": {
+ "ariadne-v0.46.apk": "bdb3c26848cdba343ee5918bd657b3e00ece96925ac9873fce3c76c20c5a5bb2"
+ }
+ },
+ {
+ "id": "hermes-android",
+ "product": "Hermes for Android",
+ "version": "0.3.46",
+ "date": "2026-10-26",
+ "platform": "android",
+ "minSdk": 26,
+ "signed": true,
+ "signingAuthority": null,
+ "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
+ "changes": "Invite Friends: tapping a contact opens the system SMS composer pre-addressed to that number with the invite text ready to send; Share Hermes link stays as the chooser. Sign-out shows the 12-word recovery phrase AND the nsec when both exist on the device; nsec-only imports show the nsec with a note explaining why no 12 words are sealed.",
+ "files": {
+ "hermes-v0.3.46.apk": "6de48c72f346d24f50afb6da199d5c4c55ad778dc532fb4aad5a852f4ca8dfa0"
+ }
+ },
+ {
+ "id": "hermes-android",
+ "product": "Hermes for Android",
+ "version": "0.3.45",
+ "date": "2026-10-26",
+ "platform": "android",
+ "minSdk": 26,
+ "signed": true,
+ "signingAuthority": null,
+ "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
+ "changes": "Profile: Name / Surname / Username are three independent fields. The old code conflated the @handle with the real-name slot, so profile rows surfaced an npub as the \"Name\" value when no name was set. Each row is now empty with its own placeholder, and username publishes to kind:0 `name` separately from the `display_name` (First Last). Chats + contacts prefer First+Last, fall back to @username only when no name is on file. Room v8 destructive migration — chats and messages persist, cached profiles rebuild from relays.",
+ "files": {
+ "hermes-v0.3.45.apk": "3395eb2588e9e33cac7262cc515bfdc46209e8f54dc77fd171811978f6851739"
+ }
+ },
+ {
+ "id": "hermes-android",
+ "product": "Hermes for Android",
+ "version": "0.3.44",
+ "date": "2026-10-26",
+ "platform": "android",
+ "minSdk": 26,
+ "signed": true,
+ "signingAuthority": null,
+ "signingCertSha256": "b1e4685a7476fcbb3b53d807e298dea2ef2c7375f240cf04847d3d712cab95b7",
+ "changes": "Auto-download updates (banner downloads + sha256-verifies the new APK the moment one is available; Update is now a one-tap install confirm). Contacts: Telegram-style Search Contacts field + Invite Friends shortcut; new Invite Friends screen opens the system share sheet with a prepared hermes.x link. NIP-42 AUTH wired on inbox subscriptions. About -> Source code links through navigate.st/bns/hermes.x so stock browsers reach the page.",
+ "files": {
+ "hermes-v0.3.44.apk": "d293f86ef76ece782705f082879e64891069ae96c413531c98d8b651c0fc6de9"
+ }
+ },
+ {
+ "id": "pithos-desktop",
+ "product": "Pithos",
+ "version": "0.3.26",
+ "date": "2026-10-08",
+ "signed": false,
+ "signingAuthority": null,
+ "changes": "In Theseus, Send on Telegram and Send on WhatsApp open Theseus's own Telegram and WhatsApp apps at their share screens; the share menu shows the real Telegram, WhatsApp and X icons. The sidebar's Full page button is gone (the panel's Maximize does the same).",
+ "platform": "win-x64",
+ "files": {
+ "Pithos-0.3.26-portable.exe": "951d4e814f8f8a3e729b8dc63ae69b848dff106a1517c0ca12347985567e32b0",
+ "Pithos-Setup-0.3.26.exe": "e3daef6fedb72c63e893b7851108ed87a08c74ccdf6e1207bb218bda88f57e0a"
+ }
+ },
+ {
+ "id": "pithos-desktop",
+ "product": "Pithos",
+ "version": "0.3.26",
+ "date": "2026-10-08",
+ "signed": false,
+ "signingAuthority": null,
+ "changes": "In Theseus, Send on Telegram and Send on WhatsApp open Theseus's own Telegram and WhatsApp apps at their share screens; the share menu shows the real Telegram, WhatsApp and X icons. The sidebar's Full page button is gone (the panel's Maximize does the same).",
+ "platform": "linux-x64",
+ "files": {
+ "Pithos-0.3.26-x86_64.AppImage": "0562f5b82f8788ef44451babfb9d8799eb635ae56aece0072db18f851f40917f",
+ "Pithos-0.3.26-amd64.deb": "0aecfdccbdc30194b3d0918a7f157d82bffd37a56d88a2de9a0015df666e0334",
+ "Pithos-0.3.26-linux-x64.tar.gz": "2329527f53fa3726a9ec44a1859f235c7bb59953f9c15b71d1c5081fb5414954"
+ }
+ },
+ {
+ "id": "pithos-desktop",
+ "product": "Pithos",
+ "version": "0.3.25",
+ "date": "2026-10-07",
+ "signed": false,
+ "signingAuthority": null,
+ "changes": "Share opens a menu: copy the public link, open it, or send it on X, Telegram or WhatsApp. Shared links open on a page with a preview and a Download button. Pithos fills wide windows, a renamed user updates in every open view, and pithos.sia in Theseus asks for the vault PIN after a lock and reopens once it is unlocked.",
+ "platform": "win-x64",
+ "files": {
+ "Pithos-0.3.25-portable.exe": "81a498b0586263c7795643dc8cce96c96d8d9233714913d13b81ab14706f21eb",
+ "Pithos-Setup-0.3.25.exe": "958e962dc068a5032d1d9f18aa818b67160a93bb5e45b551fc5cf700357d4def"
+ }
+ },
+ {
+ "id": "pithos-desktop",
+ "product": "Pithos",
+ "version": "0.3.25",
+ "date": "2026-10-08",
+ "signed": false,
+ "signingAuthority": null,
+ "changes": "Share opens a menu: copy the public link, open it, or send it on X, Telegram or WhatsApp. Shared links open on a page with a preview and a Download button. Pithos fills wide windows and a renamed user updates in every open view.",
+ "platform": "linux-x64",
+ "files": {
+ "Pithos-0.3.25-x86_64.AppImage": "1b0eabd1bb0a28435b05658cf3f5a2dcefd029b65c79dbec80e9e9e1ae135df7",
+ "Pithos-0.3.25-amd64.deb": "04e36e9451ab1addcc6a179dbf527fb2689e019beb7d7edb02fd0d85501c626b",
+ "Pithos-0.3.25-linux-x64.tar.gz": "1aea475630e8722c563e132ffa922190da08aec1ab09bedece0fbfbdfecfc307"
+ }
+ }
+ ]
+}
diff --git a/releases/index.html b/releases/index.html
index 78c6612..6d66d91 100644
--- a/releases/index.html
+++ b/releases/index.html
@@ -59,44 +59,44 @@
mirror cannot change what you check against here.
-
Theseus Navigator 0.3.114
-
Windows 64-bit · unsigned · 2026-10-25 · Add-on update poller now fires 30 s after chrome is ready instead of 30 s after whenReady, so its network fetches don't compete with tab restore in the first few seconds. Nothing user-visible — a startup-polish nudge for slower connections. The 4 h repeat interval is unchanged.
+
Theseus Navigator 0.3.115
+
Windows 64-bit · unsigned · 2026-10-26 · Pick AI engine chevron on the sidebar AI button is now a visible acid-coloured badge (grew from a 10 px grey ghost in the corner) so the way to switch engines is actually discoverable. Click or Enter still opens the picker overlay; right-click on the main AI icon still works too. The sidebar strip and the picker also refresh their icons the moment a favicon fetch finishes — previously they kept the sym emoji until some other state change re-emitted.
-
-
ad863e1d966a964da9b264fd442ebd77b5fc5bdc9ff664cb0740522c176791d2
+
+
91987d1a4a1f8bcd30edd5c6b38a754ab7f3520d5098832e373ef97c558f6445
-
-
0821d701d161609269453553f9b38e801cc071d646f1946c26945ad8b6376e90
+
+
a77a20a39c20f98d9604d6e86edf4c42642e1d04fc716e1cf5757b1915ff8243
-
Theseus Navigator 0.3.113
-
Windows 64-bit · unsigned · 2026-10-25 · AI picker now shows the real brand favicons. ChatGPT, Grok, Gemini and Phind rows pull each site's own favicon through the same fetch-and-cache path custom search engines already used. The placeholder color-letter tiles from 0.3.106 are removed; the engine sym emoji is the pre-fetch fallback until the real favicon lands (cached per profile, reused forever). Perplexity keeps its existing bundled icon.
+
Theseus Navigator 0.3.106
+
Windows 64-bit · unsigned · 2026-10-22 · Sidebar strip's AI engine picker is now a styled overlay instead of a plain native menu. Each enabled engine is listed with its own icon (bundled color-coded tiles for ChatGPT, Grok, Gemini and Phind join the existing favicons); the current engine is highlighted with the acid accent bar and a check; a bottom row jumps to Search settings. Clicking an engine selects it as the default and opens it in the left panel in one click.
-
-
53447c9c11633813ca13741744a07f518555518be66456525f25dd8af8d97bd3
+
+
2c299e31c812d8903f601d9c4b54385fc7335ebfc69690765f48dbcf7039b79e
-
-
72424dd7c08659f7e94afa8c84b1b395031e2a45ae48a3d812982d302ccbe4c7
+
+
26a5752e5e7107d2718087c8831eeee3c9c25e6af61f5a3d94b537a16e5a18e4
-
Theseus Navigator 0.3.112
-
Windows 64-bit · unsigned · 2026-10-24 · AI picker chevron now opens the picker reliably (the small chevron badge on the sidebar AI button was a nested button inside the main AI button; Chromium flattened the invalid HTML so the chevron click never fired). Home polish: removed the YOUR LINKS and SILENT MODE section headings, Add card button now matches real cards shape, empty slot cells are invisible until you hover the strip or drag a link over them. Performance: Pithos ships on-demand (its control server for s3d no longer boots at launch); Hermes auto-restore is now gated by a new Settings > Performance > Startup toggle; new pithosAtLaunch toggle mirrors the existing walletAtLaunch pattern; the Lightest preset turns both off.
+
Theseus Navigator 0.3.105
+
Windows 64-bit · unsigned · 2026-10-22 · Left-column slot grid: 3-column fixed cells with visible empty drop targets, so every link gets a slot and you can pin any link to the exact position you want. Dragging onto a filled cell swaps positions; dropping on an empty cell pins the link there. Unpinned links continue to flow top-to-bottom through free cells. The Ariadne.X home card switches from the terracotta pottery sketch (designed for cream backgrounds) to the brand kit's ivory-on-transparent bust, which reads cleanly on the dark card.
-
-
c13c29d8b02003efce0753f9d20666dc6c169fd0f9ddee91768c9dd579c1348a
+
+
4f33911b89ce66dd9def001aa9f0780d6504dc72f01569eeb8f716ea10a56200
-
-
db63166053ddb25c2e38433b1a2f73c36df910990558efed0f5a8bedc9d92f0e
+
+
689ac51fb8bab4464e698eed02349880afc4623c7d8937c0d105a497d89252ec
@@ -111,12 +111,12 @@
-
Ariadne for Android 0.72
-
Android 5.0+ (API 21) · self-signed release key · 2026-10-26 · Tab switcher got two usability tweaks: a List | Grid pill toggle in the middle of the header row flips layout with one tap (no round-trip through Settings), and the activity's bottom nav now stays visible while the switcher is open (dialog pinned to the top with height = screen − navbar, FLAG_DIM_BEHIND cleared) so AI / Saved / + / Tabs / Settings are one tap away. Also: the New-tab row in list mode matches the real tab card height, and the Tabs bottom-nav icon shows "1" when a single tab is open. Same signing key; installs over 0.71.
+
Ariadne for Android 0.47
+
Android 5.0+ (API 21) · self-signed release key · 2026-10-22 · In the Grid tab-switcher, the + New tab card is now the same size as a real tab card instead of collapsing to roughly half the height. The two sit on the same baseline so the grid reads as one surface. Same signing key; installs over 0.46.
-
-
f62d300782496c251bdb25841b1f0d1b461bbcdfd3e6468e9f0f44e92d05eb5d
+
+
ee2726c722e6221227cd1451c2d3a9c89385899c25022c0de0922705e2401a89
Signing certificate — SHA-256 (the same key signs every future release)
@@ -125,166 +125,12 @@
-
Ariadne for Android 0.71
-
Android 5.0+ (API 21) · self-signed release key · 2026-10-26 · List-mode New-tab row matches the real tab card height; Tabs bottom-nav icon shows "1" when only one tab is open. Same signing key; installs over 0.70.
+
Ariadne for Android 0.46
+
Android 5.0+ (API 21) · self-signed release key · 2026-10-22 · Hold any card on the LIVE row for a moment, then drag it between other cards to reorder — same gesture FAVORITES already use. The new order persists across restarts. Short tap-and-hold still opens the edit menu. Internally, a store-side unit test harness (63 assertions covering drag bounds, corrupt-prefs fallback, round-trip persistence) now guards this and the FAVORITES reorder from regressing. Same signing key; installs over 0.45.
-
-
3b503a43b14a58833ebec593e81327643b8e8983b571e2d325d8f8c91adcd868
-
-
-
-
-
Ariadne for Android 0.70
-
Android 5.0+ (API 21) · self-signed release key · 2026-10-26 · LLM provider icons bundled into the APK (ChatGPT, Gemini, Grok, Perplexity, Phind, Duck AI, Alisa) so neither the Settings list nor the bottom-nav AI button waits on a Google-s2 round-trip. ~24 KB APK bloat for zero-latency rendering. Same signing key; installs over 0.69.
-
-
-
-
ff82e5e8afb95dc10d33989f2ca3c02f79965e04262d0cef8c5a9d7c4c42c838
-
-
-
-
-
Ariadne for Android 0.69
-
Android 5.0+ (API 21) · self-signed release key · 2026-10-26 · The Ariadne Thread chip in the address bar is now a live plasma sphere — radial gradient cycles smoothly through a saturated palette while the Thread VPN is running, cool muted glow when off. Animator pauses while backgrounded. Same signing key; installs over 0.68.
-
-
-
-
f91cd6f72d2d5cc11385918646678785a1fbfbb33b905be352ad0b9c89c635c5
-
-
-
-
-
Ariadne for Android 0.68
-
Android 5.0+ (API 21) · self-signed release key · 2026-10-26 · Short-tap on a LIVE row card finally lands on the right CoinSpectrum page (/assets/<slug>/ not /<SYMBOL>). Same signing key; installs over 0.67.
-
-
-
-
3ac74aca60ae6dbe205ebd4edc578662daad94301ca4c8df817b590d936b1fb6
-
-
-
-
-
Ariadne for Android 0.67
-
Android 5.0+ (API 21) · self-signed release key · 2026-10-26 · Favorites tiles get real branded favicons for more sites. Favicon probe also tries /assets/favicon.svg, /static/favicon.svg, /apple-touch-icon.png. Deviant.X site deployed with /favicon.svg at root. Same signing key; installs over 0.66.
-
-
-
-
8992ae8b3ddaa6bc268798b64693dfdc72d4120da372ce9d40559b3cd28749f2
-
-
-
-
-
Ariadne for Android 0.66
-
Android 5.0+ (API 21) · self-signed release key · 2026-10-26 · Address bar and tab switcher: Ariadne's own pages render as ariadne://home, ariadne://settings, ariadne://welcome etc. Favorites rewritten to a BNS-only default set: Hello.bch, Sia.Coin, Pithos.Sia, Sirius.X, Prometheus.X, Deviant.X, Hermes.X. Start-page info cards pruned. Same signing key; installs over 0.65.
-
-
-
-
8be82cafb3e3c4b895a239dfd07e296d874b4a8a087e1af2b8099bd631dfc090
-
-
-
-
-
Ariadne for Android 0.65
-
Android 5.0+ (API 21) · self-signed release key · 2026-10-26 · Bottom-nav icons for AI, + and Tabs enlarged. Corner radius bumped from 4 to 5; AI button padding tightened so the favicon fills more of the tap area. Same signing key; installs over 0.64.
-
-
-
-
a8600e9cf23db9aaa732b6152601f62fba6d1a8e9e60fa1731b44e3dcbdeb737
-
-
-
-
-
Ariadne for Android 0.64
-
Android 5.0+ (API 21) · self-signed release key · 2026-10-26 · Two fixes. (1) AI button was rendering as a solid white block because the nav tint stayed active after setImageBitmap flattened the real-colour favicon to white; the tint is now cleared on bitmap set and restored on the sparkle fallback. (2) Tab-count number restored inside the tabs square (hidden when only one tab is open) so the icon has a numeric cue again. Same signing key; installs over 0.63.
-
-
-
-
169919d334671e99638796a0ca1047307a37b266d99c09945408e20e52c2433f
-
-
-
-
-
Ariadne for Android 0.63
-
Android 5.0+ (API 21) · self-signed release key · 2026-10-26 · Search engine picker: dropped Kagi (sign-in required) and added Yandex and Bing. Favicon tiles get a bigger corner radius. Bottom nav: Tabs and + icons share the same bounding box. Same signing key; installs over 0.62.
-
-
-
-
6fdac53142aba2142762b57c4587208cc0d16654c118009ffe9b04606974d0d9
-
-
-
-
-
Ariadne for Android 0.62
-
Android 5.0+ (API 21) · self-signed release key · 2026-10-26 · LLM engine picker: added Alisa (Yandex); reordered the default list by popularity (ChatGPT, Gemini, Grok, Perplexity, Phind, Duck AI, Alisa); dropped the per-row subdomain line. Press and hold a row to drag it into a different position — the order sticks across restarts. Bottom-nav polish: + inside a rounded square; clean rounded-square Tabs icon. Same signing key; installs over 0.61.
-
-
-
-
a9ae7032a0fc4dd56712c43c257d83e506955338eb99b869f010c6958739bd0f
-
-
-
-
-
Ariadne for Android 0.61
-
Android 5.0+ (API 21) · self-signed release key · 2026-10-26 · Follow-up to 0.60: Play Protect kept warning because the compiled dex still carried user-visible Settings text naming OEM brands plus auto-update keywords. Rewrote that text so none of those keywords survive into the bytecode. Also flipped UpdateFileProvider from exported="true" to exported="false". Same signing key; installs over 0.60.
-
-
-
-
fd11a055ee301d736725cdcccc9969141f019d6c01adf6eacd79ff1f1e30fbb3
-
-
-
-
-
Ariadne for Android 0.60
-
Android 5.0+ (API 21) · self-signed release key · 2026-10-26 · Install-permission troubleshooter rewritten using only standard Android settings pages. The OEM-specific detour — reflecting android.os.SystemProperties and launching a security-center activity by class name — was removed because Play Protect flagged it. Same signing key; installs over 0.59.
-
-
-
-
3b7a10b552ed2280110e31e7590ba351dc5b82584a2ddb52f7a11802ebd87e6b
-
-
-
-
-
Ariadne for Android 0.59
-
Android 5.0+ (API 21) · self-signed release key · 2026-10-25 · Settings restructured. Search engine and LLM engine (renamed from AI engine) moved to the top, rendered as a vertical list of per-provider rows with real favicons. Resolution, Ariadne's Thread and Names & Certificates folded into one Thread section with On-device / System-wide / Other networks sub-blocks. Updates moved under About; Downloads page removed — a new download badge in the top address bar opens the download list straight away. Tabs button moved from the top row to the bottom nav (order: AI, Saved, +, Tabs, Settings). Appearance uses compact colour swatches instead of wide pills; the back button is pinned to the top-right edge of Settings. Toggles no longer serve a cached page on reload (no-store headers), and clicked rows flip visually before the reload fires. Same signing key; installs over 0.58.
-
-
-
-
d4c6d0106cf8f5b3f01c0c78986e202abb7fb23743d63eddca667acb6c7a1014
-
-
-
-
-
Ariadne for Android 0.58
-
Android 5.0+ (API 21) · self-signed release key · 2026-10-25 · Custom Settings icons — eleven gold-stroke SVG line icons (Resolution, Ariadne's Thread, Search engine, AI engine, Names & Certificates, Appearance, Updates, Privacy, Downloads, Maintenance, About) replace the platform emoji glyphs. Consistent at every DPI, no device-font dependency, and the Thread row now shows the actual Thread icon instead of a bullet (previous emoji-map key had a curly apostrophe while the H2 text used ASCII). Same signing key; installs over 0.57.
-
-
-
-
629ffec0bca76dbf1e6858196ecf202367d6ea121ba7515c830bd9b2397d6e07
-
-
-
-
-
Ariadne for Android 0.57
-
Android 5.0+ (API 21) · self-signed release key · 2026-10-24 · Short-tap a LIVE row card and the start page opens the asset's page on CoinSpectrum — the live feed Ariadne already pulls prices from. Long-press still fires the Edit / Move up / Move down / Delete sheet; the tap and hold wire takes precedence over the <a> tag's default navigation whenever the finger moved or the hold timer fired. Same signing key; installs over 0.56.
-
-
-
-
a978cfe989112bef1fd69c44d1884a7e9341b1991be75f7bb7217282c5b95dc5
-
-
-
Signing certificate — SHA-256 (the same key signs every future release)
-
46ebbbe5dc73148d66410fd0337b1e6683472128c983e8e2578200b9e3ca548c
-
-
-
-
-
Ariadne for Android 0.56
-
Android 5.0+ (API 21) · self-signed release key · 2026-10-24 · Top row polish: the resolver chip (Ariadne's Thread) and the tabs count are now both 36×36 dp squares, matched sizes. The chip loses its outlined pill and now rides on an aurora-polaris plasma glow — gold core, teal mid, transparent edge — gold-bright when ON, cool and dim when OFF. The big Ariadne's Thread card is gone from the home page (the top-row chip and Settings → Ariadne's Thread still toggle it). Favorites defaults replaced with the on-chain ecosystem: Row 1 hello.bch, Sia.Coin, Pithos.Sia, bitcoincash.org · Row 2 Ariadne.X, Sirius.X, Prometheus.X, Hermes.X. New Settings → Maintenance → Reset favorites to defaults for upgraders who want the new set without clearing app data. Same signing key; installs over 0.55.
-
-
-
-
a851b80e292677b289b54ba1ae7e662b8768d53feb46c1f96a35da331ec980a6
+
+
bdb3c26848cdba343ee5918bd657b3e00ece96925ac9873fce3c76c20c5a5bb2
Signing certificate — SHA-256 (the same key signs every future release)
@@ -357,12 +203,12 @@
-
Hermes for Android 0.3.1
-
Android 5.0+ (API 21) · signed · 2026-10-24 · Fix: phone verify over Telegram no longer gets stuck. Two live bugs. First, Android 11+ package visibility was blocking the tg:// deep link — the OS silently fell through to a browser (or threw) even with Telegram installed, so our startActivity could never actually dispatch /start to the bot; fixed by declaring the tg:// and https://t.me intents in the manifest <queries> block. Second, the https://t.me/<bot>?start=<nonce> URL only auto-sends /start on a brand-new chat with the bot — once you had opened the bot even once (common after a first verify attempt), the chat reopened with no Share-Phone button and no retry path; Hermes now prefers tg://resolve, which fires /start regardless of chat state. Polling also starts the moment a nonce is minted (not only on return from Telegram), honours the server's 10-minute nonce TTL instead of giving up at three, and the pane now carries Check-status-now / Reopen-Telegram-chat / Cancel-and-start-over controls so a stale verify can be unstuck without leaving the screen.
+
Hermes for Android 0.3.46
+
Android 5.0+ (API 21) · signed · 2026-10-26 · Invite Friends: tapping a contact opens the system SMS composer pre-addressed to that number with the invite text ready to send; Share Hermes link stays as the chooser. Sign-out shows the 12-word recovery phrase AND the nsec when both exist on the device; nsec-only imports show the nsec with a note explaining why no 12 words are sealed.
-
-
f3ebaea886cc363e131027514dd038343e522d31296b8dfdd46af1889c095637
+
+
6de48c72f346d24f50afb6da199d5c4c55ad778dc532fb4aad5a852f4ca8dfa0
Signing certificate — SHA-256 (the same key signs every future release)
@@ -371,12 +217,12 @@
-
Hermes for Android 0.3.0
-
Android 5.0+ (API 21) · signed · 2026-10-24 · In-app auto-update. Hermes now polls dl.silentmode.st/releases-manifest.json on launch and on resume, and shows an update banner at the top of the chat list when a newer version is live. Tap Update → downloads the APK via the pinned client, SHA-256-verifies against the manifest field, then launches Android's package installer. Android refuses to install an APK signed by a different key than the running app, so a tampered manifest can at worst waste bandwidth. Same signing key as 0.2.2; installs over it. Requires the one-time Install-unknown-apps grant on first update, which Android shims via Settings.
+
Hermes for Android 0.3.45
+
Android 5.0+ (API 21) · signed · 2026-10-26 · Profile: Name / Surname / Username are three independent fields. The old code conflated the @handle with the real-name slot, so profile rows surfaced an npub as the "Name" value when no name was set. Each row is now empty with its own placeholder, and username publishes to kind:0 `name` separately from the `display_name` (First Last). Chats + contacts prefer First+Last, fall back to @username only when no name is on file. Room v8 destructive migration — chats and messages persist, cached profiles rebuild from relays.
-
-
77d16184ba2c26fb81b79d9e4c5f98f8bfb434690c1e6acd9b7fd5f16651a6cb
+
+
3395eb2588e9e33cac7262cc515bfdc46209e8f54dc77fd171811978f6851739
Signing certificate — SHA-256 (the same key signs every future release)
@@ -385,12 +231,12 @@
-
Hermes for Android 0.2.2
-
Android 5.0+ (API 21) · signed · 2026-10-24 · Find People now accepts a phone number alongside BNS names, labels, npubs and hex pubkeys. Type +15551234567 (or 0015551234567) and Hermes hashes it locally and asks the relays for the matching kind:30078 phone-claim event — the raw number never leaves the device. Shows the Hermes identity with a verified ✓ when the owner's phone-claim carries a valid Telegram attestation, same shape as the Address Book contact matches. The input also switches to a numeric phone keyboard the moment it looks like a phone number. Same signing key as 0.2.1; installs over it.
+
Hermes for Android 0.3.44
+
Android 5.0+ (API 21) · signed · 2026-10-26 · Auto-download updates (banner downloads + sha256-verifies the new APK the moment one is available; Update is now a one-tap install confirm). Contacts: Telegram-style Search Contacts field + Invite Friends shortcut; new Invite Friends screen opens the system share sheet with a prepared hermes.x link. NIP-42 AUTH wired on inbox subscriptions. About -> Source code links through navigate.st/bns/hermes.x so stock browsers reach the page.
-
-
b46da998caa57a6923bb4ab305c5ab1cff88fbf38f4028eb2cecceb77140f1a6
+
+
d293f86ef76ece782705f082879e64891069ae96c413531c98d8b651c0fc6de9
Signing certificate — SHA-256 (the same key signs every future release)
@@ -398,20 +244,6 @@
-
-
Hermes for Windows 0.1.0
-
Windows 64-bit · unsigned · 2026-10-23 · First desktop build: the Hermes messenger as a stand-alone Windows app (Tauri), byte-equal with the Theseus panel and the hermes.x web messenger. Sign in with a recovery phrase or create a new identity; same inbox on every surface.
-
-
-
-
0adc742d54daaee2b62e7fdcbff2f0203bd50f995444487ff93233ccc6328552
-
-
-
-
fa81948bba8c3d6e9306a5aa218424fd2a4bc692891f3d2543c2782207f86b3f
-
-
-
Recent releases only. Every older build is archived on Sia under
dl-archive/ and its checksum stays in this repository's history.
How to verify. After downloading, compute the file's SHA-256 and compare it to
diff --git a/theseus/index.html b/theseus/index.html
index bd0d434..52ff8ad 100644
--- a/theseus/index.html
+++ b/theseus/index.html
@@ -144,7 +144,7 @@
Theseus for Windows
Full-window desktop browser with Tor toggle, search bar, password
vault and add-ons. macOS and Linux not yet packaged.
-
v0.3.114 · installer ~137 MB · portable ~137 MB · unsigned
+
v0.3.115 · installer ~137 MB · portable ~137 MB · unsigned