diff --git a/src/components/ChatBox/MessageItem/MarkDown.tsx b/src/components/ChatBox/MessageItem/MarkDown.tsx
index 43e2f6c3..e1dfd1e1 100644
--- a/src/components/ChatBox/MessageItem/MarkDown.tsx
+++ b/src/components/ChatBox/MessageItem/MarkDown.tsx
@@ -168,7 +168,8 @@ export const MarkDown = memo(
await window.electronAPI.readFileAsDataUrl(resolvedPath);
// Add cursor-pointer class and data attributes for click handling
- const newTag = `
`;
+ // Add loop="infinite" to ensure GIFs play continuously (fixes issue #1480)
+ const newTag = `
`;
rawHtml = rawHtml.replace(fullTag, newTag);
} else {
// Fallback: show alt text or placeholder
@@ -182,10 +183,10 @@ export const MarkDown = memo(
// Keep original tag if loading fails
}
} else {
- // For absolute URLs, add click handler
+ // For absolute URLs, add click handler and loop attribute
const newTag = fullTag.replace(
'
)}