Compare commits

...

2 Commits

Author SHA1 Message Date
676c205666 Release 1.3.9: fix calls, verified badge on call screens, dark wallpapers
All checks were successful
Android Kernel Build / build (push) Successful in 19m11s
- Revert CallManager to 1.3.6 base (fix broken call encryption)
- Add 45s incoming ring timeout with proper peer notification
- Add verified badge on call history and active call screens
- Add dark wallpapers to theme selector
- Fix wallpaper selector item sizing

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 20:03:32 +05:00
b9ac7791f6 feat: add wallpapers
Some checks failed
Android Kernel Build / build (push) Has been cancelled
2026-03-31 19:57:44 +05:00
9 changed files with 81 additions and 21 deletions

View File

@@ -23,8 +23,8 @@ val gitShortSha = safeGitOutput("rev-parse", "--short", "HEAD") ?: "unknown"
// ═══════════════════════════════════════════════════════════
// Rosetta versioning — bump here on each release
// ═══════════════════════════════════════════════════════════
val rosettaVersionName = "1.3.8"
val rosettaVersionCode = 40 // Increment on each release
val rosettaVersionName = "1.3.9"
val rosettaVersionCode = 41 // Increment on each release
val customWebRtcAar = file("libs/libwebrtc-custom.aar")
android {

View File

@@ -46,6 +46,8 @@ import com.rosetta.messenger.network.CallPhase
import com.rosetta.messenger.network.CallUiState
import com.rosetta.messenger.repository.AvatarRepository
import com.rosetta.messenger.ui.components.AvatarImage
import com.rosetta.messenger.ui.components.VerifiedBadge
import com.rosetta.messenger.data.MessageRepository
import compose.icons.TablerIcons
import compose.icons.tablericons.ChevronDown
@@ -162,15 +164,34 @@ fun CallOverlay(
Spacer(modifier = Modifier.height(24.dp))
// Name
Text(
text = state.displayName,
color = Color.White,
fontSize = 26.sp,
fontWeight = FontWeight.SemiBold,
maxLines = 1,
overflow = TextOverflow.Ellipsis,
modifier = Modifier.padding(horizontal = 48.dp)
)
Row(
modifier = Modifier.padding(horizontal = 48.dp),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.Center
) {
Text(
text = state.displayName,
color = Color.White,
fontSize = 26.sp,
fontWeight = FontWeight.SemiBold,
maxLines = 1,
overflow = TextOverflow.Ellipsis,
modifier = Modifier.weight(1f, fill = false)
)
val isRosettaOfficial = state.peerTitle.equals("Rosetta", ignoreCase = true) ||
state.peerUsername.equals("rosetta", ignoreCase = true) ||
MessageRepository.isSystemAccount(state.peerPublicKey)
val isFreddyVerified = state.peerUsername.equals("freddy", ignoreCase = true) ||
state.peerTitle.equals("freddy", ignoreCase = true)
if (isRosettaOfficial || isFreddyVerified) {
Spacer(modifier = Modifier.width(6.dp))
VerifiedBadge(
verified = 1,
size = 20,
isDarkTheme = true
)
}
}
Spacer(modifier = Modifier.height(6.dp))

View File

@@ -43,6 +43,8 @@ import com.rosetta.messenger.database.RosettaDatabase
import com.rosetta.messenger.network.SearchUser
import com.rosetta.messenger.repository.AvatarRepository
import com.rosetta.messenger.ui.components.AvatarImage
import com.rosetta.messenger.ui.components.VerifiedBadge
import com.rosetta.messenger.data.MessageRepository
import com.rosetta.messenger.ui.onboarding.PrimaryBlue
import compose.icons.TablerIcons
import compose.icons.tablericons.Phone
@@ -226,14 +228,30 @@ private fun CallHistoryRowItem(
Column(
modifier = Modifier.weight(1f)
) {
Text(
text = item.peerTitle,
color = textColor,
fontSize = 16.sp,
fontWeight = FontWeight.SemiBold,
maxLines = 1,
overflow = TextOverflow.Ellipsis
)
Row(verticalAlignment = Alignment.CenterVertically) {
Text(
text = item.peerTitle,
color = textColor,
fontSize = 16.sp,
fontWeight = FontWeight.SemiBold,
maxLines = 1,
overflow = TextOverflow.Ellipsis,
modifier = Modifier.weight(1f, fill = false)
)
val isRosettaOfficial = item.peerTitle.equals("Rosetta", ignoreCase = true) ||
item.peerUsername.equals("rosetta", ignoreCase = true) ||
MessageRepository.isSystemAccount(item.peerKey)
val isFreddyVerified = item.peerUsername.equals("freddy", ignoreCase = true) ||
item.peerTitle.equals("freddy", ignoreCase = true)
if (item.peerVerified > 0 || isRosettaOfficial || isFreddyVerified) {
Spacer(modifier = Modifier.width(4.dp))
VerifiedBadge(
verified = if (item.peerVerified > 0) item.peerVerified else 1,
size = 16,
isDarkTheme = isDarkTheme
)
}
}
Spacer(modifier = Modifier.height(3.dp))
Row(
verticalAlignment = Alignment.CenterVertically

View File

@@ -510,11 +510,11 @@ private fun WallpaperSelectorItem(
Column(
modifier =
Modifier.width(118.dp).clickable(onClick = onClick),
Modifier.width(100.dp).clickable(onClick = onClick),
horizontalAlignment = Alignment.CenterHorizontally
) {
Surface(
modifier = Modifier.fillMaxWidth().height(76.dp),
modifier = Modifier.size(width = 100.dp, height = 76.dp),
shape = RoundedCornerShape(10.dp),
color = if (isDarkTheme) Color(0xFF2C2C2E) else Color.White,
border = androidx.compose.foundation.BorderStroke(if (isSelected) 2.dp else 1.dp, borderColor)

View File

@@ -96,6 +96,27 @@ object ThemeWallpapers {
preferredTheme = WallpaperTheme.DARK,
pairGroup = "pair_4",
drawableRes = R.drawable.wallpaper_back_2
),
ThemeWallpaper(
id = "dark_01",
name = "Dark 1",
preferredTheme = WallpaperTheme.DARK,
pairGroup = "pair_5",
drawableRes = R.drawable.wallpaper_dark_01
),
ThemeWallpaper(
id = "dark_02",
name = "Dark 2",
preferredTheme = WallpaperTheme.DARK,
pairGroup = "pair_5",
drawableRes = R.drawable.wallpaper_dark_02
),
ThemeWallpaper(
id = "dark_03",
name = "Dark 3",
preferredTheme = WallpaperTheme.DARK,
pairGroup = "pair_6",
drawableRes = R.drawable.wallpaper_dark_03
)
)

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB