diff --git a/public/s/js/comments.js b/public/s/js/comments.js
index e25af9d..d25eae4 100644
--- a/public/s/js/comments.js
+++ b/public/s/js/comments.js
@@ -1784,10 +1784,11 @@ class CommentSystem {
if (trimmed.startsWith('>') && !trimmed.match(/^>>\d+/)) {
const quoteContent = line.substring(line.indexOf('>') + 1);
const quoteEmojis = window.f0ckSession?.quote_emojis === true;
+ const escapedQuote = quoteContent.replace(/>/g, '>');
const renderedContent = quoteEmojis
- ? quoteContent.replace(/:([a-z0-9_]+):/g, (m, n) => this.renderEmoji(m, n))
- : quoteContent;
- return `>${renderedContent.replace(/>/g, '>')}`;
+ ? escapedQuote.replace(/:([a-z0-9_]+):/g, (m, n) => this.renderEmoji(m, n))
+ : escapedQuote;
+ return `>${renderedContent}`;
}
// 2. Per-line limit to prevent marked.parse recursion on single giant lines
diff --git a/public/s/js/sidebar-activity.js b/public/s/js/sidebar-activity.js
index 5e192d3..cab51fa 100644
--- a/public/s/js/sidebar-activity.js
+++ b/public/s/js/sidebar-activity.js
@@ -268,10 +268,11 @@
// Manual greentext handling — apply emoji if the user preference allows it
const quoteContent = line.substring(line.indexOf('>') + 1);
const quoteEmojis = window.f0ckSession?.quote_emojis === true;
+ const escapedQuote = quoteContent.replace(/>/g, '>');
const rendered = quoteEmojis
- ? quoteContent.replace(/:([a-z0-9_]+):/g, (m, n) => renderEmoji(m, n))
- : quoteContent;
- return `>${rendered.replace(/>/g, '>')}`;
+ ? escapedQuote.replace(/:([a-z0-9_]+):/g, (m, n) => renderEmoji(m, n))
+ : escapedQuote;
+ return `>${rendered}`;
}
// Per-line limit to prevent marked.parse recursion on single giant lines
diff --git a/public/s/js/user_comments.js b/public/s/js/user_comments.js
index 8a9eb31..588f76f 100644
--- a/public/s/js/user_comments.js
+++ b/public/s/js/user_comments.js
@@ -306,7 +306,12 @@ if (!window.UserCommentSystem) {
const trimmed = line.trimStart();
if (trimmed.startsWith('>') && !trimmed.match(/^>>\d+/)) {
const quoteContent = line.substring(line.indexOf('>') + 1);
- return `>${quoteContent.replace(/>/g, '>')}`;
+ const quoteEmojis = window.f0ckSession?.quote_emojis === true;
+ const escapedQuote = quoteContent.replace(/>/g, '>');
+ const rendered = quoteEmojis
+ ? escapedQuote.replace(/:([a-z0-9_]+):/g, (m, n) => this.renderEmoji(m, n))
+ : escapedQuote;
+ return `>${rendered}`;
}
// Per-line limit