feat(about): add Ko-fi support link
Add an optional way for users to support development: - About card: tonal "Support development" button opening ko-fi.com via ACTION_VIEW (no INTERNET permission), EN + DE strings - F-Droid metadata: Donate field in self-hosted and official drafts - README: short Support section with the Ko-fi link No perks/rewards attached — kept as a plain donation link. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
11
README.md
11
README.md
@@ -115,6 +115,17 @@ Next up: power-user features — widget, search, tablet layouts. The living
|
|||||||
roadmap is in [.planning/ROADMAP.md](.planning/ROADMAP.md), the release
|
roadmap is in [.planning/ROADMAP.md](.planning/ROADMAP.md), the release
|
||||||
history in [CHANGELOG.md](CHANGELOG.md).
|
history in [CHANGELOG.md](CHANGELOG.md).
|
||||||
|
|
||||||
|
## 💛 Support
|
||||||
|
|
||||||
|
Calendula is free, open source, and built by one person in their own time —
|
||||||
|
with no ads, no tracking, and no internet permission. If it makes your days a
|
||||||
|
little calmer and you'd like to support its continued development, you can buy
|
||||||
|
me a coffee:
|
||||||
|
|
||||||
|
[**☕ ko-fi.com/jeanlucmakiola**](https://ko-fi.com/jeanlucmakiola)
|
||||||
|
|
||||||
|
Entirely optional, always appreciated. 🌼
|
||||||
|
|
||||||
## 📜 License
|
## 📜 License
|
||||||
|
|
||||||
[MIT](LICENSE) — Jean-Luc Makiola, 2026
|
[MIT](LICENSE) — Jean-Luc Makiola, 2026
|
||||||
|
|||||||
@@ -42,11 +42,13 @@ import androidx.compose.material.icons.filled.CalendarMonth
|
|||||||
import androidx.compose.material.icons.filled.Check
|
import androidx.compose.material.icons.filled.Check
|
||||||
import androidx.compose.material.icons.filled.ExpandLess
|
import androidx.compose.material.icons.filled.ExpandLess
|
||||||
import androidx.compose.material.icons.filled.ExpandMore
|
import androidx.compose.material.icons.filled.ExpandMore
|
||||||
|
import androidx.compose.material.icons.filled.Favorite
|
||||||
import androidx.compose.material.icons.filled.Gavel
|
import androidx.compose.material.icons.filled.Gavel
|
||||||
import androidx.compose.material.icons.filled.Language
|
import androidx.compose.material.icons.filled.Language
|
||||||
import androidx.compose.material.icons.filled.Notifications
|
import androidx.compose.material.icons.filled.Notifications
|
||||||
import androidx.compose.material.icons.filled.Palette
|
import androidx.compose.material.icons.filled.Palette
|
||||||
import androidx.compose.material.icons.filled.Tune
|
import androidx.compose.material.icons.filled.Tune
|
||||||
|
import androidx.compose.material3.FilledTonalButton
|
||||||
import androidx.compose.material3.Icon
|
import androidx.compose.material3.Icon
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material3.OutlinedButton
|
import androidx.compose.material3.OutlinedButton
|
||||||
@@ -292,6 +294,7 @@ private fun AboutCard() {
|
|||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
val sourceUrl = stringResource(R.string.about_source_url)
|
val sourceUrl = stringResource(R.string.about_source_url)
|
||||||
val licenseUrl = stringResource(R.string.about_license_url)
|
val licenseUrl = stringResource(R.string.about_license_url)
|
||||||
|
val supportUrl = stringResource(R.string.about_support_url)
|
||||||
|
|
||||||
Surface(
|
Surface(
|
||||||
color = MaterialTheme.colorScheme.surfaceContainerHigh,
|
color = MaterialTheme.colorScheme.surfaceContainerHigh,
|
||||||
@@ -350,6 +353,19 @@ private fun AboutCard() {
|
|||||||
Text(stringResource(R.string.settings_license))
|
Text(stringResource(R.string.settings_license))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Spacer(Modifier.height(8.dp))
|
||||||
|
FilledTonalButton(
|
||||||
|
onClick = { openUrl(context, supportUrl) },
|
||||||
|
modifier = Modifier.fillMaxWidth(),
|
||||||
|
) {
|
||||||
|
Icon(
|
||||||
|
Icons.Default.Favorite,
|
||||||
|
contentDescription = null,
|
||||||
|
modifier = Modifier.size(18.dp),
|
||||||
|
)
|
||||||
|
Spacer(Modifier.width(8.dp))
|
||||||
|
Text(stringResource(R.string.settings_about_support))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -315,6 +315,7 @@
|
|||||||
<string name="settings_license_value">MIT</string>
|
<string name="settings_license_value">MIT</string>
|
||||||
<string name="settings_about_author">von Jean-Luc Makiola</string>
|
<string name="settings_about_author">von Jean-Luc Makiola</string>
|
||||||
<string name="settings_about_source">Quellcode</string>
|
<string name="settings_about_source">Quellcode</string>
|
||||||
|
<string name="settings_about_support">Entwicklung unterstützen</string>
|
||||||
<string name="settings_about_version">Version %1$s</string>
|
<string name="settings_about_version">Version %1$s</string>
|
||||||
<string name="settings_about_logo_desc">Calendula-App-Symbol</string>
|
<string name="settings_about_logo_desc">Calendula-App-Symbol</string>
|
||||||
<string name="settings_report_problem">Problem melden</string>
|
<string name="settings_report_problem">Problem melden</string>
|
||||||
|
|||||||
@@ -308,6 +308,7 @@
|
|||||||
<string name="settings_license_value">MIT</string>
|
<string name="settings_license_value">MIT</string>
|
||||||
<string name="settings_about_author">by Jean-Luc Makiola</string>
|
<string name="settings_about_author">by Jean-Luc Makiola</string>
|
||||||
<string name="settings_about_source">Source</string>
|
<string name="settings_about_source">Source</string>
|
||||||
|
<string name="settings_about_support">Support development</string>
|
||||||
<string name="settings_about_version">Version %1$s</string>
|
<string name="settings_about_version">Version %1$s</string>
|
||||||
<string name="settings_about_logo_desc">Calendula app icon</string>
|
<string name="settings_about_logo_desc">Calendula app icon</string>
|
||||||
<string name="settings_report_problem">Report a problem</string>
|
<string name="settings_report_problem">Report a problem</string>
|
||||||
@@ -378,6 +379,7 @@
|
|||||||
|
|
||||||
<string name="about_source_url" translatable="false">https://gitea.jeanlucmakiola.de/makiolaj/calendula</string>
|
<string name="about_source_url" translatable="false">https://gitea.jeanlucmakiola.de/makiolaj/calendula</string>
|
||||||
<string name="about_license_url" translatable="false">https://gitea.jeanlucmakiola.de/makiolaj/calendula/src/branch/main/LICENSE</string>
|
<string name="about_license_url" translatable="false">https://gitea.jeanlucmakiola.de/makiolaj/calendula/src/branch/main/LICENSE</string>
|
||||||
|
<string name="about_support_url" translatable="false">https://ko-fi.com/jeanlucmakiola</string>
|
||||||
|
|
||||||
<!-- Crash reporting: a captured report the user can submit, by hand, as a
|
<!-- Crash reporting: a captured report the user can submit, by hand, as a
|
||||||
Gitea issue (the app sends nothing automatically). -->
|
Gitea issue (the app sends nothing automatically). -->
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ AuthorName: Jean-Luc Makiola
|
|||||||
SourceCode: https://gitea.jeanlucmakiola.de/makiolaj/calendula
|
SourceCode: https://gitea.jeanlucmakiola.de/makiolaj/calendula
|
||||||
IssueTracker: https://gitea.jeanlucmakiola.de/makiolaj/calendula/issues
|
IssueTracker: https://gitea.jeanlucmakiola.de/makiolaj/calendula/issues
|
||||||
Changelog: https://gitea.jeanlucmakiola.de/makiolaj/calendula/src/branch/main/CHANGELOG.md
|
Changelog: https://gitea.jeanlucmakiola.de/makiolaj/calendula/src/branch/main/CHANGELOG.md
|
||||||
|
Donate: https://ko-fi.com/jeanlucmakiola
|
||||||
|
|
||||||
AutoName: Calendula
|
AutoName: Calendula
|
||||||
|
|
||||||
|
|||||||
@@ -8,3 +8,4 @@ Categories:
|
|||||||
|
|
||||||
SourceCode: https://gitea.jeanlucmakiola.de/makiolaj/calendula
|
SourceCode: https://gitea.jeanlucmakiola.de/makiolaj/calendula
|
||||||
IssueTracker: https://gitea.jeanlucmakiola.de/makiolaj/calendula/issues
|
IssueTracker: https://gitea.jeanlucmakiola.de/makiolaj/calendula/issues
|
||||||
|
Donate: https://ko-fi.com/jeanlucmakiola
|
||||||
|
|||||||
Reference in New Issue
Block a user