@@ -287,7 +287,7 @@ input,textarea,select{font-family:inherit;font-size:inherit}
287287.admin-card-tag.tag-version{background:rgba(139,92,246,.1);color:#8b5cf6}
288288.admin-card-tag.tag-visibility{background:rgba(99,102,241,.08);color:var(--pri)}
289289.admin-card-tag.tag-group{background:rgba(139,92,246,.08);color:#8b5cf6}
290- .admin-card-preview{font-size:12px;color:var(--text-sec);line-height:1.5;margin:8px 0;padding:10px 12px;background:rgba(99,102,241,.02);border-radius:10px;border:1px solid rgba(99,102,241,.08);max-height:120px;overflow:hidden;white-space:pre-wrap;word-break:break-all;position:relative;-webkit-mask-image:linear-gradient(to bottom,#000 70 %,transparent 100%);mask-image:linear-gradient(to bottom,#000 70 %,transparent 100%)}
290+ .admin-card-preview{font-size:12px;color:var(--text-sec);line-height:1.5;margin:8px 0;padding:10px 12px;background:rgba(99,102,241,.02);border-radius:10px;border:1px solid rgba(99,102,241,.08);max-height:120px;overflow:hidden;white-space:pre-wrap;word-break:break-all;position:relative;-webkit-mask-image:linear-gradient(to bottom,#000 88 %,transparent 100%);mask-image:linear-gradient(to bottom,#000 88 %,transparent 100%)}
291291.admin-card-actions{display:inline-flex;gap:6px;margin-left:auto;align-items:center;flex-shrink:0}
292292.admin-card-time{font-size:11px;color:var(--text-muted)}
293293.admin-card-detail{display:none;margin-top:0;padding:20px 24px 24px;border-top:1px dashed rgba(99,102,241,.12);background:linear-gradient(180deg,rgba(99,102,241,.02) 0%,transparent 60%);animation:adminDetailIn .25s ease}
@@ -322,7 +322,7 @@ input,textarea,select{font-family:inherit;font-size:inherit}
322322.adm-msg-side.assistant .adm-msg-role{color:var(--green)}
323323.adm-msg-time{font-size:9px;color:var(--text-muted)}
324324.adm-msg-body{flex:1;min-width:0;padding:12px 16px;font-size:13px;line-height:1.75;color:var(--text);white-space:pre-wrap;word-break:break-word}
325- .adm-msg-body.collapsed{max-height:120px;overflow:hidden;-webkit-mask-image:linear-gradient(180deg,#000 65 %,transparent);mask-image:linear-gradient(180deg,#000 65 %,transparent)}
325+ .adm-msg-body.collapsed{max-height:120px;overflow:hidden;-webkit-mask-image:linear-gradient(180deg,#000 88 %,transparent);mask-image:linear-gradient(180deg,#000 88 %,transparent)}
326326.adm-msg-toggle{display:none;padding:0 16px 8px;font-size:11px;color:var(--pri);cursor:pointer;transition:color .15s}
327327.adm-msg-toggle:hover{color:var(--pri-dark)}
328328.admin-card-expand-btn{font-size:12px;color:var(--pri);cursor:pointer;background:none;border:none;padding:2px 6px;font-family:inherit}
@@ -7419,6 +7419,9 @@ function connectNotifSSE(){
74197419 _notifUnread=d.unreadCount||0;
74207420 renderNotifBadge();
74217421 if(_notifUnread>prev&&_notifPanelOpen) loadNotifications();
7422+ if(_notifUnread>prev&&_activeView==='memories'&&memorySearchScope!=='hub'){
7423+ syncTeamShareRemovedFromNotifications().then(function(){ loadMemories(currentPage,true); });
7424+ }
74227425 }
74237426 if(d.type==='cleared'){
74247427 _notifUnread=0;_notifCache=[];
@@ -7764,11 +7767,31 @@ function getFilterParams(){
77647767 return p;
77657768}
77667769
7770+ /** Hub admin removed a shared memory — badge-only: clear team_shared_chunks (never touches chunks/embeddings/hub_memories recall data). */
7771+ async function syncTeamShareRemovedFromNotifications(){
7772+ try{
7773+ var r=await fetch('/api/sharing/notifications');
7774+ var d=await r.json();
7775+ var list=d.notifications||[];
7776+ for(var i=0;i<list.length;i++){
7777+ var n=list[i];
7778+ if(n.type!=='resource_removed'||n.resource!=='memory'||!n.message) continue;
7779+ try{
7780+ var meta=JSON.parse(n.message);
7781+ if(meta.sourceChunkId){
7782+ await fetch('/api/sharing/sync-hub-removal',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({sourceChunkId:meta.sourceChunkId,memoryId:meta.memoryId||''})});
7783+ }
7784+ }catch(e){}
7785+ }
7786+ }catch(e){}
7787+ }
7788+
77677789async function loadMemories(page,silent){
77687790 if(page) currentPage=page;
77697791 const list=document.getElementById('memoryList');
77707792 if(!silent) list.innerHTML='<div class="spinner"></div>';
77717793 try{
7794+ if(!silent) await syncTeamShareRemovedFromNotifications();
77727795 const p=getFilterParams();
77737796 p.set('limit',PAGE_SIZE);
77747797 p.set('page',currentPage);
0 commit comments