experiments in a post-browser web
10
fork

Configure Feed

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

fix(page): extension detection and widget spacing in page view

Fix extensions panel showing "No extensions loaded" due to race condition
with chrome extension loading at startup — filter on enabled state instead
of loaded state. Add updatePositions() calls after entity rendering so the
extensions panel repositions correctly below the entities panel.

+6 -3
+6 -3
app/page/page.js
··· 1933 1933 if (msg.url === currentUrl) { 1934 1934 currentPageEntities = msg.entities; 1935 1935 renderEntities(currentPageEntities); 1936 + updatePositions(); 1936 1937 } 1937 1938 } catch { 1938 1939 // webview not ready ··· 1956 1957 }; 1957 1958 }); 1958 1959 renderEntities(currentPageEntities); 1960 + updatePositions(); 1959 1961 } 1960 1962 } catch { 1961 1963 // webview not ready ··· 2039 2041 if (extracted && extracted.length > 0 && currentPageEntities.length === 0) { 2040 2042 currentPageEntities = extracted; 2041 2043 renderEntities(extracted); 2044 + updatePositions(); 2042 2045 } 2043 2046 } catch (err) { 2044 2047 DEBUG && console.log('[page] Simple entity extraction failed:', err.message); ··· 2648 2651 } 2649 2652 } 2650 2653 2651 - // Filter to only enabled/loaded extensions 2652 - const enabledExts = extensions.filter(ext => ext.enabled && ext.loaded); 2654 + // Filter to only enabled extensions (loaded state is a race condition at startup) 2655 + const enabledExts = extensions.filter(ext => ext.enabled); 2653 2656 2654 2657 extensionsBody.innerHTML = ''; 2655 2658 ··· 2659 2662 if (enabledExts.length === 0) { 2660 2663 const emptyEl = document.createElement('div'); 2661 2664 emptyEl.className = 'ext-empty'; 2662 - emptyEl.textContent = 'No extensions loaded'; 2665 + emptyEl.textContent = 'No extensions enabled'; 2663 2666 extensionsBody.appendChild(emptyEl); 2664 2667 } else { 2665 2668 for (const ext of enabledExts) {