Index: src/views/pages/connect.ejs
===================================================================
--- src/views/pages/connect.ejs	(revision fc664ce9ed4de0934d78a338307aaaf7de7615ac)
+++ src/views/pages/connect.ejs	(revision acbc9fc37db938981585559eac40eda58373493e)
@@ -50,4 +50,26 @@
       stond hij bovendien zonder enige opmaak: labels als losse tekst naast hun
       invoerveld. Op die pagina erft hij de kaartopmaak. %>
+
+  <%# De eigenaarspoort (Robins wens, 18-8): volgverzoeken die wachten op
+      een beslissing van de eigenaar. Alleen buiten voogdij — een ward ziet
+      dit nooit, want daar beslissen de guardians. %>
+  <% var folreqs = (typeof followRequests !== 'undefined' && followRequests) || []; %>
+  <% if (folreqs.length) { %>
+    <h2 class="conn-h"><%= t('tl.folreq_title') %></h2>
+    <p class="conn-unreach-lead"><%= t('tl.folreq_sub') %></p>
+    <ul class="tl-foll-list">
+      <% folreqs.forEach(function (f) { var disp = f.follower_name || f.follower_handle || f.follower_uri; %>
+        <li class="tl-foll">
+          <span class="tl-foll-av"><% if (f.follower_icon) { %><img src="<%= avatar(f.follower_icon, 96) %>" alt=""><% } else { %><%= String(disp || '?').replace(/^@/, '').charAt(0).toUpperCase() %><% } %></span>
+          <span class="tl-foll-meta">
+            <a href="<%= f.follower_uri %>" target="_blank" rel="nofollow noopener"><%= disp %></a>
+            <% if (f.follower_handle && f.follower_name) { %><span class="conn-sub"><%= f.follower_handle %></span><% } %>
+          </span>
+          <form method="post" action="/follow-requests/approve"><input type="hidden" name="id" value="<%= f.id %>"><button type="submit" class="btn btn-primary"><%= t('tl.folreq_accept') %></button></form>
+          <form method="post" action="/follow-requests/deny"><input type="hidden" name="id" value="<%= f.id %>"><button type="submit" class="tl-unfollow"><%= t('tl.folreq_deny') %></button></form>
+        </li>
+      <% }); %>
+    </ul>
+  <% } %>
 
   <%
