diff --git a/edge-apps/clock/screenshots/1080x1920.webp b/edge-apps/clock/screenshots/1080x1920.webp
index 5c29e3a14..7bc90673c 100644
Binary files a/edge-apps/clock/screenshots/1080x1920.webp and b/edge-apps/clock/screenshots/1080x1920.webp differ
diff --git a/edge-apps/clock/screenshots/1280x720.webp b/edge-apps/clock/screenshots/1280x720.webp
index c48a6f89f..2121603d1 100644
Binary files a/edge-apps/clock/screenshots/1280x720.webp and b/edge-apps/clock/screenshots/1280x720.webp differ
diff --git a/edge-apps/clock/screenshots/1920x1080.webp b/edge-apps/clock/screenshots/1920x1080.webp
index e81dd13ad..2686be7c0 100644
Binary files a/edge-apps/clock/screenshots/1920x1080.webp and b/edge-apps/clock/screenshots/1920x1080.webp differ
diff --git a/edge-apps/clock/screenshots/2160x3840.webp b/edge-apps/clock/screenshots/2160x3840.webp
index b77169631..ca362707a 100644
Binary files a/edge-apps/clock/screenshots/2160x3840.webp and b/edge-apps/clock/screenshots/2160x3840.webp differ
diff --git a/edge-apps/clock/screenshots/2160x4096.webp b/edge-apps/clock/screenshots/2160x4096.webp
index d652bc79e..dd87a0ed1 100644
Binary files a/edge-apps/clock/screenshots/2160x4096.webp and b/edge-apps/clock/screenshots/2160x4096.webp differ
diff --git a/edge-apps/clock/screenshots/3840x2160.webp b/edge-apps/clock/screenshots/3840x2160.webp
index 2061ee349..da4f51ace 100644
Binary files a/edge-apps/clock/screenshots/3840x2160.webp and b/edge-apps/clock/screenshots/3840x2160.webp differ
diff --git a/edge-apps/clock/screenshots/4096x2160.webp b/edge-apps/clock/screenshots/4096x2160.webp
index 788a4150d..51db4b6af 100644
Binary files a/edge-apps/clock/screenshots/4096x2160.webp and b/edge-apps/clock/screenshots/4096x2160.webp differ
diff --git a/edge-apps/clock/screenshots/480x800.webp b/edge-apps/clock/screenshots/480x800.webp
index 39c56c2de..22783be53 100644
Binary files a/edge-apps/clock/screenshots/480x800.webp and b/edge-apps/clock/screenshots/480x800.webp differ
diff --git a/edge-apps/clock/screenshots/720x1280.webp b/edge-apps/clock/screenshots/720x1280.webp
index 7a77a8664..c7cd4db32 100644
Binary files a/edge-apps/clock/screenshots/720x1280.webp and b/edge-apps/clock/screenshots/720x1280.webp differ
diff --git a/edge-apps/clock/screenshots/800x480.webp b/edge-apps/clock/screenshots/800x480.webp
index 06514df45..cb922899c 100644
Binary files a/edge-apps/clock/screenshots/800x480.webp and b/edge-apps/clock/screenshots/800x480.webp differ
diff --git a/edge-apps/edge-apps-library/src/assets/images/screenly.svg b/edge-apps/edge-apps-library/src/assets/images/screenly.svg
new file mode 100644
index 000000000..16ce8e6af
--- /dev/null
+++ b/edge-apps/edge-apps-library/src/assets/images/screenly.svg
@@ -0,0 +1,10 @@
+
diff --git a/edge-apps/edge-apps-library/src/utils/theme.test.ts b/edge-apps/edge-apps-library/src/utils/theme.test.ts
index 53b807f3e..74a58a72d 100644
--- a/edge-apps/edge-apps-library/src/utils/theme.test.ts
+++ b/edge-apps/edge-apps-library/src/utils/theme.test.ts
@@ -1,13 +1,15 @@
-import { describe, test, expect, beforeEach, afterEach } from 'bun:test'
+import { describe, test, expect, beforeEach, afterEach, mock } from 'bun:test'
import {
getPrimaryColor,
getSecondaryColor,
getThemeColors,
applyThemeColors,
setupTheme,
+ setupBrandingLogo,
DEFAULT_THEME_COLORS,
} from './theme'
import { setupScreenlyMock, resetScreenlyMock } from '../test/mock'
+import defaultLogoUrl from '../assets/images/screenly.svg'
// eslint-disable-next-line max-lines-per-function
describe('theme utilities', () => {
@@ -151,4 +153,36 @@ describe('theme utilities', () => {
).toBe('#FF0000')
})
})
+
+ describe('setupBrandingLogo', () => {
+ let originalFetch: typeof globalThis.fetch
+
+ beforeEach(() => {
+ originalFetch = globalThis.fetch
+ })
+
+ afterEach(() => {
+ globalThis.fetch = originalFetch
+ })
+
+ test('should return default logo when no logos are configured', async () => {
+ const result = await setupBrandingLogo()
+ expect(result).toBe(defaultLogoUrl)
+ })
+
+ test('should return default logo when primary and fallback fetches fail', async () => {
+ setupScreenlyMock(
+ {},
+ {
+ screenly_logo_light: 'http://example.com/logo.png',
+ screenly_logo_dark: '',
+ },
+ )
+ globalThis.fetch = mock(() =>
+ Promise.reject(new Error('Network error')),
+ ) as typeof globalThis.fetch
+ const result = await setupBrandingLogo()
+ expect(result).toBe(defaultLogoUrl)
+ })
+ })
})
diff --git a/edge-apps/edge-apps-library/src/utils/theme.ts b/edge-apps/edge-apps-library/src/utils/theme.ts
index c2189ebd8..53974b516 100644
--- a/edge-apps/edge-apps-library/src/utils/theme.ts
+++ b/edge-apps/edge-apps-library/src/utils/theme.ts
@@ -1,4 +1,5 @@
import type { ThemeColors, BrandingConfig } from '../types/index.js'
+import defaultLogoUrl from '../assets/images/screenly.svg'
/**
* Default theme colors used by Screenly
@@ -169,12 +170,11 @@ export async function fetchLogoImage(fileUrl: string): Promise {
* Setup branding logo from Screenly settings.
*
* Attempts to fetch the logo image using a CORS proxy URL based on the current theme.
- * Falls back to a direct URL if the proxy fetch fails, and returns an empty string if no logo is configured or all fetch attempts fail.
+ * Falls back to a direct URL if the proxy fetch fails, and returns the default logo if no logo is configured or all fetch attempts fail.
*
* @returns {Promise} The processed logo URL:
* - Returns a data URI for SVG images, or the original URL for PNG/JPEG images, if successfully fetched via the CORS proxy or fallback URL.
- * - Returns the fallback URL if all fetch attempts fail but a logo URL is configured.
- * - Returns an empty string if no logo is configured or all fetch attempts fail.
+ * - Returns the default logo URL if no logo is configured or all fetch attempts fail.
*/
export async function setupBrandingLogo(): Promise {
const settings = screenly.settings
@@ -187,20 +187,18 @@ export async function setupBrandingLogo(): Promise {
let logoUrl = ''
let fallbackUrl = ''
- if (theme === 'light') {
- logoUrl = lightLogo
- ? `${screenly.cors_proxy_url}/${lightLogo}`
- : `${screenly.cors_proxy_url}/${darkLogo}`
- fallbackUrl = lightLogo || darkLogo || ''
- } else if (theme === 'dark') {
- logoUrl = darkLogo
- ? `${screenly.cors_proxy_url}/${darkLogo}`
- : `${screenly.cors_proxy_url}/${lightLogo}`
- fallbackUrl = darkLogo || lightLogo || ''
+ const isDark = theme === 'dark'
+ const primaryLogo = isDark ? darkLogo : lightLogo
+ const secondaryLogo = isDark ? lightLogo : darkLogo
+ const resolvedLogo = primaryLogo || secondaryLogo
+
+ if (resolvedLogo) {
+ logoUrl = `${screenly.cors_proxy_url}/${resolvedLogo}`
+ fallbackUrl = resolvedLogo
}
- // Return early if logoUrl is empty
- if (!logoUrl) return ''
+ // Return default logo if no logo is configured
+ if (!fallbackUrl) return defaultLogoUrl
// Try to fetch the image using the CORS proxy URL
try {
return await fetchLogoImage(logoUrl)
@@ -217,8 +215,8 @@ export async function setupBrandingLogo(): Promise {
err,
)
}
- // Return empty string if all fetches fail
- return ''
+ // Return default logo if all fetches fail
+ return defaultLogoUrl
}
/**
@@ -230,6 +228,6 @@ export async function setupBranding(): Promise {
return {
colors,
- logoUrl: logoUrl || undefined,
+ logoUrl,
}
}
diff --git a/edge-apps/simple-message-app/screenshots/1080x1920.webp b/edge-apps/simple-message-app/screenshots/1080x1920.webp
index 1817f5689..744f07286 100644
Binary files a/edge-apps/simple-message-app/screenshots/1080x1920.webp and b/edge-apps/simple-message-app/screenshots/1080x1920.webp differ
diff --git a/edge-apps/simple-message-app/screenshots/1280x720.webp b/edge-apps/simple-message-app/screenshots/1280x720.webp
index 86ae43b15..74d4e6b19 100644
Binary files a/edge-apps/simple-message-app/screenshots/1280x720.webp and b/edge-apps/simple-message-app/screenshots/1280x720.webp differ
diff --git a/edge-apps/simple-message-app/screenshots/1920x1080.webp b/edge-apps/simple-message-app/screenshots/1920x1080.webp
index a8cd57850..4fdc38654 100644
Binary files a/edge-apps/simple-message-app/screenshots/1920x1080.webp and b/edge-apps/simple-message-app/screenshots/1920x1080.webp differ
diff --git a/edge-apps/simple-message-app/screenshots/2160x3840.webp b/edge-apps/simple-message-app/screenshots/2160x3840.webp
index 5a15069c9..c21257acd 100644
Binary files a/edge-apps/simple-message-app/screenshots/2160x3840.webp and b/edge-apps/simple-message-app/screenshots/2160x3840.webp differ
diff --git a/edge-apps/simple-message-app/screenshots/2160x4096.webp b/edge-apps/simple-message-app/screenshots/2160x4096.webp
index 141b22ce0..a226002b6 100644
Binary files a/edge-apps/simple-message-app/screenshots/2160x4096.webp and b/edge-apps/simple-message-app/screenshots/2160x4096.webp differ
diff --git a/edge-apps/simple-message-app/screenshots/3840x2160.webp b/edge-apps/simple-message-app/screenshots/3840x2160.webp
index dcfce68dc..3b9989acf 100644
Binary files a/edge-apps/simple-message-app/screenshots/3840x2160.webp and b/edge-apps/simple-message-app/screenshots/3840x2160.webp differ
diff --git a/edge-apps/simple-message-app/screenshots/4096x2160.webp b/edge-apps/simple-message-app/screenshots/4096x2160.webp
index aac99a275..4686e30b1 100644
Binary files a/edge-apps/simple-message-app/screenshots/4096x2160.webp and b/edge-apps/simple-message-app/screenshots/4096x2160.webp differ
diff --git a/edge-apps/simple-message-app/screenshots/480x800.webp b/edge-apps/simple-message-app/screenshots/480x800.webp
index 6675c6da6..e397a6992 100644
Binary files a/edge-apps/simple-message-app/screenshots/480x800.webp and b/edge-apps/simple-message-app/screenshots/480x800.webp differ
diff --git a/edge-apps/simple-message-app/screenshots/720x1280.webp b/edge-apps/simple-message-app/screenshots/720x1280.webp
index ee7e83809..ce6fb96b8 100644
Binary files a/edge-apps/simple-message-app/screenshots/720x1280.webp and b/edge-apps/simple-message-app/screenshots/720x1280.webp differ
diff --git a/edge-apps/simple-message-app/screenshots/800x480.webp b/edge-apps/simple-message-app/screenshots/800x480.webp
index 8f266b243..908b891e2 100644
Binary files a/edge-apps/simple-message-app/screenshots/800x480.webp and b/edge-apps/simple-message-app/screenshots/800x480.webp differ
diff --git a/edge-apps/simple-timer/screenshots/1080x1920.webp b/edge-apps/simple-timer/screenshots/1080x1920.webp
index 825466ab9..e38505f7c 100644
Binary files a/edge-apps/simple-timer/screenshots/1080x1920.webp and b/edge-apps/simple-timer/screenshots/1080x1920.webp differ
diff --git a/edge-apps/simple-timer/screenshots/1280x720.webp b/edge-apps/simple-timer/screenshots/1280x720.webp
index 0feb71064..4bbfa9d22 100644
Binary files a/edge-apps/simple-timer/screenshots/1280x720.webp and b/edge-apps/simple-timer/screenshots/1280x720.webp differ
diff --git a/edge-apps/simple-timer/screenshots/1920x1080.webp b/edge-apps/simple-timer/screenshots/1920x1080.webp
index 1369afceb..8abd32b43 100644
Binary files a/edge-apps/simple-timer/screenshots/1920x1080.webp and b/edge-apps/simple-timer/screenshots/1920x1080.webp differ
diff --git a/edge-apps/simple-timer/screenshots/2160x3840.webp b/edge-apps/simple-timer/screenshots/2160x3840.webp
index bc207f552..0d718d77e 100644
Binary files a/edge-apps/simple-timer/screenshots/2160x3840.webp and b/edge-apps/simple-timer/screenshots/2160x3840.webp differ
diff --git a/edge-apps/simple-timer/screenshots/2160x4096.webp b/edge-apps/simple-timer/screenshots/2160x4096.webp
index 209e81f13..f757703de 100644
Binary files a/edge-apps/simple-timer/screenshots/2160x4096.webp and b/edge-apps/simple-timer/screenshots/2160x4096.webp differ
diff --git a/edge-apps/simple-timer/screenshots/3840x2160.webp b/edge-apps/simple-timer/screenshots/3840x2160.webp
index c743c5ba4..94e4a9399 100644
Binary files a/edge-apps/simple-timer/screenshots/3840x2160.webp and b/edge-apps/simple-timer/screenshots/3840x2160.webp differ
diff --git a/edge-apps/simple-timer/screenshots/4096x2160.webp b/edge-apps/simple-timer/screenshots/4096x2160.webp
index 0d1b900e7..8c02183f7 100644
Binary files a/edge-apps/simple-timer/screenshots/4096x2160.webp and b/edge-apps/simple-timer/screenshots/4096x2160.webp differ
diff --git a/edge-apps/simple-timer/screenshots/480x800.webp b/edge-apps/simple-timer/screenshots/480x800.webp
index 2ca6a75a7..ff5f72ea0 100644
Binary files a/edge-apps/simple-timer/screenshots/480x800.webp and b/edge-apps/simple-timer/screenshots/480x800.webp differ
diff --git a/edge-apps/simple-timer/screenshots/720x1280.webp b/edge-apps/simple-timer/screenshots/720x1280.webp
index 66afdda3f..6ba8e0aaa 100644
Binary files a/edge-apps/simple-timer/screenshots/720x1280.webp and b/edge-apps/simple-timer/screenshots/720x1280.webp differ
diff --git a/edge-apps/simple-timer/screenshots/800x480.webp b/edge-apps/simple-timer/screenshots/800x480.webp
index 0398c5cf5..2ca08d60e 100644
Binary files a/edge-apps/simple-timer/screenshots/800x480.webp and b/edge-apps/simple-timer/screenshots/800x480.webp differ
diff --git a/edge-apps/weather/screenshots/1080x1920.webp b/edge-apps/weather/screenshots/1080x1920.webp
index 8e2b21d87..a674948f8 100644
Binary files a/edge-apps/weather/screenshots/1080x1920.webp and b/edge-apps/weather/screenshots/1080x1920.webp differ
diff --git a/edge-apps/weather/screenshots/1280x720.webp b/edge-apps/weather/screenshots/1280x720.webp
index 5b3fe54dc..f0daab0e9 100644
Binary files a/edge-apps/weather/screenshots/1280x720.webp and b/edge-apps/weather/screenshots/1280x720.webp differ
diff --git a/edge-apps/weather/screenshots/1920x1080.webp b/edge-apps/weather/screenshots/1920x1080.webp
index 5b7702cdc..bb1d8148b 100644
Binary files a/edge-apps/weather/screenshots/1920x1080.webp and b/edge-apps/weather/screenshots/1920x1080.webp differ
diff --git a/edge-apps/weather/screenshots/2160x3840.webp b/edge-apps/weather/screenshots/2160x3840.webp
index fbed875f1..026fda7e5 100644
Binary files a/edge-apps/weather/screenshots/2160x3840.webp and b/edge-apps/weather/screenshots/2160x3840.webp differ
diff --git a/edge-apps/weather/screenshots/2160x4096.webp b/edge-apps/weather/screenshots/2160x4096.webp
index 7771604ee..03ff58b19 100644
Binary files a/edge-apps/weather/screenshots/2160x4096.webp and b/edge-apps/weather/screenshots/2160x4096.webp differ
diff --git a/edge-apps/weather/screenshots/3840x2160.webp b/edge-apps/weather/screenshots/3840x2160.webp
index 786ee72cd..5cc5d68e1 100644
Binary files a/edge-apps/weather/screenshots/3840x2160.webp and b/edge-apps/weather/screenshots/3840x2160.webp differ
diff --git a/edge-apps/weather/screenshots/4096x2160.webp b/edge-apps/weather/screenshots/4096x2160.webp
index 02f716198..d7ef210de 100644
Binary files a/edge-apps/weather/screenshots/4096x2160.webp and b/edge-apps/weather/screenshots/4096x2160.webp differ
diff --git a/edge-apps/weather/screenshots/480x800.webp b/edge-apps/weather/screenshots/480x800.webp
index fc2c8fe91..2b4ea8828 100644
Binary files a/edge-apps/weather/screenshots/480x800.webp and b/edge-apps/weather/screenshots/480x800.webp differ
diff --git a/edge-apps/weather/screenshots/720x1280.webp b/edge-apps/weather/screenshots/720x1280.webp
index 65b25c645..beb0fe983 100644
Binary files a/edge-apps/weather/screenshots/720x1280.webp and b/edge-apps/weather/screenshots/720x1280.webp differ
diff --git a/edge-apps/weather/screenshots/800x480.webp b/edge-apps/weather/screenshots/800x480.webp
index 07cbf6e08..2cbe5685a 100644
Binary files a/edge-apps/weather/screenshots/800x480.webp and b/edge-apps/weather/screenshots/800x480.webp differ
diff --git a/edge-apps/welcome-app/screenshots/1080x1920.webp b/edge-apps/welcome-app/screenshots/1080x1920.webp
index 33200bac3..7417f36da 100644
Binary files a/edge-apps/welcome-app/screenshots/1080x1920.webp and b/edge-apps/welcome-app/screenshots/1080x1920.webp differ
diff --git a/edge-apps/welcome-app/screenshots/1280x720.webp b/edge-apps/welcome-app/screenshots/1280x720.webp
index a54732320..8cb92f631 100644
Binary files a/edge-apps/welcome-app/screenshots/1280x720.webp and b/edge-apps/welcome-app/screenshots/1280x720.webp differ
diff --git a/edge-apps/welcome-app/screenshots/1920x1080.webp b/edge-apps/welcome-app/screenshots/1920x1080.webp
index b4e8292ee..2b8b96dad 100644
Binary files a/edge-apps/welcome-app/screenshots/1920x1080.webp and b/edge-apps/welcome-app/screenshots/1920x1080.webp differ
diff --git a/edge-apps/welcome-app/screenshots/2160x3840.webp b/edge-apps/welcome-app/screenshots/2160x3840.webp
index 0b51cdb02..50afe9f64 100644
Binary files a/edge-apps/welcome-app/screenshots/2160x3840.webp and b/edge-apps/welcome-app/screenshots/2160x3840.webp differ
diff --git a/edge-apps/welcome-app/screenshots/2160x4096.webp b/edge-apps/welcome-app/screenshots/2160x4096.webp
index f85f654b4..4eab2048c 100644
Binary files a/edge-apps/welcome-app/screenshots/2160x4096.webp and b/edge-apps/welcome-app/screenshots/2160x4096.webp differ
diff --git a/edge-apps/welcome-app/screenshots/3840x2160.webp b/edge-apps/welcome-app/screenshots/3840x2160.webp
index 5ae181540..be35be5ec 100644
Binary files a/edge-apps/welcome-app/screenshots/3840x2160.webp and b/edge-apps/welcome-app/screenshots/3840x2160.webp differ
diff --git a/edge-apps/welcome-app/screenshots/4096x2160.webp b/edge-apps/welcome-app/screenshots/4096x2160.webp
index ab3bd69b9..b2624b584 100644
Binary files a/edge-apps/welcome-app/screenshots/4096x2160.webp and b/edge-apps/welcome-app/screenshots/4096x2160.webp differ
diff --git a/edge-apps/welcome-app/screenshots/480x800.webp b/edge-apps/welcome-app/screenshots/480x800.webp
index 81b7fe931..c7bd155d7 100644
Binary files a/edge-apps/welcome-app/screenshots/480x800.webp and b/edge-apps/welcome-app/screenshots/480x800.webp differ
diff --git a/edge-apps/welcome-app/screenshots/720x1280.webp b/edge-apps/welcome-app/screenshots/720x1280.webp
index 6511d52a2..305819942 100644
Binary files a/edge-apps/welcome-app/screenshots/720x1280.webp and b/edge-apps/welcome-app/screenshots/720x1280.webp differ
diff --git a/edge-apps/welcome-app/screenshots/800x480.webp b/edge-apps/welcome-app/screenshots/800x480.webp
index 4ff115a04..16ee05939 100644
Binary files a/edge-apps/welcome-app/screenshots/800x480.webp and b/edge-apps/welcome-app/screenshots/800x480.webp differ