Index: src/views/pages/post.ejs
===================================================================
--- src/views/pages/post.ejs	(revision 7bc636b391c66ac399c33e54f7173a022c6a3cbd)
+++ src/views/pages/post.ejs	(revision b94c08ee93afe04552667726a69e8b5eb5629d16)
@@ -1,2 +1,8 @@
+<%
+// In hub-mode is de site bereikbaar onder /user/<slug>; alle site-scoped links
+// (tag, edit, delete, comments) moeten met die prefix anders vallen ze terug op
+// de primaire site → 404 / verkeerde site. In solo is _base = ''.
+const _base = (typeof siteUrlBase !== 'undefined' && siteUrlBase) ? siteUrlBase : '';
+%>
 <article class="container post-page">
   <% if (post.cover_image_url) { %>
@@ -30,8 +36,8 @@
     <div class="post-tags">
       <% post.tags.forEach(t => { %>
-        <a class="tag" href="/tag/<%= encodeURIComponent(t) %>"
-           hx-get="/tag/<%= encodeURIComponent(t) %>?partial=1"
+        <a class="tag" href="<%= _base %>/tag/<%= encodeURIComponent(t) %>"
+           hx-get="<%= _base %>/tag/<%= encodeURIComponent(t) %>?partial=1"
            hx-target="#pcms-main" hx-swap="innerHTML"
-           hx-push-url="/tag/<%= encodeURIComponent(t) %>"
+           hx-push-url="<%= _base %>/tag/<%= encodeURIComponent(t) %>"
            hx-indicator="#pcms-loading">#<%= t %></a>
       <% }); %>
@@ -43,12 +49,12 @@
     <aside class="post-actions">
       <% if (permissions.canEditPost(user, post, site)) { %>
-        <a href="/posts/<%= post.slug %>/edit" class="btn"
-           hx-get="/posts/<%= post.slug %>/edit?partial=1" hx-target="#pcms-main"
-           hx-push-url="/posts/<%= post.slug %>/edit" hx-indicator="#pcms-loading">
+        <a href="<%= _base %>/posts/<%= post.slug %>/edit" class="btn"
+           hx-get="<%= _base %>/posts/<%= post.slug %>/edit?partial=1" hx-target="#pcms-main"
+           hx-push-url="<%= _base %>/posts/<%= post.slug %>/edit" hx-indicator="#pcms-loading">
           ✏️ Edit
         </a>
       <% } %>
       <% if (permissions.canDeletePost(user, post, site)) { %>
-        <form method="post" action="/posts/<%= post.slug %>/delete" style="display:inline" onsubmit="return confirm('Delete this post?')">
+        <form method="post" action="<%= _base %>/posts/<%= post.slug %>/delete" style="display:inline" onsubmit="return confirm('Delete this post?')">
           <button type="submit" class="btn btn-danger">🗑 Delete</button>
         </form>
@@ -78,5 +84,5 @@
 
     <% if (!comments || !comments.length) { %>
-      <p class="comments-empty">No comments yet.<% if (!user) { %> <a href="/auth/login?next=<%= encodeURIComponent('/' + post.slug + '#comments') %>">Log in</a> to start the conversation.<% } %></p>
+      <p class="comments-empty">No comments yet.<% if (!user) { %> <a href="/auth/login?next=<%= encodeURIComponent(_base + '/' + post.slug + '#comments') %>">Log in</a> to start the conversation.<% } %></p>
     <% } else { %>
       <ol class="comments-list">
@@ -101,5 +107,5 @@
                 <% } %>
                 <% if (user && permissions.canDeleteComment(user, c, site)) { %>
-                  <form method="post" action="/comments/<%= c.id %>/delete" style="display:inline" onsubmit="return confirm('Delete this comment?')">
+                  <form method="post" action="<%= _base %>/comments/<%= c.id %>/delete" style="display:inline" onsubmit="return confirm('Delete this comment?')">
                     <button type="submit" class="comment-delete-btn">Delete</button>
                   </form>
@@ -109,5 +115,5 @@
               <!-- Inline reply form (hidden by default) -->
               <% if (user) { %>
-                <form method="post" action="/comments" class="comment-reply-form" hidden data-reply-form-for="<%= c.id %>">
+                <form method="post" action="<%= _base %>/comments" class="comment-reply-form" hidden data-reply-form-for="<%= c.id %>">
                   <input type="hidden" name="post_slug" value="<%= post.slug %>">
                   <input type="hidden" name="parent_comment_id" value="<%= c.id %>">
@@ -140,5 +146,5 @@
                         <div class="comment-actions">
                           <% if (user && permissions.canDeleteComment(user, r, site)) { %>
-                            <form method="post" action="/comments/<%= r.id %>/delete" style="display:inline" onsubmit="return confirm('Delete this comment?')">
+                            <form method="post" action="<%= _base %>/comments/<%= r.id %>/delete" style="display:inline" onsubmit="return confirm('Delete this comment?')">
                               <button type="submit" class="comment-delete-btn">Delete</button>
                             </form>
@@ -158,5 +164,5 @@
     <!-- Top-level comment form (only for logged-in users for now) -->
     <% if (user) { %>
-      <form method="post" action="/comments" class="comment-form">
+      <form method="post" action="<%= _base %>/comments" class="comment-form">
         <input type="hidden" name="post_slug" value="<%= post.slug %>">
         <label class="comment-form-label">
@@ -168,5 +174,5 @@
     <% } else { %>
       <p class="comments-login-cta">
-        <a href="/auth/login?next=<%= encodeURIComponent('/' + post.slug + '#comments') %>" class="btn">Log in to comment</a>
+        <a href="/auth/login?next=<%= encodeURIComponent(_base + '/' + post.slug + '#comments') %>" class="btn">Log in to comment</a>
       </p>
     <% } %>
