Index: src/assets/js/ward.js
===================================================================
--- src/assets/js/ward.js	(revision 52188632909b3b1b9120748844eed2779f7fc030)
+++ src/assets/js/ward.js	(revision 5412cbbcf42cb02fb3fb6d67ef433290c95bb38c)
@@ -232,5 +232,41 @@
     const c = convs[i];
     if (c) openThread(c);
-  });
+  }, () => openFriendsPicker());
+
+  /* ── De (+): de deur naar iemand nieuw ─────────────────────────────────
+     De hemel toont alleen met wie je al sprak; de kiezer toont iedereen met
+     een volgrelatie. Kies iemand en het lege gesprek opent gewoon: het
+     eerste bericht maakt het echt. */
+  const friendsDlg = document.getElementById('friends-dialog');
+  async function openFriendsPicker() {
+    const list = document.getElementById('friends-list');
+    list.replaceChildren();
+    friendsDlg.showModal();
+    try {
+      const r = await fetch('/ward/api/friends', { headers: { Accept: 'application/json' } });
+      const items = r.ok ? (await r.json()).items || [] : [];
+      document.getElementById('friends-empty').hidden = items.length > 0;
+      items.forEach((f) => {
+        const li = el('li', 'card friend');
+        const row = el('button', 'row');
+        row.type = 'button';
+        if (f.icon) {
+          const img = el('img', 'avatar');
+          img.src = f.icon; img.alt = ''; img.loading = 'lazy';
+          row.append(img);
+        }
+        const kolom = el('span', 'wie');
+        kolom.append(el('span', 'name', f.name), el('span', 'hint', f.handle));
+        row.append(kolom);
+        row.addEventListener('click', () => {
+          friendsDlg.close();
+          openThread({ uri: f.uri, name: f.name, icon: f.icon });
+        });
+        li.append(row);
+        list.append(li);
+      });
+    } catch { /* de kiezer blijft leeg staan; annuleren kan altijd */ }
+  }
+  document.getElementById('friends-cancel').addEventListener('click', () => friendsDlg.close());
 
   /* ── Het gesprek: een overlay OVER de levende hemel ────────────────────
