2c2c15b4119d

fix: entry screens respect screenshot toggle, search strip fade gradient (v2.9.33)

- Remove SecureFlagEffect from EntryDetailScreen and EntryEditScreen — these were forcing FLAG_SECURE via leases, overriding the user's allow-screenshots preference. The global MainActivity policy now handles it correctly. - EntryDetailSearchStrip: remove border, add 40dp vertical fade gradient above the strip so scrolling content dissolves gently instead of hard-clipping. - Strip sits on solid Bg background with no visible border edge.

time
2026-08-02 01:20 UTC · 2 months ago
machine
koh2
parent
a7052900f2ea
3 files VERSION+1 −1app/src/main/java/com/peachpasswords/ui/vault/EntryDetailScreen.kt+73 −65app/src/main/java/com/peachpasswords/ui/vault/EntryEditScreen.kt+0 −2
VERSION+1 −1
@@ -1 +1 @@1-2.9.321+2.9.33

view file

app/src/main/java/com/peachpasswords/ui/vault/EntryDetailScreen.kt+73 −65
@@ -83,7 +83,6 @@8383 import com.peachpasswords.ui.components.PeachEmptyOrEndState8484 import com.peachpasswords.ui.components.PeachMark8585 import com.peachpasswords.ui.components.PeachTopBar86-import com.peachpasswords.ui.components.SecureFlagEffect8786 import com.peachpasswords.ui.components.TOTPRing8887 import com.peachpasswords.ui.lock.Biometrics8988 import com.peachpasswords.ui.theme.LocalPeachAccent@@ -127,8 +126,6 @@127126     var generatorOpen by remember { mutableStateOf(false) }128127     var historyExpanded by remember { mutableStateOf(false) }129128 130-    SecureFlagEffect()131-132129     val e = entry133130     ShellBackground(modifier) {134131         Box(@@ -741,78 +738,89 @@741738     Column(742739         modifier743740             .fillMaxWidth()744-            .navigationBarsPadding()745-            .padding(horizontal = 16.dp, vertical = 12.dp),746741     ) {747-        Row(748-            Modifier749-                .fillMaxWidth()750-                .height(56.dp)751-                .clip(RoundedCornerShape(16.dp))752-                .background(peachColors.S1)753-                .border(1.dp, peachColors.T3, RoundedCornerShape(16.dp))754-                .padding(horizontal = 12.dp),755-            verticalAlignment = Alignment.CenterVertically,742+        // Gentle fade: scrolling content dissolves into the background743+        // instead of hitting a hard opaque edge.744+        Box(745+            Modifier.fillMaxWidth().height(40.dp)746+                .background(Brush.verticalGradient(listOf(Color.Transparent, peachColors.Bg))),747+        )748+        Column(749+            Modifier.fillMaxWidth()750+                .background(peachColors.Bg)751+                .navigationBarsPadding(),756752         ) {757753             Row(758754                 Modifier759-                    .weight(1f)760-                    .fillMaxHeight()761-                    .clickable(onClick = onOpenList)762-                    .pointerInput(onOpenList) {763-                        var opened = false764-                        detectVerticalDragGestures(765-                            onDragEnd = { opened = false },766-                            onDragCancel = { opened = false },767-                        ) { _, dragAmount ->768-                            if (!opened && dragAmount < -4f) {769-                                opened = true770-                                onOpenList()771-                            }772-                        }773-                    },755+                    .fillMaxWidth()756+                    .padding(horizontal = 16.dp, vertical = 12.dp)757+                    .height(56.dp)758+                    .clip(RoundedCornerShape(16.dp))759+                    .background(peachColors.S1)760+                    .padding(horizontal = 12.dp),774761                 verticalAlignment = Alignment.CenterVertically,775762             ) {763+                Row(764+                    Modifier765+                        .weight(1f)766+                        .fillMaxHeight()767+                        .clickable(onClick = onOpenList)768+                        .pointerInput(onOpenList) {769+                            var opened = false770+                            detectVerticalDragGestures(771+                                onDragEnd = { opened = false },772+                                onDragCancel = { opened = false },773+                            ) { _, dragAmount ->774+                                if (!opened && dragAmount < -4f) {775+                                    opened = true776+                                    onOpenList()777+                                }778+                            }779+                        },780+                    verticalAlignment = Alignment.CenterVertically,781+                ) {782+                    Icon(783+                        Icons.Rounded.Search,784+                        contentDescription = null,785+                        tint = accent,786+                        modifier = Modifier.size(14.dp),787+                    )788+                    Spacer(Modifier.width(8.dp))789+                    Text(790+                        "search vault...",791+                        color = peachColors.T2,792+                        style = PeachType.searchInput,793+                        modifier = Modifier.weight(1f),794+                    )795+                    Text(796+                        counter,797+                        color = peachColors.T2,798+                        style = PeachType.labelMono,799+                    )800+                }801+                Spacer(Modifier.width(8.dp))776802                 Icon(777-                    Icons.Rounded.Search,778-                    contentDescription = null,779-                    tint = accent,780-                    modifier = Modifier.size(14.dp),803+                    Icons.AutoMirrored.Rounded.ArrowBack,804+                    contentDescription = "Previous entry",805+                    tint = if (hasEntries) peachColors.T0 else peachColors.T2,806+                    modifier = Modifier807+                        .size(36.dp)808+                        .clip(RoundedCornerShape(8.dp))809+                        .clickable(enabled = hasEntries, onClick = onPrevious)810+                        .padding(8.dp),781811                 )782-                Spacer(Modifier.width(8.dp))783-                Text(784-                    "search vault...",785-                    color = peachColors.T2,786-                    style = PeachType.searchInput,787-                    modifier = Modifier.weight(1f),812+                Spacer(Modifier.width(4.dp))813+                Icon(814+                    Icons.AutoMirrored.Rounded.ArrowForward,815+                    contentDescription = "Next entry",816+                    tint = if (hasEntries) peachColors.T0 else peachColors.T2,817+                    modifier = Modifier818+                        .size(36.dp)819+                        .clip(RoundedCornerShape(8.dp))820+                        .clickable(enabled = hasEntries, onClick = onNext)821+                        .padding(8.dp),788822                 )789-                Text(790-                    counter,791-                    color = peachColors.T2,792-                    style = PeachType.labelMono,793-                )794823             }795-            Spacer(Modifier.width(8.dp))796-            Icon(797-                Icons.AutoMirrored.Rounded.ArrowBack,798-                contentDescription = "Previous entry",799-                tint = if (hasEntries) peachColors.T0 else peachColors.T2,800-                modifier = Modifier801-                    .size(38.dp)802-                    .clip(CircleShape)803-                    .clickable(enabled = hasEntries, onClick = onPrevious)804-                    .padding(9.dp),805-            )806-            Icon(807-                Icons.AutoMirrored.Rounded.ArrowForward,808-                contentDescription = "Next entry",809-                tint = if (hasEntries) peachColors.T0 else peachColors.T2,810-                modifier = Modifier811-                    .size(38.dp)812-                    .clip(CircleShape)813-                    .clickable(enabled = hasEntries, onClick = onNext)814-                    .padding(9.dp),815-            )816824         }817825     }818826 }

view file

app/src/main/java/com/peachpasswords/ui/vault/EntryEditScreen.kt+0 −2
@@ -48,7 +48,6 @@4848 import com.peachpasswords.ui.components.PeachSegment4949 import com.peachpasswords.ui.components.PeachSegmentedControl5050 import com.peachpasswords.ui.components.PeachTopBar51-import com.peachpasswords.ui.components.SecureFlagEffect5251 import com.peachpasswords.ui.theme.LocalPeachAccent5352 import com.peachpasswords.ui.theme.PeachMotion5453 import com.peachpasswords.ui.theme.PeachRadius@@ -64,7 +63,6 @@6463     onOpenNote: (String) -> Unit = {},6564     vm: EntryEditViewModel = hiltViewModel(),6665 ) {67-    SecureFlagEffect()6866     val f by vm.form.collectAsState()6967     val usernameSuggestions by vm.usernameSuggestions.collectAsState()7068     val emailSuggestions by vm.emailSuggestions.collectAsState()

view file