Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
6f337a9
feat: internationalize ui screens
yet300 Aug 4, 2025
6596651
feat: add new translations
yet300 Aug 4, 2025
11d4a0d
feat: internationalize ui screens
yet300 Aug 4, 2025
0c1c928
feat: add new translations
yet300 Aug 4, 2025
902f01c
feat: add more strings for app info sheet
yet300 Aug 6, 2025
562d357
refactor(ui): use BottomSheet for App Info
yet300 Aug 6, 2025
0cad28c
Merge remote-tracking branch 'origin/main' into feature/chat-ui-impro…
yet300 Aug 6, 2025
4ff9b1a
feat: Add mention string and remove duplicate Ukrainian translation
yet300 Aug 7, 2025
4a24a6d
Refactor message input and dialog components
yet300 Aug 7, 2025
33634fe
Merge pull request #1 from yet300/feature/chat-ui-improvements
yet300 Aug 7, 2025
5655e45
Merge branch 'permissionlesstech:main' into main
yet300 Aug 7, 2025
b3c730e
fix: translation correction
yet300 Aug 7, 2025
3fd7b33
feat: add Arabic translation by @LotfiBoukhemerra
yet300 Aug 22, 2025
bfe7ae3
change Turkish by @aseytekow
yet300 Aug 22, 2025
98bea15
feat: add Czech translation
yet300 Aug 22, 2025
c090550
feat: add Bakhtiari translation
yet300 Aug 22, 2025
50b309f
feat: add Azerbaijani localization
yet300 Aug 22, 2025
3c845c5
feat(i18n): add Italian translation by @riccio8
yet300 Aug 22, 2025
f0f2076
feat: add Hebrew translation
yet300 Aug 22, 2025
47801eb
feat: add per-app language preferences
yet300 Aug 22, 2025
8af1a73
Fix onboarding screens
yet300 Aug 22, 2025
9d32df3
Refactor ChatScreen to use Scaffold
yet300 Aug 22, 2025
6a69802
Enable edge-to-edge display in MainActivity
yet300 Aug 22, 2025
986d6ab
feat: enable predictive back gesture
yet300 Aug 22, 2025
a99a38a
Merge pull request #2 from yet300/feature/chat-ui-edge-to-edge
yet300 Aug 22, 2025
8ec66f1
Merge remote-tracking branch 'upstream/main' into feature/chat-ui-edg…
yet300 Aug 22, 2025
a549844
Merge remote-tracking branch 'upstream/main' into feature/chat-ui-edg…
yet300 Aug 23, 2025
669d0d9
Refactor ChatFloatingHeader and PasswordPromptDialog
yet300 Aug 23, 2025
9c6d513
fix(ui): apply imePadding to TextField instead of Column
yet300 Aug 23, 2025
cd73b9c
Fix UI in bottom sheets
yet300 Aug 23, 2025
c0c5fd3
feat(i18n): add translations for Arabic, Azerbaijani, Bakhtiari, Czec…
yet300 Aug 23, 2025
c9026e0
feat(i18n): add translations for Arabic, Azerbaijani, Bakhtiari, Czec…
yet300 Aug 23, 2025
5d63504
Translate Location & User Sheets, add plurals
yet300 Aug 23, 2025
8fbb600
Refactor LocationChannelsSheet change as AppInfo BSheet
yet300 Aug 23, 2025
d8c1a3c
Merge remote-tracking branch 'upstream/main' into feature/chat-ui-edg…
yet300 Aug 23, 2025
fa88acc
Localize chat action sheet strings and update subtitle
yet300 Aug 23, 2025
c0f6513
NIP-44 v2, geohash relays & UI polish
yet300 Aug 24, 2025
3726b17
Refactor: Remove BottomSheetComponents.kt and second edge-to-edge
yet300 Aug 24, 2025
178de9f
Create domain module with core data models and repository interfaces
cursoragent Aug 25, 2025
7fc4b1b
Merge pull request #3 from yet300/cursor/refactor-android-project-dom…
yet300 Aug 25, 2025
c3a496a
Revert "Create domain module with core data models and repository int…
yet300 Aug 30, 2025
95a7db5
chore: remove incomplete translations
yet300 Aug 30, 2025
6faa707
feat(net): integrate Tor via Arti and improve networking
yet300 Aug 30, 2025
8c5b05e
feat(nostr): implement NIP-44 v2 and Tor support
yet300 Aug 30, 2025
4d57086
feat(i18n): externalize strings in LocationChannelsSheet
yet300 Aug 30, 2025
f5fa562
feat(ui): redesign AboutSheet (#207)
yet300 Aug 30, 2025
0fa5ad3
refactor(ui): improve ChatUserSheet component
yet300 Aug 30, 2025
f8d47b0
feat(ui): use "close" for sheet buttons
yet300 Aug 31, 2025
1782288
feat(pow): add NIP-13 proof-of-work for geohash messages
yet300 Aug 31, 2025
174c0d6
chore: Update nostr relays
yet300 Aug 31, 2025
1b3a429
Automated update of relay data - Sun Sep 7 06:20:11 UTC 2025
actions-user Sep 7, 2025
42e8762
Merge branch 'permissionlesstech:main' into main
yet300 Sep 11, 2025
a09719c
Merge branch 'main' into feature/chat-ui-edge-to-edge
yet300 Sep 11, 2025
7b01f6e
feat: add debug settings string
yet300 Sep 11, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/Theme.BitchatAndroid"
android:localeConfig="@xml/locales_config"
android:enableOnBackInvokedCallback="true"
tools:targetApi="31">
<activity
android:name=".ui.GeohashPickerActivity"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,23 +86,23 @@ private fun BatteryOptimizationEnabledContent(
horizontalAlignment = Alignment.CenterHorizontally
) {
Text(
text = "bitchat",
text = stringResource(R.string.app_name),
style = MaterialTheme.typography.headlineLarge.copy(
fontFamily = FontFamily.Monospace,
fontWeight = FontWeight.Bold,
color = colorScheme.primary
)
)

Spacer(modifier = Modifier.height(16.dp))

Icon(
imageVector = Icons.Outlined.BatteryAlert,
contentDescription = "Battery Optimization",
modifier = Modifier.size(64.dp),
tint = colorScheme.error
)

Text(
text = stringResource(R.string.battery_optimization_detected),
style = MaterialTheme.typography.headlineSmall.copy(
Expand All @@ -111,15 +111,15 @@ private fun BatteryOptimizationEnabledContent(
),
textAlign = TextAlign.Center
)

Text(
text = stringResource(R.string.battery_optimization_explanation),
style = MaterialTheme.typography.bodyLarge.copy(
color = colorScheme.onSurfaceVariant
),
textAlign = TextAlign.Center
)

Card(
modifier = Modifier.fillMaxWidth(),
colors = CardDefaults.cardColors(
Expand All @@ -137,7 +137,7 @@ private fun BatteryOptimizationEnabledContent(
color = colorScheme.onSurface
)
)

Text(
text = stringResource(R.string.battery_optimization_benefits),
style = MaterialTheme.typography.bodyMedium.copy(
Expand All @@ -146,7 +146,7 @@ private fun BatteryOptimizationEnabledContent(
)
}
}

Text(
text = stringResource(R.string.battery_optimization_note),
style = MaterialTheme.typography.bodySmall.copy(
Expand Down Expand Up @@ -210,14 +210,14 @@ private fun BatteryOptimizationCheckingContent(
horizontalAlignment = Alignment.CenterHorizontally
) {
Text(
text = "bitchat",
text = stringResource(R.string.app_name),
style = MaterialTheme.typography.headlineLarge.copy(
fontFamily = FontFamily.Monospace,
fontWeight = FontWeight.Bold,
color = colorScheme.primary
)
)

val infiniteTransition = rememberInfiniteTransition(label = "rotation")
val rotation by infiniteTransition.animateFloat(
initialValue = 0f,
Expand All @@ -228,7 +228,7 @@ private fun BatteryOptimizationCheckingContent(
),
label = "rotation"
)

Icon(
imageVector = Icons.Filled.BatteryStd,
contentDescription = "Checking Battery Optimization",
Expand Down Expand Up @@ -267,14 +267,14 @@ private fun BatteryOptimizationNotSupportedContent(
horizontalAlignment = Alignment.CenterHorizontally
) {
Text(
text = "bitchat",
text = stringResource(R.string.app_name),
style = MaterialTheme.typography.headlineLarge.copy(
fontFamily = FontFamily.Monospace,
fontWeight = FontWeight.Bold,
color = colorScheme.primary
)
)

Icon(
imageVector = Icons.Filled.CheckCircle,
contentDescription = "Battery Optimization Not Supported",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,13 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.rotate
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import com.bitchat.android.R
import com.bitchat.android.ui.theme.BitchatTheme

/**
* Screen shown when checking Bluetooth status or requesting Bluetooth enable
Expand Down Expand Up @@ -69,13 +72,13 @@ private fun BluetoothDisabledContent(
// Bluetooth icon - using Bluetooth outlined icon in app's green color
Icon(
imageVector = Icons.Outlined.Bluetooth,
contentDescription = "Bluetooth",
contentDescription = stringResource(R.string.bluetooth_icon_description),
modifier = Modifier.size(64.dp),
tint = Color(0xFF00C851) // App's main green color
)

Text(
text = "Bluetooth Required",
text = stringResource(R.string.bluetooth_required_title),
style = MaterialTheme.typography.headlineSmall.copy(
fontFamily = FontFamily.Monospace,
fontWeight = FontWeight.Bold,
Expand All @@ -96,7 +99,7 @@ private fun BluetoothDisabledContent(
verticalArrangement = Arrangement.spacedBy(8.dp)
) {
Text(
text = "bitchat needs Bluetooth to:",
text = stringResource(R.string.bluetooth_required_message),
style = MaterialTheme.typography.bodyMedium.copy(
fontWeight = FontWeight.Medium,
color = colorScheme.onSurface
Expand All @@ -106,10 +109,7 @@ private fun BluetoothDisabledContent(
)

Text(
text = "• Discover nearby users\n" +
"• Create mesh network connections\n" +
"• Send and receive messages\n" +
"• Work without internet or servers",
text = stringResource(R.string.bluetooth_required_details),
style = MaterialTheme.typography.bodySmall.copy(
fontFamily = FontFamily.Monospace,
color = colorScheme.onSurface.copy(alpha = 0.8f)
Expand All @@ -133,7 +133,7 @@ private fun BluetoothDisabledContent(
)
) {
Text(
text = "Enable Bluetooth",
text = stringResource(R.string.enable_bluetooth),
style = MaterialTheme.typography.bodyMedium.copy(
fontFamily = FontFamily.Monospace,
fontWeight = FontWeight.Bold
Expand Down Expand Up @@ -184,7 +184,7 @@ private fun BluetoothNotSupportedContent(
}

Text(
text = "Bluetooth Not Supported",
text = stringResource(R.string.bluetooth_not_supported_title),
style = MaterialTheme.typography.headlineSmall.copy(
fontFamily = FontFamily.Monospace,
fontWeight = FontWeight.Bold,
Expand All @@ -201,7 +201,7 @@ private fun BluetoothNotSupportedContent(
elevation = CardDefaults.cardElevation(defaultElevation = 2.dp)
) {
Text(
text = "This device doesn't support Bluetooth Low Energy (BLE), which is required for bitchat to function.\n\nbitchat needs BLE to create mesh networks and communicate with nearby devices without internet.",
text = stringResource(R.string.bluetooth_not_supported_message),
style = MaterialTheme.typography.bodyMedium.copy(
fontFamily = FontFamily.Monospace,
color = colorScheme.onSurface
Expand All @@ -222,7 +222,7 @@ private fun BluetoothCheckingContent(
horizontalAlignment = Alignment.CenterHorizontally
) {
Text(
text = "bitchat",
text = stringResource(R.string.app_name),
style = MaterialTheme.typography.headlineLarge.copy(
fontFamily = FontFamily.Monospace,
fontWeight = FontWeight.Bold,
Expand All @@ -234,7 +234,7 @@ private fun BluetoothCheckingContent(
BluetoothLoadingIndicator()

Text(
text = "Checking Bluetooth status...",
text = stringResource(R.string.checking_bluetooth_status),
style = MaterialTheme.typography.bodyLarge.copy(
fontFamily = FontFamily.Monospace,
color = colorScheme.onSurface.copy(alpha = 0.7f)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,13 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.rotate
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import com.bitchat.android.R

/**
* Loading screen shown during app initialization after permissions are granted
Expand Down Expand Up @@ -59,7 +62,7 @@ fun InitializingScreen(modifier: Modifier) {
) {
// App title
Text(
text = "bitchat",
text = stringResource(R.string.app_name),
style = MaterialTheme.typography.headlineLarge.copy(
fontFamily = FontFamily.Monospace,
fontWeight = FontWeight.Bold,
Expand Down Expand Up @@ -88,7 +91,7 @@ fun InitializingScreen(modifier: Modifier) {
horizontalArrangement = Arrangement.Center
) {
Text(
text = "Initializing mesh network",
text = stringResource(R.string.initializing_mesh_network),
style = MaterialTheme.typography.bodyLarge.copy(
fontFamily = FontFamily.Monospace,
color = colorScheme.onSurface.copy(alpha = 0.7f)
Expand Down Expand Up @@ -123,7 +126,7 @@ fun InitializingScreen(modifier: Modifier) {
horizontalAlignment = Alignment.CenterHorizontally
) {
Text(
text = "Setting up Bluetooth mesh networking...",
text = stringResource(R.string.setting_up_bluetooth_mesh),
style = MaterialTheme.typography.bodyMedium.copy(
fontFamily = FontFamily.Monospace,
color = colorScheme.onSurface.copy(alpha = 0.8f)
Expand All @@ -132,7 +135,7 @@ fun InitializingScreen(modifier: Modifier) {
)

Text(
text = "This should only take a few seconds",
text = stringResource(R.string.setup_duration),
style = MaterialTheme.typography.bodySmall.copy(
fontFamily = FontFamily.Monospace,
color = colorScheme.onSurface.copy(alpha = 0.6f)
Expand Down Expand Up @@ -180,7 +183,7 @@ fun InitializationErrorScreen(
}

Text(
text = "Setup Not Complete",
text = stringResource(R.string.setup_not_complete),
style = MaterialTheme.typography.headlineSmall.copy(
fontFamily = FontFamily.Monospace,
fontWeight = FontWeight.Bold,
Expand Down Expand Up @@ -216,7 +219,7 @@ fun InitializationErrorScreen(
modifier = Modifier.fillMaxWidth()
) {
Text(
text = "Try Again",
text = stringResource(R.string.try_again),
style = MaterialTheme.typography.bodyMedium.copy(
fontFamily = FontFamily.Monospace,
fontWeight = FontWeight.Bold
Expand All @@ -230,7 +233,7 @@ fun InitializationErrorScreen(
modifier = Modifier.fillMaxWidth()
) {
Text(
text = "Open Settings",
text = stringResource(R.string.open_settings),
style = MaterialTheme.typography.bodyMedium.copy(
fontFamily = FontFamily.Monospace
),
Expand Down
Loading