2c2c15b4119d
fix: entry screens respect screenshot toggle, search strip fade gradient (v2.9.33)
- time
- 2026-08-02 01:20 UTC · 2 months ago
- machine
- koh2
- parent
- a7052900f2ea
↓ peach-android-2c2c15b4.tar.gzatlas at this save
files changed3 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 −2app/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 }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()