diff --git a/app/static/js/app.js b/app/static/js/app.js index 3c30982..0c442f5 100644 --- a/app/static/js/app.js +++ b/app/static/js/app.js @@ -1354,7 +1354,7 @@ function createMessageElement(msg) { - ${window.deviceCaps?.supports_raw_resend ? ` + ${window.deviceCaps?.supports_raw_resend && typeof msg.id === 'number' ? ` @@ -1464,7 +1464,14 @@ async function sendMessage() { // Replace optimistic ID with real DB id so echo WebSocket updates work if (data.id) { const wrapper = document.querySelector(`.message-wrapper[data-msg-id="${optimisticId}"]`); - if (wrapper) wrapper.dataset.msgId = data.id; + if (wrapper) { + wrapper.dataset.msgId = data.id; + // Inject the post-send action buttons (analyzer, raw resend) + // now — refreshMessagesMeta would otherwise skip this message + // until the first echo arrives, which never happens on + // channels with no repeaters in range. + refreshMessagesMeta([data.id]); + } } // Use server timestamp to prevent poll-triggered reload due to clock skew if (data.timestamp) {