fix(web-clipper): bouton rond transparent draggable + toggle affichage + refresh auto sidebar + fix bloc bookmark (v6.2.1)
- bouton flottant rond (44px), semi-transparent blur, hover plus fonce, deplacable souris (pos persistee storage) - option afficher/cacher dans popup extension (showButton) - clipper: notification instantanee des onglets FlowDeck via tabs.sendMessage + polling 15s + BroadcastChannel + visibilitychange - fix bookmark template literal '+title+' -> \/\/\/\/\ (_page_editor_scripts.html) - sync static/extension + zip
This commit is contained in:
@@ -1100,6 +1100,47 @@
|
||||
this.loadAgents();
|
||||
this.initSidebarWidth();
|
||||
document.addEventListener('fd-toggle-sidebar', () => this.toggleSidebar());
|
||||
this.startClipAutoRefresh();
|
||||
},
|
||||
// ── Auto-refresh sidebar after a web clip (no manual reload) ──
|
||||
_clipRefreshTimer: null,
|
||||
_clipRefreshInterval: null,
|
||||
startClipAutoRefresh() {
|
||||
const self = this;
|
||||
// Instant refresh when extension notifies (content script forwards event)
|
||||
window.addEventListener('flowdeck:clip-created', () => {
|
||||
clearTimeout(self._clipRefreshTimer);
|
||||
self._clipRefreshTimer = setTimeout(() => self.refreshSidebarTree(), 400);
|
||||
});
|
||||
document.addEventListener('flowdeck:workspace-changed', () => {
|
||||
clearTimeout(self._clipRefreshTimer);
|
||||
self._clipRefreshTimer = setTimeout(() => self.refreshSidebarTree(), 400);
|
||||
});
|
||||
// Also refresh when tab becomes visible (user returns to FlowDeck after clipping)
|
||||
document.addEventListener('visibilitychange', () => {
|
||||
if (!document.hidden) self.refreshSidebarTree();
|
||||
});
|
||||
window.addEventListener('focus', () => self.refreshSidebarTree());
|
||||
// Polling fallback every 15s while tab is visible (covers extension clip without message)
|
||||
try {
|
||||
self._clipRefreshInterval = setInterval(() => {
|
||||
if (!document.hidden) self.refreshSidebarTree();
|
||||
}, 15000);
|
||||
} catch (_e) {}
|
||||
// BroadcastChannel cross-tab sync (all FlowDeck tabs refresh together)
|
||||
try {
|
||||
if (window.BroadcastChannel) {
|
||||
const bc = new BroadcastChannel('flowdeck');
|
||||
bc.onmessage = (ev) => {
|
||||
if (ev.data && ev.data.type === 'clip-created') self.refreshSidebarTree();
|
||||
};
|
||||
window._fdBC = bc;
|
||||
// Bridge DOM event → BroadcastChannel for extension-triggered clips
|
||||
window.addEventListener('flowdeck:clip-created', () => {
|
||||
try { bc.postMessage({ type: 'clip-created', at: Date.now() }); } catch (_e) {}
|
||||
});
|
||||
}
|
||||
} catch (_e) {}
|
||||
},
|
||||
agentList: [],
|
||||
loadAgents() {
|
||||
|
||||
Reference in New Issue
Block a user