(READ ONLY) Margin is an open annotation layer for the internet. Powered by the AT Protocol. margin.at
extension web atproto comments
99
fork

Configure Feed

Select the types of activity you want to include in your feed.

fixes in extension

+9 -7
+2 -2
extension/src/components/popup/App.tsx
··· 876 876 className="flex-1 min-w-0" 877 877 > 878 878 <div className="text-sm font-medium truncate group-hover:text-[var(--accent)] transition-colors"> 879 - {item.title || 'Untitled'} 879 + {item.target?.title || item.title || 'Untitled'} 880 880 </div> 881 881 <div className="text-xs text-[var(--text-tertiary)] truncate"> 882 - {item.source ? new URL(item.source).hostname : ''} 882 + {(item.target?.source || item.source) ? new URL(item.target?.source || item.source!).hostname : ''} 883 883 </div> 884 884 </a> 885 885 <button
+3 -5
extension/src/utils/overlay.ts
··· 217 217 sendMessage('updateBadge', { count: 0 }); 218 218 } else { 219 219 applyTheme(); 220 - if ('requestIdleCallback' in window) { 221 - requestIdleCallback(() => fetchAnnotations(), { timeout: 2000 }); 222 - } else { 223 - setTimeout(() => fetchAnnotations(), 100); 224 - } 220 + setTimeout(() => fetchAnnotations(), 100); 225 221 } 226 222 }); 227 223 ··· 1130 1126 if (currentIds === newIds) { 1131 1127 popoverEl.remove(); 1132 1128 popoverEl = null; 1129 + if (hoverIndicator) hoverIndicator.classList.remove('visible'); 1133 1130 return; 1134 1131 } 1135 1132 } ··· 1149 1146 if (popoverEl) { 1150 1147 popoverEl.remove(); 1151 1148 popoverEl = null; 1149 + if (hoverIndicator) hoverIndicator.classList.remove('visible'); 1152 1150 } 1153 1151 } 1154 1152 }
+4
extension/src/utils/types.ts
··· 50 50 image?: string; 51 51 tags?: string[]; 52 52 createdAt?: string; 53 + target?: { 54 + source?: string; 55 + title?: string; 56 + }; 53 57 } 54 58 55 59 export interface Highlight {