Files
amethyst/commons
Claude 16bf18466d feat(cordn): show what you sent, and anchor the room at the bottom
Sending in a cordn room left no trace in the room that sent it. Your own
traffic comes back recognised by cursor and reported as Delivery.Echo,
whose branch adds nothing, and no send path added anything either — so a
message, a reaction, an edit, a deletion, a pin, an attachment and a
voice note all appeared to do nothing at all. Deleting your own message
looked like a no-op until somebody else's traffic refreshed the fold.

- send/post now return CordnDeliveredMessage rather than CordnEnvelope,
  carrying the cursor the coordinator assigned. Guessing one would put
  your own message in the wrong place until the echo corrected it, since
  CordnGroupChatroom.ORDER sorts on it.
- trySend adds the result to the room. add() is keyed on the envelope id
  and idempotent, so a later re-sync that does hand the message back
  cannot double it.
- The three annotation paths that bypassed trySend — delete, pin toggle,
  and unpin from the ribbon — go through it now, so they report failures
  too. PinnedRibbon takes an onUnpin callback instead of a manager: a
  ribbon that posted for itself could neither report nor record.
- Attachments and voice notes add their own message the same way.

The list is reverseLayout with the rows reversed to match, so a room
opens on its newest message and an arrival while you sit at the bottom
keeps you there instead of pushing the conversation out of view.

amy's `cordn send --json` gains a "cursor" field, which is where the
message landed in the stream — previously discarded.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012BfD4txdnsaPRXmNXbup9n
2026-09-24 02:17:48 +00:00
..