Six ways to answer without typing
Sometimes the whole answer is a thumb. You read a line, you agree, and typing "ok" adds nothing to the conversation except a notification. Both chats now take reactions: six of them, the same six everywhere, and they work the same way in a private thread as they do in a room.
The set is fixed on purpose. An open field would let any client store arbitrary text under the name "reaction", which is unmoderatable and unrenderable, and it would let one popular line grow without limit. Six is also small enough that the row under a message stays a row rather than a second message. Tapping a chip that already carries your name takes your reaction back.
Edits and deletes reach the rooms
Private messages got editing and deleting earlier today. The rooms did not, which was an odd split once you noticed it, so they have it now and it works the same way. A delete leaves a tombstone: the line keeps its place in the history, the text stops being served, and everyone sees that something was removed rather than finding a hole where a conversation used to be. That matters more in a public room than in a private thread, because other people have quoted, answered and now reacted to the line.
An edit keeps the original text once, readable only by a moderator handling a report, and prints "edited" on every reader's copy from then on. A line you already answered is not allowed to change behind you quietly.
None of this was possible before today for a simple reason: a chat line had no identity. The server wrote it to the database and put it on the wire at the same moment, and the id the database generated never reached anybody. Nothing could be said about a line because there was nothing to point at. The id is now minted before the line goes out, which costs nothing and opens all of it at once.
One widget, one place for the exit
A smaller thing, reported while the rest was being built. The chat widget has three sections behind three icons, and each one has a bigger version on its own page. The feed's link to that page has always sat in the widget header. Private messages drew theirs at the very bottom of the view, which in a 300 pixel panel means below the conversation and below the composer, out of sight behind the scroll. The rooms had no link at all, because until yesterday there was no page to link to.
All three now put it in the same slot, in the header, and the one for messages carries the conversation you are reading so the big view opens that thread instead of the list.
Who left it, and a bell that counts people
Two follow-ups landed a few hours later, both from the same question: fine, but who reacted?
The chips only ever showed a count. Tap the small plus and the panel that opens now has two halves. On top, the people, grouped by which emoji they left, each name linking to their page. Underneath, the six buttons as before. If you are signed out you cannot leave a reaction, so there is no plus for you, and tapping a chip opens the list instead of doing nothing, which is what it did until today.
The names are fetched when you open the panel and not before. A room's history page would otherwise carry a name, a handle and an avatar for every reactor on every line, almost all of which nobody will ever look at. If the request fails the panel says so rather than showing an empty list: "nobody reacted" and "we could not ask" are different answers and the count sitting next to it already says somebody did.
The bell changed too. It was capped at one ring per message per day, which sounded reasonable and was wrong: the second person to react was silent, and the third, and the fourth. The cap exists to stop repetition, and a different person is not a repetition. Their name is the whole content of the sentence. So it is now one ring per message per person per day. Tapping your own reaction off and back on, which is the shape that actually needs stopping, still rings once.