FIX - keep fixed app canvases theme-safe

Override status-bar foregrounds for apps with intentionally fixed light or dark canvases so indicators stay readable in either system mode. Increase LocalPages light-theme accent contrast after the full app audit.
This commit is contained in:
Leon.Schmidt
2026-08-15 20:04:54 +02:00
parent 14fcfe384d
commit acb71375ec
4 changed files with 42 additions and 0 deletions
+22
View File
@@ -287,6 +287,24 @@ const notifications = useNotificationsStore()
const route = useRoute()
const router = useRouter()
const isAppRoute = computed(() => route.name === 'app')
const activeAppId = computed(() =>
typeof route.params.appId === 'string' ? route.params.appId : '',
)
const WHITE_STATUS_BAR_APP_IDS = new Set([
'calculator',
'camera',
'darkchat',
'fliptok',
'neon-drop',
'sky-flappy',
'snake',
'tower-stack',
])
const DARK_STATUS_BAR_APP_IDS = new Set([
'memory',
'minesweeper',
'number-merge',
])
const isDevelopmentRoute = computed(
() => isDevelopment && route.name === 'development-sky-ui',
)
@@ -1445,6 +1463,10 @@ onBeforeUnmount(() => {
'phone-app--darkchat': route.params.appId === 'darkchat',
'phone-app--light': !phone.isDarkMode,
'phone-app--messages': route.params.appId === 'messages',
'phone-app--status-light':
WHITE_STATUS_BAR_APP_IDS.has(activeAppId),
'phone-app--status-dark':
DARK_STATUS_BAR_APP_IDS.has(activeAppId),
[`phone-app--${phone.preferences.settings.graphicsMode}`]: true,
'phone-app--unlocking': isUnlocking,
}"
+8
View File
@@ -4918,6 +4918,14 @@ button {
.phone-screen--app .phone-app--light .phone-status-bar {
color: #000;
}
.phone-screen--app .phone-app--status-light .phone-status-bar {
color: #fff;
text-shadow: 0 1px 3px #0009;
}
.phone-screen--app .phone-app--status-dark .phone-status-bar {
color: #111;
text-shadow: 0 1px 3px #fff8;
}
* {
scrollbar-width: none;
}
@@ -36,6 +36,17 @@ describe('phone status bar theme contract', () => {
)
})
it('keeps status indicators legible on apps with fixed canvases', () => {
expect(appSource).toContain("'phone-app--status-light'")
expect(appSource).toContain("'phone-app--status-dark'")
expect(styles).toMatch(
/\.phone-screen--app \.phone-app--status-light \.phone-status-bar\s*\{[^}]*color:\s*#fff;/s,
)
expect(styles).toMatch(
/\.phone-screen--app \.phone-app--status-dark \.phone-status-bar\s*\{[^}]*color:\s*#111;/s,
)
})
it('keeps every status indicator bound to the inherited foreground', () => {
expect(indicatorsSource).toMatch(/<Plane[\s\S]*?fill="currentColor"/)
expect(indicatorsSource).toMatch(
@@ -1489,6 +1489,7 @@ onMounted(async () => {
font-family: Inter, system-ui, sans-serif;
}
.pages--light {
--yellow: #8a6500;
--panel: #f0f0eb;
--muted: #737a7d;
background: #fbfbf6;