Index: src/config/database.js
===================================================================
--- src/config/database.js	(revision 88788148df903019ffbc5b7d8b3dca7d1d759712)
+++ src/config/database.js	(revision 2d6a9c360f54275fa0b6256c64c88bf2d5782554)
@@ -387,4 +387,9 @@
   ensureColumn('ap_followers', 'last_delivery_at', 'DATETIME'); // last SUCCESSFUL delivery to this follower's inbox
   ensureColumn('ap_followers', 'last_error_at', 'DATETIME');    // last time a delivery to it gave up (max retries)
+
+  // ActivityPub `source` model: content_rendered = baked display HTML (#hashtags / URLs /
+  // @mentions linkified once at save). `content` stays the raw source used for editing and
+  // re-rendering. NULL on old posts → the render route bakes on the fly as a fallback.
+  ensureColumn('posts', 'content_rendered', 'TEXT');
 }
 
