From 93c8c84de1cf0c5cceb2754cee0183840c42c02f Mon Sep 17 00:00:00 2001 From: Siavash Sameni Date: Thu, 26 Mar 2026 17:04:31 +0400 Subject: [PATCH] Click on DM lock icon to pre-fill /dm @username in input Co-Authored-By: Claude Opus 4.6 (1M context) --- chat.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/chat.py b/chat.py index c0c9777..22a5c63 100644 --- a/chat.py +++ b/chat.py @@ -621,14 +621,24 @@ async function handleEncryptedDM(data) { d.className = 'msg'; const t = new Date(data.ts * 1000).toLocaleTimeString([], {hour:'2-digit',minute:'2-digit'}); const arrow = data.user === myName ? '→ ' + esc(data.to) : '← ' + esc(data.user); - d.innerHTML = '' + t + ' 🔒 DM ' + arrow + ': ' + renderMd(text); + const replyTo = data.user === myName ? data.to : data.user; + d.innerHTML = '' + t + ' 🔒 DM ' + arrow + ': ' + renderMd(text); + d.querySelector('.dm-tag').onclick = function() { + $input.value = '/dm @' + this.dataset.reply + ' '; + $input.focus(); + }; $msg.appendChild(d); $msg.scrollTop = $msg.scrollHeight; } catch(e) { const d = document.createElement('div'); d.className = 'msg'; + const replyTo = data.user; const t = new Date(data.ts * 1000).toLocaleTimeString([], {hour:'2-digit',minute:'2-digit'}); - d.innerHTML = '' + t + ' 🔒 DM from ' + esc(data.user) + ': [cannot decrypt]'; + d.innerHTML = '' + t + ' 🔒 DM from ' + esc(data.user) + ': [cannot decrypt]'; + d.querySelector('.dm-tag').onclick = function() { + $input.value = '/dm @' + this.dataset.reply + ' '; + $input.focus(); + }; $msg.appendChild(d); $msg.scrollTop = $msg.scrollHeight; }