From 68cd1c120a5126f5bbff2cd61a6f65c12607c2e8 Mon Sep 17 00:00:00 2001 From: Dorian Date: Fri, 19 Jun 2026 16:52:02 +0100 Subject: [PATCH] fix(android): translucent glass DARK controller so backdrop shows through The controller body/face were opaque, so the synthwave backdrop only peeked out above/below the controller. Make the DARK palette surfaces translucent (body/face/inlay) and drop the opaque shadow platform + the gradient's forced 0.95 alpha, so the backdrop reads through the controller as glass. CLASSIC palette stays solid. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../app/ui/components/NESController.kt | 20 ++++++------------- .../ui/components/NESPortraitController.kt | 2 +- 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/Android/app/src/main/java/com/archipelago/app/ui/components/NESController.kt b/Android/app/src/main/java/com/archipelago/app/ui/components/NESController.kt index 05751f9c..6d4cb2b3 100644 --- a/Android/app/src/main/java/com/archipelago/app/ui/components/NESController.kt +++ b/Android/app/src/main/java/com/archipelago/app/ui/components/NESController.kt @@ -83,15 +83,16 @@ val ClassicPalette = NESPalette( inlayBg = Color(0xFF080808), inlayBorder = Color(0xFF999999), ) -// Glassmorphism-black (OS design): #0A0A0A surfaces, subtle white-alpha borders, -// translucent-white buttons. Accents come from each button's ring. +// Glassmorphism-black (OS design): translucent dark surfaces so the backdrop +// shows through the controller, subtle white-alpha borders, translucent-white +// buttons. Accents come from each button's ring. val DarkPalette = NESPalette( - body = Color(0xFF0D0D0F), face = Color(0xFF0A0A0A), ridge = Color(0x14FFFFFF), + body = Color(0xA6121216), face = Color(0x8C0E0E12), ridge = Color(0x14FFFFFF), label = Color(0xFF9A9A9A), labelMuted = Color(0xFF777777), dpad = Color(0xFF202024), dpadHi = Color(0xFF33333A), btn = Color(0x14FFFFFF), btnPress = Color(0x0AFFFFFF), capsule = Color(0x12FFFFFF), capsulePress = Color(0x08FFFFFF), - inlayBg = Color(0xFF0A0A0A), inlayBorder = Color(0x1FFFFFFF), + inlayBg = Color(0x990A0A0A), inlayBorder = Color(0x1FFFFFFF), ) fun paletteFor(style: ControllerStyle) = if (style == ControllerStyle.CLASSIC) ClassicPalette else DarkPalette @@ -119,15 +120,6 @@ fun NESController( .padding(horizontal = 40.dp, vertical = 24.dp), contentAlignment = Alignment.Center, ) { - // Shadow platform - Box( - modifier = Modifier - .fillMaxWidth(0.86f) - .aspectRatio(2.3f) - .padding(top = 6.dp) - .clip(RoundedCornerShape(18.dp)) - .background(Color(0xFF000000)), - ) // Controller body Box( Modifier @@ -136,7 +128,7 @@ fun NESController( .shadow(32.dp, RoundedCornerShape(16.dp), ambientColor = Color(0xFF000000), spotColor = Color(0xFF000000)) .clip(RoundedCornerShape(16.dp)) .background( - Brush.verticalGradient(listOf(c.body, c.body.copy(alpha = 0.95f))) + Brush.verticalGradient(listOf(c.body, c.body)) ) .border(1.dp, Color.White.copy(alpha = if (isClassic) 0.08f else 0.04f), RoundedCornerShape(16.dp)), ) { diff --git a/Android/app/src/main/java/com/archipelago/app/ui/components/NESPortraitController.kt b/Android/app/src/main/java/com/archipelago/app/ui/components/NESPortraitController.kt index 2193d4b8..59fac842 100644 --- a/Android/app/src/main/java/com/archipelago/app/ui/components/NESPortraitController.kt +++ b/Android/app/src/main/java/com/archipelago/app/ui/components/NESPortraitController.kt @@ -61,7 +61,7 @@ fun NESPortraitController( .fillMaxSize() .shadow(28.dp, RoundedCornerShape(20.dp), ambientColor = Color.Black, spotColor = Color.Black) .clip(RoundedCornerShape(20.dp)) - .background(Brush.verticalGradient(listOf(c.body, c.body.copy(alpha = 0.95f)))) + .background(Brush.verticalGradient(listOf(c.body, c.body))) .border(1.dp, Color.White.copy(alpha = if (isClassic) 0.08f else 0.04f), RoundedCornerShape(20.dp)), ) { // Top highlight