Index: src/services/ap-c2s.js
===================================================================
--- src/services/ap-c2s.js	(revision 8a474ab1b2ce34c493e6e674100b989019d38cfe)
+++ src/services/ap-c2s.js	(revision 0ad37a0db1ff72679d2aa6167ca6c1905a40c720)
@@ -160,5 +160,11 @@
         // A picture (or a recording) can be the whole message: media-only
         // notes pass here; c2sCreatePost validates the attachments themselves.
-        if (!plain.trim() && !object.content && !(Array.isArray(object.attachment) && object.attachment.length)) {
+        // `!object.content` stond hier en zette de controle in de praktijk uit:
+        // Shaer stuurde bij lege tekst `<p></p>`, en die string is waar, dus
+        // een leeg bericht kwam er gewoon langs en werd een lege alinea in de
+        // tijdlijn. `plain` is al uit content afgeleid, dus die tweede term
+        // voegde niets toe behalve dat gat. Een bijlage mag nog steeds het hele
+        // bericht zijn -- dat is wat een foto-post is.
+        if (!plain.trim() && !(Array.isArray(object.attachment) && object.attachment.length)) {
           return { status: 400, error: 'empty_note' };
         }
