# Hermes Android 3.2.5 Stable release, base build **3033** (ABI splits `30331` / `30332` / `30333`). Every split upgrades the highest previously distributed split, 3.2.4's `30323`, so it installs in place over 3.2.4. The production package `com.hermesagent.hermes_android` and signing certificate are unchanged; install over the existing app rather than uninstalling. This release covers everything since **3.2.4**. ## Chat pins sync with Hermes Desktop (#268) Until now, Android pins lived only on the phone. They never reached Hermes Desktop, and Desktop pins showed on the phone only as a faint marker. Android now uses the server's `pinned` flag, the same one Desktop reads and writes, so a pin follows the chat to every client of that host. - **Pin and Unpin** in a chat's menu save with `PATCH /api/sessions/{id}` carrying only `pinned`. The app confirms the change by reading that chat back from the server. If the save fails, the row is left as it was and **Retry** is offered. - **Pins made elsewhere** (Desktop, another phone) show up on the next list refresh. The server already includes every pinned chat on each list page, so old pinned chats appear without extra requests. - **No flicker back:** a list read that started before your pin or unpin completed cannot undo it. Reads that start afterwards are authoritative, so later changes from Desktop still come through. - **Pinned section:** Workspace Chats and the classic chat list both show pinned chats in a **Pinned** section ahead of the date groups. The current search and filter still apply. - **Archive:** archiving a pinned chat clears its pin in the same request, as Desktop does. If the chat was pinned somewhere else after this phone last loaded it, the server's reply shows that, and the app unpins it as part of the archive, so it never stays in Desktop's Pinned section. Archived chats and unsaved drafts do not offer Pin. - **Search results:** the server search does not report pins, so each hit takes its pin from the matching chat in the list. A hit whose pin state isn't known offers neither Pin nor Unpin rather than guessing. ### Moving existing pins Pins that 3.2.4 and earlier stored only on this device move to the server the first time Chats opens after updating. A pin is removed from the device only once its outcome is settled: the server confirmed it (or already had it), the server reported that chat as not found, or the chat is archived or hidden. A network error, an unconfirmed save or an older server keeps the pin on the device, and the move is retried on the next open. ### Older Hermes servers Hermes servers from before synced pins (August 2026) don't report a pin state, so the app hides Pin on them instead of offering an action that would fail. Pins saved on this phone by earlier versions stay on the device and move to the server once Hermes is updated. Archiving works as before: the app sends `pinned` only to servers that report it. ## Verification - `flutter analyze --no-pub --fatal-infos`: no issues. - `flutter test --no-pub`: the full suite passed on the feature commit, with no failures or skipped tests. New coverage includes the client PATCH/read-back contract, revision fencing for compressed chats, both Chats screens, and every legacy-pin migration outcome. - The tag workflow builds, verifies and publishes the signed APKs, checksums and source/relink bundle. _Built with AI assistance (Hermes Agent) and reviewed before release._