Stickers and emoji in the composer (Android), and a written queue
Stickers send, arrive, file into the right thread - group messages under the group, not scattered across one thread per member - and draw bare. No bubble: the kit draws none, and a glyph inside a grey rounded rectangle reads as a broken image. The timestamp and avatar stay, because that is the line saying who and when. Two controls, not one, because they are two different things. An emoji goes INTO the draft and is indistinguishable from any other character once sent - nothing on the receiving end needs to understand it. A sticker is its own message kind that is never rendered as text. Behind one button they would imply they behave the same way. Hence also: the emoji panel stays open on tap, since picking three in a row should put three characters in the box, while a sticker sends and closes because it IS the message. The emoji set is a short curated list, said plainly in the code: a full picker is search, skin tones, categories and recents - a real feature the system keyboard already ships. This is what a thumb can reach. docs/ROADMAP.md now holds the queue, including the security and privacy work. Written down because this project has already lost a finished feature to a parked branch. Two items there are real and current: Android spends a one-time prekey on EVERY message via fetchKeys, silently costing initial forward secrecy once the pool drains - iOS fixed this and Android has the unused listDevices sitting next to it - and a passphrase IS the account, with no second factor and no recovery. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
3b195c730c
commit
85d6825fdf
@@ -313,6 +313,11 @@ class Conversations(
|
||||
* could read signalling would learn both parties' addresses even on a call
|
||||
* it never carries.
|
||||
*/
|
||||
/** A sticker to one person, or to a group when `groupId` is set. */
|
||||
fun sendSticker(toUserId: Long, pack: String, id: String,
|
||||
groupId: String? = null, messageId: String? = null): Sent =
|
||||
sendPlaintext(toUserId, Content.sticker(pack, id, groupId, messageId))
|
||||
|
||||
fun sendCallSignal(toUserId: Long, signal: Content.CallSignal): Sent =
|
||||
sendPlaintext(toUserId, Content.callSignal(signal))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user