diff --git a/frontend/dashboard.css b/frontend/dashboard.css
index 0c686e4..cb194f6 100644
--- a/frontend/dashboard.css
+++ b/frontend/dashboard.css
@@ -550,6 +550,12 @@ textarea { resize: vertical; min-height: 120px; }
.search-preview-conversation h2 { margin:0; font-size:1rem; }
.search-preview-comment { min-width:0; padding:10px 0; border-bottom:1px solid #1b2d45; overflow-wrap:anywhere; }
.search-preview-conversation button { min-height:44px; width:100%; }
+.search-preview-reply { display:grid; gap:8px; padding-top:8px; border-top:1px solid #2a496e; }
+.search-preview-reply[hidden] { display:none; }
+.search-preview-reply h2 { margin:0; font-size:1rem; }
+.search-preview-reply textarea { box-sizing:border-box; width:100%; min-height:110px; resize:vertical; scroll-margin-bottom:calc(190px + env(safe-area-inset-bottom)); }
+.search-preview-reply-actions { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
+.search-preview-reply-actions button { min-height:44px; }
.search-preview-navigation { display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); align-items:center; gap:8px; }
.search-preview-actions { position:sticky; bottom:0; display:grid; gap:8px; padding:10px 0; padding-bottom:calc(10px + env(safe-area-inset-bottom)); background:#0b1526; }
.search-preview-actions button, .search-preview-actions a { min-height:44px; box-sizing:border-box; display:flex; align-items:center; justify-content:center; }
diff --git a/frontend/dashboard.js b/frontend/dashboard.js
index d99ead0..a6f00c7 100644
--- a/frontend/dashboard.js
+++ b/frontend/dashboard.js
@@ -4348,6 +4348,7 @@
startButton.hidden = true;
startButton.disabled = false;
shareButton.disabled = true;
+ renderSearchPreviewReply(state, null, searchPreview, document);
if (state.status === 'loading') {
searchPreviewDetail = null;
@@ -4377,6 +4378,7 @@
(detail.assignees?.length ? ' · assigned to ' + detail.assignees.join(', ') : '');
qs('#search-preview-body').innerHTML = renderMarkdown(detail.body || 'No description provided.');
renderSearchConversation(state.conversation);
+ renderSearchPreviewReply(state, detail, searchPreview, document);
qs('#open-search-result-gitea').href = safeSearchUrl(detail.url) || '#';
claimButton.hidden = !(detail.claimable || detail.assigned_to_me);
claimButton.textContent = detail.assigned_to_me ? 'Open in My Work' : 'Assign to me';
@@ -4416,6 +4418,7 @@
'/issues/' + encodeURIComponent(detail.number) + '/' + action,
{ method:'PATCH', headers:{ Accept:'application/json' } }
),
+ ...searchPreviewReplyOptions(fetchReviewJson, localStorage, globalThis.crypto),
share: url => createWorkRoute.share(url, navigator, navigator.clipboard),
session:[()=>commandSearchState, commandSearch, item=>taskOverlayHistory.update({preview:item})],
onState: renderSearchPreview,
diff --git a/frontend/index.html b/frontend/index.html
index 147de3e..9727500 100644
--- a/frontend/index.html
+++ b/frontend/index.html
@@ -472,6 +472,15 @@
+
+ Reply
+
+
+
+
+
+
+