Index: src/assets/css/reply-editor.css
===================================================================
--- src/assets/css/reply-editor.css	(revision 5190152c90d2d397b7f87f9c900eae8d8c1e2856)
+++ src/assets/css/reply-editor.css	(revision e9c9ae1db68ca932789d82108c91af5e8bab1058)
@@ -29,4 +29,16 @@
   background: transparent; color: inherit; max-width: 10rem;
 }
+
+/* Mentions bar (u02): conversation partners as removable chips. */
+.re-mentions { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem; }
+.re-mentions-label { font-size: .78rem; color: color-mix(in srgb, var(--ink, #000) 55%, transparent); }
+.re-mention {
+  display: inline-flex; align-items: center; gap: .2rem;
+  padding: .15rem .3rem .15rem .55rem; border-radius: 999px; font-size: .8rem;
+  background: color-mix(in srgb, var(--accent, #06c) 14%, transparent);
+  border: 1px solid color-mix(in srgb, var(--accent, #06c) 30%, transparent);
+  max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
+}
+.re-mention-del { border: none; background: none; color: inherit; font-size: 1rem; line-height: 1; cursor: pointer; padding: 0 .25rem; }
 
 /* Media attachments (chips under the editor). */
@@ -64,4 +76,5 @@
   gap: .6rem;
 }
+.re-form.re-full .re-head { order: -1; }   /* the top bar stays topmost, above the mentions bar */
 .re-form.re-full .re-editor { flex: 1; min-height: 0; overflow-y: auto; border: none; padding: .4rem .1rem; }
 .re-form.re-full .re-editor:focus { border: none; }
Index: src/assets/js/reply-editor.js
===================================================================
--- src/assets/js/reply-editor.js	(revision 5190152c90d2d397b7f87f9c900eae8d8c1e2856)
+++ src/assets/js/reply-editor.js	(revision e9c9ae1db68ca932789d82108c91af5e8bab1058)
@@ -145,4 +145,21 @@
     }
 
+    // Mentions bar (u02): removing a chip stops addressing that partner. The
+    // hidden field always mirrors the remaining chips.
+    var mField = form.querySelector('input[name="mentions"]');
+    if (mField) {
+      var parts = [];
+      try { parts = JSON.parse(mField.value || '[]'); } catch (e) { parts = []; }
+      form.querySelectorAll('.re-mention-del').forEach(function (btn) {
+        btn.addEventListener('click', function () {
+          var chip = btn.closest('.re-mention');
+          var uri = chip.getAttribute('data-uri');
+          parts = parts.filter(function (p) { return p.uri !== uri; });
+          mField.value = JSON.stringify(parts);
+          chip.remove();
+        });
+      });
+    }
+
     // Full-screen compose on mobile: enter on focus, leave via ×.
     function setFull(on) {
