Index: src/assets/js/reply-editor.js
===================================================================
--- src/assets/js/reply-editor.js	(revision feced2ce628d8bee7974f77404806f4be6f2272b)
+++ src/assets/js/reply-editor.js	(revision 5190152c90d2d397b7f87f9c900eae8d8c1e2856)
@@ -36,7 +36,9 @@
     var attField = form.querySelector('input[name="attachments"]');
     var fileInput = form.querySelector('.re-file');
+    var canAttach = !!(attWrap && attField && fileInput);   // edit mode renders without media
     var attachments = [];
 
     function syncAtt() {
+      if (!canAttach) return;
       attField.value = attachments.length ? JSON.stringify(attachments) : '';
       attWrap.hidden = attachments.length === 0;
@@ -62,4 +64,5 @@
     }
     function uploadFiles(files) {
+      if (!canAttach) return;
       Array.prototype.forEach.call(files, function (file) {
         if (!/^(image|audio|video)\//.test(file.type) || attachments.length >= 4) return;
@@ -93,5 +96,5 @@
       e.preventDefault();
       var cmd = btn.getAttribute('data-cmd');
-      if (cmd === 'attach') { fileInput.click(); return; }   // no editor focus: keeps the picker usable on mobile
+      if (cmd === 'attach') { if (fileInput) fileInput.click(); return; }   // no editor focus: keeps the picker usable on mobile
       ed.focus();
       if (cmd === 'bold') document.execCommand('bold');
@@ -104,5 +107,5 @@
       }
     });
-    fileInput.addEventListener('change', function () {
+    if (fileInput) fileInput.addEventListener('change', function () {
       uploadFiles(fileInput.files);
       fileInput.value = '';
@@ -114,6 +117,6 @@
       var cd = e.clipboardData || window.clipboardData;
       if (cd.files && cd.files.length) {
-        e.preventDefault();
-        uploadFiles(cd.files);
+        e.preventDefault();            // never let the browser inline-paste a file as base64
+        uploadFiles(cd.files);         // no-op without the attach UI (edit mode)
         return;
       }
@@ -125,4 +128,5 @@
 
     // Drag/drop media onto the editor.
+    if (canAttach) {
     ed.addEventListener('dragover', function (e) {
       if (e.dataTransfer && Array.prototype.some.call(e.dataTransfer.types || [], function (t) { return t === 'Files'; })) {
@@ -139,4 +143,5 @@
       }
     });
+    }
 
     // Full-screen compose on mobile: enter on focus, leave via ×.
