Index: src/views/pages/post-edit.ejs
===================================================================
--- src/views/pages/post-edit.ejs	(revision b50a885cfa81ab029ecb51fba763a6f18713fa5f)
+++ src/views/pages/post-edit.ejs	(revision 851239c078882db0b2674ad482985177b169bb8e)
@@ -9,9 +9,13 @@
 // and styling changed.
 const _hasCover = !!post.cover_image_url;
+// In hub-modus moeten save/create/cancel de /user/<slug>/-prefix dragen, anders
+// valt de request terug op de primaire site (siteUrlBase leeg) en rendert de
+// post na opslaan headerless (bareChrome). In solo is _base leeg.
+const _base = (typeof siteUrlBase !== 'undefined' && siteUrlBase) ? siteUrlBase : '';
 %>
 <div class="container post-edit-page">
   <h1><%= isNew ? 'Nieuwe post' : 'Post bewerken' %></h1>
 
-  <form method="post" action="<%= isNew ? '/posts/create' : '/posts/' + post.slug + '/save' %>" class="post-edit-form">
+  <form method="post" action="<%= _base %><%= isNew ? '/posts/create' : '/posts/' + post.slug + '/save' %>" class="post-edit-form">
 
     <%# ── IDENTITY ─────────────────────────────────────────────── %>
@@ -184,5 +188,5 @@
     <%# ── ACTIONS (sticky at bottom) ──────────────────────────── %>
     <div class="pe-actions">
-      <a href="<%= isNew ? '/' : '/' + post.slug %>" class="pe-btn">Annuleren</a>
+      <a href="<%= _base %><%= isNew ? '/' : '/' + post.slug %>" class="pe-btn">Annuleren</a>
       <div class="pe-actions-spacer"></div>
       <% if (!isNew && post.status !== 'published') { %>
