From a1c36a8a03d972dfe3d56a3aa98371404d89c488 Mon Sep 17 00:00:00 2001 From: Guido Schmit Date: Sun, 31 May 2026 12:48:53 +0200 Subject: [PATCH] fix: green brand theme, iOS launcher icon, password reveal, real login error - Theme primary now the iOS brand green (#20A050), fixed app-wide (was tied to the server's blue primary_color) - Launcher icon generated from the iOS AppIcon across all densities; dropped the placeholder adaptive icon - PasswordField: eye toggle + brief last-character reveal; used on login, profile and CalDAV password inputs - Login now surfaces the server's actual error detail (verified the JSON contract against the live server; a 401 is a genuine credential mismatch) - CLAUDE.md: correct prod base URL to calendar.scarriffle.com Co-Authored-By: Claude Opus 4.8 --- .../calendarr/data/CalendarRepository.kt | 2 +- .../calendarr/data/remote/ApiException.kt | 4 +- .../calendarr/ui/accounts/AccountsScreen.kt | 3 +- .../calendarr/ui/auth/LoginScreen.kt | 12 +-- .../calendarr/ui/components/PasswordField.kt | 88 ++++++++++++++++++ .../calendarr/ui/profile/ProfileScreen.kt | 10 +- .../scarriffle/calendarr/ui/theme/Theme.kt | 18 ++-- .../res/drawable/ic_launcher_foreground.xml | 27 ------ .../res/mipmap-anydpi-v26/ic_launcher.xml | 4 - .../mipmap-anydpi-v26/ic_launcher_round.xml | 4 - app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3694 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 3694 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2260 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2260 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 5324 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 5324 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 8986 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 8986 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 12848 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 12848 bytes .../main/res/values/ic_launcher_colors.xml | 3 - claude.md | 2 +- 22 files changed, 113 insertions(+), 64 deletions(-) create mode 100644 app/src/main/java/com/scarriffle/calendarr/ui/components/PasswordField.kt delete mode 100644 app/src/main/res/drawable/ic_launcher_foreground.xml delete mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml delete mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png delete mode 100644 app/src/main/res/values/ic_launcher_colors.xml diff --git a/app/src/main/java/com/scarriffle/calendarr/data/CalendarRepository.kt b/app/src/main/java/com/scarriffle/calendarr/data/CalendarRepository.kt index 2b3b18c..6aadd8b 100644 --- a/app/src/main/java/com/scarriffle/calendarr/data/CalendarRepository.kt +++ b/app/src/main/java/com/scarriffle/calendarr/data/CalendarRepository.kt @@ -79,7 +79,7 @@ class CalendarRepository @Inject constructor( JSONObject(resp.errorBody()?.string() ?: "").optString("detail") }.getOrNull() if (detail == "2fa_required") throw TwoFactorRequiredException() - throw UnauthorizedException() + throw UnauthorizedException(detail?.takeIf { it.isNotBlank() } ?: "Benutzername oder Passwort falsch") } if (!resp.isSuccessful) throw ApiException(errorDetail(resp.errorBody(), resp.code())) diff --git a/app/src/main/java/com/scarriffle/calendarr/data/remote/ApiException.kt b/app/src/main/java/com/scarriffle/calendarr/data/remote/ApiException.kt index 526e52b..07babf5 100644 --- a/app/src/main/java/com/scarriffle/calendarr/data/remote/ApiException.kt +++ b/app/src/main/java/com/scarriffle/calendarr/data/remote/ApiException.kt @@ -7,8 +7,8 @@ import retrofit2.Response /** Generic server error carrying the `detail` message when available. */ open class ApiException(message: String) : Exception(message) -/** Credentials rejected (HTTP 401, not a 2FA prompt). */ -class UnauthorizedException : ApiException("Benutzername oder Passwort falsch") +/** Credentials rejected (HTTP 401, not a 2FA prompt). Carries the server detail. */ +class UnauthorizedException(message: String = "Benutzername oder Passwort falsch") : ApiException(message) /** Server requires a TOTP code to finish login (HTTP 401, detail "2fa_required"). */ class TwoFactorRequiredException : ApiException("2FA-Code erforderlich") diff --git a/app/src/main/java/com/scarriffle/calendarr/ui/accounts/AccountsScreen.kt b/app/src/main/java/com/scarriffle/calendarr/ui/accounts/AccountsScreen.kt index 9888702..3ee3902 100644 --- a/app/src/main/java/com/scarriffle/calendarr/ui/accounts/AccountsScreen.kt +++ b/app/src/main/java/com/scarriffle/calendarr/ui/accounts/AccountsScreen.kt @@ -40,6 +40,7 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel +import com.scarriffle.calendarr.ui.components.PasswordField import com.scarriffle.calendarr.ui.tr import com.scarriffle.calendarr.util.colorFromHex @@ -193,7 +194,7 @@ private fun CalDAVDialog(onDismiss: () -> Unit, onConfirm: (String, String, Stri Spacer(Modifier.size(8.dp)) OutlinedTextField(user, { user = it }, label = { Text(tr("caldav.username")) }, singleLine = true, modifier = Modifier.fillMaxWidth()) Spacer(Modifier.size(8.dp)) - OutlinedTextField(pass, { pass = it }, label = { Text(tr("caldav.password")) }, singleLine = true, visualTransformation = androidx.compose.ui.text.input.PasswordVisualTransformation(), modifier = Modifier.fillMaxWidth()) + PasswordField(pass, { pass = it }, label = tr("caldav.password"), modifier = Modifier.fillMaxWidth()) } } diff --git a/app/src/main/java/com/scarriffle/calendarr/ui/auth/LoginScreen.kt b/app/src/main/java/com/scarriffle/calendarr/ui/auth/LoginScreen.kt index d730125..bc0f85d 100644 --- a/app/src/main/java/com/scarriffle/calendarr/ui/auth/LoginScreen.kt +++ b/app/src/main/java/com/scarriffle/calendarr/ui/auth/LoginScreen.kt @@ -26,10 +26,10 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.KeyboardType -import androidx.compose.ui.text.input.PasswordVisualTransformation import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import com.scarriffle.calendarr.data.CredentialStore +import com.scarriffle.calendarr.ui.components.PasswordField import com.scarriffle.calendarr.ui.tr @Composable @@ -63,16 +63,10 @@ fun LoginScreen( modifier = Modifier.fillMaxWidth(), ) Spacer(Modifier.height(12.dp)) - OutlinedTextField( + PasswordField( value = vm.password, onValueChange = vm::onPasswordChange, - label = { Text(tr("auth.password")) }, - singleLine = true, - visualTransformation = PasswordVisualTransformation(), - keyboardOptions = KeyboardOptions( - keyboardType = KeyboardType.Password, - imeAction = ImeAction.Done, - ), + label = tr("auth.password"), modifier = Modifier.fillMaxWidth(), ) AnimatedVisibility(vm.showTotp) { diff --git a/app/src/main/java/com/scarriffle/calendarr/ui/components/PasswordField.kt b/app/src/main/java/com/scarriffle/calendarr/ui/components/PasswordField.kt new file mode 100644 index 0000000..dec4292 --- /dev/null +++ b/app/src/main/java/com/scarriffle/calendarr/ui/components/PasswordField.kt @@ -0,0 +1,88 @@ +package com.scarriffle.calendarr.ui.components + +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Visibility +import androidx.compose.material.icons.filled.VisibilityOff +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.OutlinedTextField +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.input.ImeAction +import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.text.input.OffsetMapping +import androidx.compose.ui.text.input.PasswordVisualTransformation +import androidx.compose.ui.text.input.TransformedText +import androidx.compose.ui.text.input.VisualTransformation +import kotlinx.coroutines.delay + +/** + * Password input with two affordances the plain field lacks: + * - an eye toggle to reveal the full value, and + * - a brief reveal of the most recently typed character (~1.2s) so the user + * can tell whether a keystroke landed as intended. + */ +@Composable +fun PasswordField( + value: String, + onValueChange: (String) -> Unit, + label: String, + modifier: Modifier = Modifier, + imeAction: ImeAction = ImeAction.Done, +) { + var fullyVisible by remember { mutableStateOf(false) } + var revealLast by remember { mutableStateOf(false) } + + // Reveal the last character briefly after each change. + LaunchedEffect(value) { + if (value.isNotEmpty() && !fullyVisible) { + revealLast = true + delay(1200) + revealLast = false + } else { + revealLast = false + } + } + + val transformation = when { + fullyVisible -> VisualTransformation.None + revealLast -> LastCharVisibleTransformation + else -> PasswordVisualTransformation() + } + + OutlinedTextField( + value = value, + onValueChange = onValueChange, + label = { Text(label) }, + singleLine = true, + visualTransformation = transformation, + keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Password, imeAction = imeAction), + trailingIcon = { + IconButton(onClick = { fullyVisible = !fullyVisible }) { + Icon( + imageVector = if (fullyVisible) Icons.Filled.VisibilityOff else Icons.Filled.Visibility, + contentDescription = null, + ) + } + }, + modifier = modifier, + ) +} + +/** Masks every character except the last with a bullet. 1:1 char mapping → identity offsets. */ +private val LastCharVisibleTransformation = object : VisualTransformation { + override fun filter(text: AnnotatedString): TransformedText { + val masked = buildString { + for (i in text.indices) append(if (i == text.lastIndex) text[i] else '•') + } + return TransformedText(AnnotatedString(masked), OffsetMapping.Identity) + } +} diff --git a/app/src/main/java/com/scarriffle/calendarr/ui/profile/ProfileScreen.kt b/app/src/main/java/com/scarriffle/calendarr/ui/profile/ProfileScreen.kt index 80d8061..d81c160 100644 --- a/app/src/main/java/com/scarriffle/calendarr/ui/profile/ProfileScreen.kt +++ b/app/src/main/java/com/scarriffle/calendarr/ui/profile/ProfileScreen.kt @@ -32,9 +32,9 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.text.input.PasswordVisualTransformation import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel +import com.scarriffle.calendarr.ui.components.PasswordField import com.scarriffle.calendarr.ui.tr @OptIn(ExperimentalMaterial3Api::class) @@ -105,11 +105,11 @@ private fun PasswordSection(vm: ProfileViewModel) { var localError by remember { mutableStateOf(null) } SectionTitle(tr("profile.change_password")) - OutlinedTextField(value = current, onValueChange = { current = it }, label = { Text(tr("profile.current_password")) }, singleLine = true, visualTransformation = PasswordVisualTransformation(), modifier = Modifier.fillMaxWidth()) + PasswordField(value = current, onValueChange = { current = it }, label = tr("profile.current_password"), modifier = Modifier.fillMaxWidth()) Spacer(Modifier.size(8.dp)) - OutlinedTextField(value = new1, onValueChange = { new1 = it }, label = { Text(tr("profile.new_password")) }, singleLine = true, visualTransformation = PasswordVisualTransformation(), modifier = Modifier.fillMaxWidth()) + PasswordField(value = new1, onValueChange = { new1 = it }, label = tr("profile.new_password"), modifier = Modifier.fillMaxWidth()) Spacer(Modifier.size(8.dp)) - OutlinedTextField(value = new2, onValueChange = { new2 = it }, label = { Text(tr("profile.new_password_repeat")) }, singleLine = true, visualTransformation = PasswordVisualTransformation(), modifier = Modifier.fillMaxWidth()) + PasswordField(value = new2, onValueChange = { new2 = it }, label = tr("profile.new_password_repeat"), modifier = Modifier.fillMaxWidth()) localError?.let { Text(it, color = MaterialTheme.colorScheme.error, style = MaterialTheme.typography.bodySmall) } Spacer(Modifier.size(8.dp)) Button(onClick = { @@ -127,7 +127,7 @@ private fun TwoFactorSection(vm: ProfileViewModel) { Text(if (enabled) tr("profile.twofa.active") else tr("profile.twofa.inactive"), color = MaterialTheme.colorScheme.onSurfaceVariant, style = MaterialTheme.typography.bodyMedium) Spacer(Modifier.size(8.dp)) if (enabled) { - OutlinedTextField(value = disablePw, onValueChange = { disablePw = it }, label = { Text(tr("twofa.password_placeholder")) }, singleLine = true, visualTransformation = PasswordVisualTransformation(), modifier = Modifier.fillMaxWidth()) + PasswordField(value = disablePw, onValueChange = { disablePw = it }, label = tr("twofa.password_placeholder"), modifier = Modifier.fillMaxWidth()) Spacer(Modifier.size(8.dp)) OutlinedButton(onClick = { vm.disable2fa(disablePw); disablePw = "" }) { Text(tr("profile.twofa.disable")) } } else { diff --git a/app/src/main/java/com/scarriffle/calendarr/ui/theme/Theme.kt b/app/src/main/java/com/scarriffle/calendarr/ui/theme/Theme.kt index 7a5057e..eb64f06 100644 --- a/app/src/main/java/com/scarriffle/calendarr/ui/theme/Theme.kt +++ b/app/src/main/java/com/scarriffle/calendarr/ui/theme/Theme.kt @@ -10,23 +10,27 @@ import com.scarriffle.calendarr.util.colorFromHex import com.scarriffle.calendarr.util.contrastingTextColor /** - * The Calendarr UI is a dark theme whose accent colours follow the user's - * synced [AppSettings] (mirrors the iOS appearance settings). + * The Calendarr brand accent — the green from the iOS `AccentColor` asset + * (#20A050). This drives the global control tint (buttons, FAB, switches, + * top bar) regardless of the server's per-calendar colours, matching iOS + * where the app tint is fixed and `primary_color` only styles calendar + * elements (e.g. the "today" highlight, read from [AppSettings]). */ +val BrandGreen = Color(0xFF20A050) + @Composable fun CalendarrTheme( settings: AppSettings = AppSettings(), content: @Composable () -> Unit, ) { - val primary = colorFromHex(settings.primaryColor, Color(0xFF4285F4)) - val accent = colorFromHex(settings.accentColor, Color(0xFFEA4335)) + val primary = BrandGreen val colors = darkColorScheme( primary = primary, onPrimary = primary.contrastingTextColor(), - secondary = accent, - onSecondary = accent.contrastingTextColor(), - tertiary = accent, + secondary = primary, + onSecondary = primary.contrastingTextColor(), + tertiary = primary, background = Color(0xFF000000), onBackground = Color(0xFFF2F2F7), surface = Color(0xFF1C1C1E), diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml deleted file mode 100644 index 8ed8511..0000000 --- a/app/src/main/res/drawable/ic_launcher_foreground.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml deleted file mode 100644 index c7bd273..0000000 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml deleted file mode 100644 index c7bd273..0000000 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..59317c13e436b74c838b42c50c0100ba75fdc844 GIT binary patch literal 3694 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 M07*qoM6N<$f`ilZ761SM literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..59317c13e436b74c838b42c50c0100ba75fdc844 GIT binary patch literal 3694 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 M07*qoM6N<$f`ilZ761SM literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..c84e2e5fd069e8aa04a1d95596bf5cd629c44d6e GIT binary patch literal 2260 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­ZgD__rJ|-I@t$ey<2_;{Vr589fNFe^L(yV70yz zw0Ut|u!dM7NA1qu7Gsj*N(PBNS#~cZ+^bq0^;GUT(-Dkm25#Q>(vCnLx75(4KH>0XWQ-L+KZMzD*>q+(DgN6f@uKsHyr&rY| zEtf%3p|ZVI^o;wE2M{KMAc^1E3K_UQO{Hoh?mhl)oZbsCsNwm`zAi31##b1hQ&8qE3xy1L56;kT8G#ZP}h z`vI*i;78j~PHH+qHN@yMq9Jnr)MstpuyrJ#7j$q~PNBkRdf>1K-qDl#M1g*Wn~ zp(xFS;7y*8o3ZkvH0P_6I{C}-?$rF=hO4HVvyNruaP~~r#)Chol1)qma&=?#zPwZb z<7q~Sl;~N1#iBqRQr(b9isEQxc`CG0YG@IGpuYMU4+~#rn5`*C+x~sUa6OU&?tM4{ z%w%Qi{!YRuylhkMW+FJBhA-ZZoYE(SVhiQsfn+KGkq|^(VGKjnwa5x(HmHOdR%8av}6Q+PxmY2G)`7`;2O_7P)P`!YQ zDb4(Av!P5I2za0|?a3(Xr|?{tU$5G#FZdVbj(%*_?a9xa)N&XRa!k0}l(qhu{ z6!-A~bxg%rb{h#NHkxmfPI3|5J!J0+COTV|N_eP3B!ifz#YW`+*q)AG23%WWt)dlZ>b1ZSW!OU4sAJiLtn( zAFgbq`ibzZSjK6<7UK_9Hxt$~?8d?I*I`zd`rMnt&%}vd3IVyF7!sE0jv{l-E5|;6 z*^Yf>(QUz0S(94$y>%c#~oA><%952#`4(mHSmk&44 z?<71HXM=9u8Vne!-lL_G%c%xNA?bT5(wZ9`;`@k0r(lIf|r zx#azCzRrC5-k>Aoee`#K|Mer)p>Q@f>Epg92hZ@%D&@}gTGD-E4WEdyREH1^9=s4J zt*X4EF9dUlE`9K)!b9^m6=e0<*Z9vKjBgn1ep;qNh@X&=r+`JD)wDq6DODp2Qo6m1C=GjVT@yI%T*44$$n@@GF00RDAU zdGndK)Fu&wJfL6(a$k$lh@{Nm#R-E=e)*QMA|DYM{B$`GdGr5g z_xfXya?AjQi96uCP7gi^8$4jiO;)Ii)G?DOmyCUl2->jmc_(=rXn|oz(>!2_2`&#M zRs+2|Kj+!cY4?&UHUHB6bETXu#FIUB0QMFT{Dr8xhdf||yo*F9AK7I{jF;`&CN76d zxVcC#Gat;cyvdpN6ifUzK@A9w(&Jy$jctcqnlQv*4{;YvV~21}Cb-1&FO*^ob@k=v<1 z5ar)k1s<-#Kv~V;%UX|+qkW4T?p722gl68$SiUjf4?#m{Ux{gQUq$84y@fgzp>^G8 zVE+`sp_Qsb#j)dJH}PiU!|G4`e?1m*pRbvD5>+F7Q`nl+~BK=z4uHI zjfaS52$U zfsbh?=L3Ve;=cb8X&;xmtl356++nDvqvODKk%IIq|=GNvi>Pyq;k!5+5 zzQT=;p%JcoQb|4ZAa{F1I33-mkutFVgnzMBcMO0eE7^mv4(z097u+@lDBv{0rVHIW zz9=Mx_jIkBv%W#JHg}l8f=)cGje3)^k;`A zJNn>bc*W6SAzhx=`{&qp{oEY#=2scgZOFoZXJ$Jnw2 zLpl-_E!pGK)$yhcz|#kT?xF9ATaU9}ze6DlN#(ZBsE8&9b~O3B#|3YzHc2&oHmo%{ ul=y*UJim<^@H&Ts@uQRuT(?X9nhhy?SDZ{P?BCxbp87Lwl?o-Ru>S$V(ia2( literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..78751869f53ade5a7ee8d052dc1f7f209690b8a8 GIT binary patch literal 5324 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­ZgD__rJ|-I@t$ey<2_;{Vr589fNFe^L(yV70yz zw0Ut|u!dM7NA1qu7Gsj*N(PBNS#~cZ+^bq0^;GUT(-Dkm25#Q>(vCnLx75(4KH>0XWQ-L+KZMzD*>q+(DgN6f@uKsHyr&rY| zEtf%3p|ZVI^o;wE2M{KMAc^1E3K_UQO{Hoh?mhl)oZbsCsNwm`zAi31##b1hQ&8qE3xy1L56;kT8G#ZP}h z`vI*i;78j~PHH+qHN@yMq9Jnr)MstpuyrJ#7j$q~PNBkRdf>1K-qDl#M1g*Wn~ zp(xFS;7y*8o3ZkvH0P_6I{C}-?$rF=hO4HVvyNruaP~~r#)Chol1)qma&=?#zPwZb z<7q~Sl;~N1#iBqRQr(b9isEQxc`CG0YG@IGpuYMU4+~#rn5`*C+x~sUa6OU&?tM4{ z%w%Qi{!YRuylhkMW+FJBhA-ZZoYE(SVhiQsfn+KGkq|^(VGKjnwa5x(HmHOdR%8av}6Q+PxmY2G)`7`;2O_7P)P`!YQ zDb4(Av!P5I2za0|?a3(Xr|?{tU$5G#FZdVbj(%*_?a9xa)N&XRa!k0}l(qhu{ z6!-A~bxg%rb{h#NHkxmfPI3|5J!J0+COTV|N_eP3B!ifz#YW`+*q)AG23%WWt)dlZ>b1ZSW!OU4sAJiLtn( zAFgbq`ibzZSjK6<7UK_9Hxt$~?8d?I*I`zd`rMnt&%}vd3IVyF7!sE0jv{l-E5|;6 z*^Yf>(QUz0S(94$y>%c#~oA><%952#`4(mHSmk&44 z?<71HXM=9u8Vne!-lL_G%c%xNA?bT5(wZ9`;`@k0r(lIf|r zx#azCzRrC5-k>Aoee`#K|Mer)p>Q@f>Epg92hZ@%D&@}gTGD-E4WEdyREH1^9=s4J zt*X4EF9dUlE`9K)!b9^m6=e0<*Z9vKjBgn1ep;qNh@X&=r+`JD)wDq6DODp2Qo6m1C=GjVT@yI%T*44$$n@@GF00RDAU zdGndK)Fu&wJfL6(a$k$lh@{Nm#R-E=e)*QMA|DYM{B$`GdGr5g z_xfXya?AjQi96uCP7gi^8$4jiO;)Ii)G?DOmyCUl2->jmc_(=rXn|oz(>!2_2`&#M zRs+2|Kj+!cY4?&UHUHB6bETXu#FIUB0QMFT{Dr8xhdf||yo*F9AK7I{jF;`&CN76d zxVcC#Gat;cyvdpN6ifUzK@A9w(&Jy$jctcqnlQv*4{;YvV~21}Cb-1&FO*^ob@k=v<1 z5ar)k1s<-#Kv~V;%UX|+qkW4T?p722gl68$SiUjf4?#m{Ux{gQUq$84y@fgzp>^G8 zVE+`sp_Qsb#j)dJH}PiU!|G4`e?1m*pRbvD5>+F7Q`nl+~BK=z4uHI zjfaS52$U zfsbh?=L3Ve;=cb8X&;xmtl356++nDvqvODKk%IIq|=GNvi>Pyq;k!5+5 zzQT=;p%JcoQb|4ZAa{F1I33-mkutFVgnzMBcMO0eE7^mv4(z097u+@lDBv{0rVHIW zz9=Mx_jIkBv%W#JHg}l8f=)cGje3)^k;`A zJNn>bc*W6SAzhx=`{&qp{oEY#=2scgZOFoZXJ$Jnw2 zLpl-_E!pGK)$yhcz|#kT?xF9ATaU9}ze6DlN#(ZBsE8&9b~O3B#|3YzHc2&oHmo%{ ul=y*UJim<^@H&Ts@uQRuT(?X9nhhy?SDZ{P?BCxbp87Lwl?o-Ru>S$V(ia2( literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..a99ac08f6f5bc739197a01db4fc4b375e71c19ee GIT binary patch literal 8986 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 - #0B1220 - diff --git a/claude.md b/claude.md index 727de27..3e5f040 100644 --- a/claude.md +++ b/claude.md @@ -12,7 +12,7 @@ Die folgenden Ordner dienen NUR zur Referenz. NIEMALS Dateien darin verändern, Alle Änderungen und neue Dateien kommen ausschliesslich in `../Calendarr Android/`. ## Server -- Basis-URL (Prod): https://cal.scarriffle.com +- Basis-URL (Prod): https://calendar.scarriffle.com - Auth: Erst Server-URL eingeben, dann Benutzername + Passwort - Credentials werden auf Android im EncryptedSharedPreferences gespeichert (Äquivalent zu Apple Keychain)