diff --git a/frontend/assets/pwa-icon.png b/frontend/assets/pwa-icon.png index 8df251f..bf59331 100644 Binary files a/frontend/assets/pwa-icon.png and b/frontend/assets/pwa-icon.png differ diff --git a/frontend/css/main.css b/frontend/css/main.css index 81f5bf1..cca5021 100644 --- a/frontend/css/main.css +++ b/frontend/css/main.css @@ -1905,6 +1905,11 @@ h6, cursor: pointer; } + +.mobile-menu-btn[aria-expanded="true"] { + display: none !important; +} + /* Responsive */ @media (max-width: 768px) { .mobile-menu-btn { diff --git a/frontend/js/views/activity.js b/frontend/js/views/activity.js index a4f9f8c..42c770d 100644 --- a/frontend/js/views/activity.js +++ b/frontend/js/views/activity.js @@ -72,6 +72,7 @@ export async function render(container) { } function getActionIcon(action) { + if (!action) return '📄'; if (action.includes('DELETE')) return '🗑'; if (action.includes('POST') && action.includes('content')) return '📤'; if (action.includes('POST') && action.includes('provision')) return '🔗'; diff --git a/frontend/js/views/admin.js b/frontend/js/views/admin.js index 5fdc594..c2ad893 100644 --- a/frontend/js/views/admin.js +++ b/frontend/js/views/admin.js @@ -149,7 +149,7 @@ async function loadOrgs() { } el.innerHTML = orgs.map(o => { const wsRows = (o.workspaces || []).map(w => ` -
This widget is fully automated. It tracks live prices for Bitcoin, Ethereum, Solana, and XRP using a dark premium aesthetic.
`; + break; + case 'world-clock': + html += `A minimal world clock showing New York, London, and Tokyo times synchronously.
`; + break; case 'clock': html += ` diff --git a/frontend/manifest.json b/frontend/manifest.json index 97fd0dd..9fe5116 100644 --- a/frontend/manifest.json +++ b/frontend/manifest.json @@ -2,7 +2,7 @@ "name": "SwiftDisplay", "short_name": "SwiftDisplay", "description": "Digital Signage Management", - "start_url": "/", + "start_url": "/app", "display": "standalone", "background_color": "#09090b", "theme_color": "#ff6b00", diff --git a/server/routes/widgets.js b/server/routes/widgets.js index 0f80ad6..097c00e 100644 --- a/server/routes/widgets.js +++ b/server/routes/widgets.js @@ -172,6 +172,8 @@ const KNOWN_WIDGET_TYPES = new Set(['clock','weather','rss','text','webpage','so function renderWidgetHtml(type, config) { config = config || {}; switch (type) { + case 'crypto': return renderCrypto(); + case 'world-clock': return renderWorldClock(); case 'clock': return renderClock(config); case 'weather': return renderWeather(config); case 'rss': return renderRSS(config); @@ -1175,3 +1177,133 @@ function renderDiagSmoothness(config) { } module.exports = router; + + +function renderCrypto() { + return ` + + + + +Premium market snapshot