From a9c67a5827a433bbbb7292cf79d576c3ed0e9a44 Mon Sep 17 00:00:00 2001
From: Jean-Luc Makiola
Date: Thu, 25 Jun 2026 12:39:49 +0200
Subject: [PATCH 01/17] feat(about): add Ko-fi support link
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
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)
---
README.md | 11 +++++++++++
.../calendula/ui/settings/SettingsScreen.kt | 16 ++++++++++++++++
app/src/main/res/values-de/strings.xml | 1 +
app/src/main/res/values/strings.xml | 2 ++
.../de.jeanlucmakiola.calendula.yml | 1 +
fdroid-metadata/de.jeanlucmakiola.calendula.yml | 1 +
6 files changed, 32 insertions(+)
diff --git a/README.md b/README.md
index 6753ecc..ce22130 100644
--- a/README.md
+++ b/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
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
[MIT](LICENSE) β Jean-Luc Makiola, 2026
diff --git a/app/src/main/java/de/jeanlucmakiola/calendula/ui/settings/SettingsScreen.kt b/app/src/main/java/de/jeanlucmakiola/calendula/ui/settings/SettingsScreen.kt
index 5863ebd..21a8f7a 100644
--- a/app/src/main/java/de/jeanlucmakiola/calendula/ui/settings/SettingsScreen.kt
+++ b/app/src/main/java/de/jeanlucmakiola/calendula/ui/settings/SettingsScreen.kt
@@ -42,11 +42,13 @@ import androidx.compose.material.icons.filled.CalendarMonth
import androidx.compose.material.icons.filled.Check
import androidx.compose.material.icons.filled.ExpandLess
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.Language
import androidx.compose.material.icons.filled.Notifications
import androidx.compose.material.icons.filled.Palette
import androidx.compose.material.icons.filled.Tune
+import androidx.compose.material3.FilledTonalButton
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedButton
@@ -292,6 +294,7 @@ private fun AboutCard() {
val context = LocalContext.current
val sourceUrl = stringResource(R.string.about_source_url)
val licenseUrl = stringResource(R.string.about_license_url)
+ val supportUrl = stringResource(R.string.about_support_url)
Surface(
color = MaterialTheme.colorScheme.surfaceContainerHigh,
@@ -350,6 +353,19 @@ private fun AboutCard() {
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))
+ }
}
}
}
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 42e7f52..aa24a30 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -315,6 +315,7 @@
MIT
von Jean-Luc Makiola
Quellcode
+ Entwicklung unterstΓΌtzen
Version %1$s
Calendula-App-Symbol
Problem melden
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index c3c6725..1be5841 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -308,6 +308,7 @@
MIT
by Jean-Luc Makiola
Source
+ Support development
Version %1$s
Calendula app icon
Report a problem
@@ -378,6 +379,7 @@
https://gitea.jeanlucmakiola.de/makiolaj/calendula
https://gitea.jeanlucmakiola.de/makiolaj/calendula/src/branch/main/LICENSE
+ https://ko-fi.com/jeanlucmakiola
diff --git a/docs/fdroid-official/de.jeanlucmakiola.calendula.yml b/docs/fdroid-official/de.jeanlucmakiola.calendula.yml
index 5588023..45a7a3e 100644
--- a/docs/fdroid-official/de.jeanlucmakiola.calendula.yml
+++ b/docs/fdroid-official/de.jeanlucmakiola.calendula.yml
@@ -21,6 +21,7 @@ AuthorName: Jean-Luc Makiola
SourceCode: https://gitea.jeanlucmakiola.de/makiolaj/calendula
IssueTracker: https://gitea.jeanlucmakiola.de/makiolaj/calendula/issues
Changelog: https://gitea.jeanlucmakiola.de/makiolaj/calendula/src/branch/main/CHANGELOG.md
+Donate: https://ko-fi.com/jeanlucmakiola
AutoName: Calendula
diff --git a/fdroid-metadata/de.jeanlucmakiola.calendula.yml b/fdroid-metadata/de.jeanlucmakiola.calendula.yml
index 01c5526..2f6581e 100644
--- a/fdroid-metadata/de.jeanlucmakiola.calendula.yml
+++ b/fdroid-metadata/de.jeanlucmakiola.calendula.yml
@@ -8,3 +8,4 @@ Categories:
SourceCode: https://gitea.jeanlucmakiola.de/makiolaj/calendula
IssueTracker: https://gitea.jeanlucmakiola.de/makiolaj/calendula/issues
+Donate: https://ko-fi.com/jeanlucmakiola
From 2c38912834a7ece6f9082260c23fbae75302071e Mon Sep 17 00:00:00 2001
From: Jean-Luc Makiola
Date: Thu, 25 Jun 2026 12:51:12 +0200
Subject: [PATCH 02/17] docs(readme): surface Ko-fi + official F-Droid, tidy
install
- Move support to the top: Ko-fi badge in the header badge row,
drop the redundant bottom Support section
- Add "Get it on F-Droid" button now that Calendula is on the
official repo
- Restructure Install: lead with official F-Droid, keep the
self-hosted repo as the faster-updates lane
Co-Authored-By: Claude Opus 4.8 (1M context)
---
README.md | 41 +++++++++++++++++++++--------------------
1 file changed, 21 insertions(+), 20 deletions(-)
diff --git a/README.md b/README.md
index ce22130..1b1c48e 100644
--- a/README.md
+++ b/README.md
@@ -13,6 +13,11 @@ Reads, writes, and reminds β on top of the system calendar, with zero network
+
+
+
+
+
@@ -68,13 +73,20 @@ database, no sync stack reinvented.
## π¦ Install
-Calendula ships through a self-hosted F-Droid repository; every version tag
-is built, signed, and published there automatically.
+### F-Droid (recommended)
-1. Install an F-Droid client ([F-Droid](https://f-droid.org), Droid-ify, Neo
- Store, β¦).
-2. Add the repository β open this link on your phone, or paste it under
- *Settings β Repositories β Add*:
+Calendula is on the **official [F-Droid](https://f-droid.org) repository** β
+just search for **Calendula** in any F-Droid client, or
+[install it from f-droid.org](https://f-droid.org/packages/de.jeanlucmakiola.calendula/).
+
+### Self-hosted repo (latest builds)
+
+New versions are built, signed, and published to a self-hosted repository the
+moment each tag lands β usually a few days ahead of the official repo, which
+rebuilds on F-Droid's own schedule. Add it for the freshest builds:
+
+1. In your F-Droid client, open *Settings β Repositories β Add* (or open the
+ link below on your phone):
```
https://apps.dev.jeanlucmakiola.de/dev/fdroid/repo?fingerprint=C2C0640402BF458FC0ED957AF0B37AA4C14022E72F89CE90B5965B458CF73425
@@ -84,10 +96,10 @@ is built, signed, and published there automatically.
fingerprint (SHA-256):
`C2C0 6404 02BF 458F C0ED 957A F0B3 7AA4 C140 22E7 2F89 CE90 B596 5B45 8CF7 3425`
-3. Refresh, search for **Calendula**, install. Updates arrive like any
- other F-Droid app.
+2. Refresh, search for **Calendula**, install.
-Alternatively, build from source β see below.
+Both channels share the same signing key, so you can switch between them
+without reinstalling. Or build from source β see below.
## π Building
@@ -115,17 +127,6 @@ Next up: power-user features β widget, search, tablet layouts. The living
roadmap is in [.planning/ROADMAP.md](.planning/ROADMAP.md), the release
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
[MIT](LICENSE) β Jean-Luc Makiola, 2026
From b7a5f16c84770cd269a2d45eff76d30150e1b1bf Mon Sep 17 00:00:00 2001
From: Jean-Luc Makiola
Date: Thu, 25 Jun 2026 12:56:26 +0200
Subject: [PATCH 03/17] docs(readme): replace inline sections with doc links
Move the Building section into docs/BUILDING.md and collapse Building,
Architecture, and Roadmap into a compact Documentation block linking to
the dedicated docs, keeping the README focused on what/install/support.
Co-Authored-By: Claude Opus 4.8 (1M context)
---
README.md | 28 ++++------------------------
docs/BUILDING.md | 24 ++++++++++++++++++++++++
2 files changed, 28 insertions(+), 24 deletions(-)
create mode 100644 docs/BUILDING.md
diff --git a/README.md b/README.md
index 1b1c48e..8eeac68 100644
--- a/README.md
+++ b/README.md
@@ -101,31 +101,11 @@ rebuilds on F-Droid's own schedule. Add it for the freshest builds:
Both channels share the same signing key, so you can switch between them
without reinstalling. Or build from source β see below.
-## π Building
+## π Documentation
-Requires Android SDK 36+ and JDK 17. The Gradle wrapper is checked in:
-
-```bash
-./gradlew assembleDebug # debug APK
-./gradlew test # JVM unit tests
-./gradlew lint # Android lint
-```
-
-If your default JDK is not 17, set `JAVA_HOME` explicitly.
-
-## π Architecture
-
-Single-activity Compose app, layered `UI β Repository β DataSource β
-CalendarContract`, observer-driven refresh, JVM-first tests. The full tour β
-including the recurring-write and reminder pipelines β lives in
-[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md).
-
-## πΊ Roadmap
-
-Shipped: read (v1.0), write (v1.1βv2.0), reminder delivery (v1.4).
-Next up: power-user features β widget, search, tablet layouts. The living
-roadmap is in [.planning/ROADMAP.md](.planning/ROADMAP.md), the release
-history in [CHANGELOG.md](CHANGELOG.md).
+- **[Building from source](docs/BUILDING.md)** β requirements and Gradle tasks
+- **[Architecture](docs/ARCHITECTURE.md)** β the layered design and key pipelines
+- **[Roadmap](.planning/ROADMAP.md)** β what's shipped and what's next
## π License
diff --git a/docs/BUILDING.md b/docs/BUILDING.md
new file mode 100644
index 0000000..6524e94
--- /dev/null
+++ b/docs/BUILDING.md
@@ -0,0 +1,24 @@
+# Building from source
+
+Calendula builds with the standard Android Gradle toolchain β no extra setup
+beyond the SDK and a JDK.
+
+## Requirements
+
+- **Android SDK 36+**
+- **JDK 17** β if your default JDK is not 17, set `JAVA_HOME` explicitly.
+
+The Gradle wrapper is checked in, so you don't need a system Gradle.
+
+## Common tasks
+
+```bash
+./gradlew assembleDebug # debug APK β app/build/outputs/apk/debug/
+./gradlew test # JVM unit tests
+./gradlew lint # Android lint
+```
+
+## Release builds
+
+Release signing and the publishing pipeline are documented separately in
+[RELEASING.md](RELEASING.md).
From 00220c5f0e635e3452fa215df9137d2da240c05d Mon Sep 17 00:00:00 2001
From: Jean-Luc Makiola
Date: Thu, 25 Jun 2026 13:04:15 +0200
Subject: [PATCH 04/17] docs(readme): use official Ko-fi button next to F-Droid
badge
Replace the small shields Ko-fi badge with Ko-fi's official
"Support me" button, placed beside the Get it on F-Droid badge
as a peer call-to-action.
Co-Authored-By: Claude Opus 4.8 (1M context)
---
README.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 8eeac68..36d4b4d 100644
--- a/README.md
+++ b/README.md
@@ -13,11 +13,12 @@ Reads, writes, and reminds β on top of the system calendar, with zero network
-
+
+
From f4789c535e13cd88a8d9e8a8d8ced3620cfb364f Mon Sep 17 00:00:00 2001
From: Jean-Luc Makiola
Date: Thu, 25 Jun 2026 13:06:03 +0200
Subject: [PATCH 05/17] docs(readme): align Ko-fi button with F-Droid badge
Use Ko-fi's raster PNG button (the SVG was ignored and rendered
oversized) and match both buttons to height 56 so they sit inline.
Co-Authored-By: Claude Opus 4.8 (1M context)
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 36d4b4d..c86e52c 100644
--- a/README.md
+++ b/README.md
@@ -16,9 +16,9 @@ Reads, writes, and reminds β on top of the system calendar, with zero network
-
+
-
+
From 96f4d4dc84ebb998a54f7ea0b0c42414b5d76fb9 Mon Sep 17 00:00:00 2001
From: Jean-Luc Makiola
Date: Thu, 25 Jun 2026 13:07:04 +0200
Subject: [PATCH 06/17] docs(readme): restore F-Droid badge to original height
Co-Authored-By: Claude Opus 4.8 (1M context)
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index c86e52c..a6d3eb3 100644
--- a/README.md
+++ b/README.md
@@ -16,7 +16,7 @@ Reads, writes, and reminds β on top of the system calendar, with zero network
-
+
From 913b49e962609ae3ea29a45660f2bd2a5c3d7ce1 Mon Sep 17 00:00:00 2001
From: Jean-Luc Makiola
Date: Thu, 25 Jun 2026 13:08:12 +0200
Subject: [PATCH 07/17] docs(readme): vertically center the F-Droid and Ko-fi
buttons
Wrap both badges in a table row so the different-height buttons
align on a shared midline instead of the text baseline.
Co-Authored-By: Claude Opus 4.8 (1M context)
---
README.md | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index a6d3eb3..1f194b0 100644
--- a/README.md
+++ b/README.md
@@ -15,11 +15,10 @@ Reads, writes, and reminds β on top of the system calendar, with zero network
-
-
-
-
-
+
+ |
+ |
+
From 8a9e6f0ee8ebece978309e7624fd7b466e40667e Mon Sep 17 00:00:00 2001
From: Jean-Luc Makiola
Date: Thu, 25 Jun 2026 13:09:29 +0200
Subject: [PATCH 08/17] docs(readme): stack F-Droid and Ko-fi buttons, drop
bordered table
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The table centered them but Gitea draws cell borders we can't strip.
Stack the two badges on separate centered lines instead β no borders,
each keeps its own size.
Co-Authored-By: Claude Opus 4.8 (1M context)
---
README.md | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 1f194b0..8dc300e 100644
--- a/README.md
+++ b/README.md
@@ -15,10 +15,13 @@ Reads, writes, and reminds β on top of the system calendar, with zero network
-
- |
- |
-
+
+
+
+
+
+
+
From 376ad5f3944e1ed69a98eb1d77026a9d283db792 Mon Sep 17 00:00:00 2001
From: Jean-Luc Makiola
Date: Thu, 25 Jun 2026 13:19:57 +0200
Subject: [PATCH 09/17] docs(readme): put F-Droid and Ko-fi buttons inline at
equal height
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Both at height 56 on one line β equal heights align on the baseline,
so no table/border workaround is needed.
Co-Authored-By: Claude Opus 4.8 (1M context)
---
README.md | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 8dc300e..c86e52c 100644
--- a/README.md
+++ b/README.md
@@ -16,10 +16,8 @@ Reads, writes, and reminds β on top of the system calendar, with zero network
-
-
-
-
+
+
From dd61e0ed377da3327e5d9fa4065f2487951bca57 Mon Sep 17 00:00:00 2001
From: Jean-Luc Makiola
Date: Thu, 25 Jun 2026 13:23:13 +0200
Subject: [PATCH 10/17] docs(readme): shrink Ko-fi button for visual balance
The solid Ko-fi pill read heavier than the F-Droid badge at equal
height; drop it to 46 so the two feel balanced.
Co-Authored-By: Claude Opus 4.8 (1M context)
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index c86e52c..e9e2790 100644
--- a/README.md
+++ b/README.md
@@ -18,7 +18,7 @@ Reads, writes, and reminds β on top of the system calendar, with zero network
-
+
From 575b1c7eb7fe08b140b26940397af700c3d9da39 Mon Sep 17 00:00:00 2001
From: Jean-Luc Makiola
Date: Thu, 25 Jun 2026 11:25:55 +0000
Subject: [PATCH 11/17] Update ReadMe.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index e9e2790..c642fb9 100644
--- a/README.md
+++ b/README.md
@@ -16,7 +16,7 @@ Reads, writes, and reminds β on top of the system calendar, with zero network
-
+
From 0ddbbb11e8438ebb7f27c1ed863fe0588c0f1dae Mon Sep 17 00:00:00 2001
From: Jean-Luc Makiola
Date: Thu, 25 Jun 2026 11:28:19 +0000
Subject: [PATCH 12/17] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index c642fb9..430bda4 100644
--- a/README.md
+++ b/README.md
@@ -16,7 +16,7 @@ Reads, writes, and reminds β on top of the system calendar, with zero network
-
+
From 8a63aa86a779367f91fdebcb6442921891b4c984 Mon Sep 17 00:00:00 2001
From: Jean-Luc Makiola
Date: Thu, 25 Jun 2026 11:28:44 +0000
Subject: [PATCH 13/17] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 430bda4..e9e2790 100644
--- a/README.md
+++ b/README.md
@@ -16,7 +16,7 @@ Reads, writes, and reminds β on top of the system calendar, with zero network
-
+
From 946addbbcdf946c1acbeef1698e9dd8220b6f6c0 Mon Sep 17 00:00:00 2001
From: Jean-Luc Makiola
Date: Thu, 25 Jun 2026 13:30:59 +0200
Subject: [PATCH 14/17] docs(readme): use official 'Support me on Ko-fi' beige
badge
Swap the Buy-me-a-coffee pill for Ko-fi's beige support badge, matched
to the F-Droid badge height (56).
Co-Authored-By: Claude Opus 4.8 (1M context)
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index e9e2790..994ecd2 100644
--- a/README.md
+++ b/README.md
@@ -18,7 +18,7 @@ Reads, writes, and reminds β on top of the system calendar, with zero network
-
+
From 43eb5e23e84a4da4d0acae8097fcd5a72e6dab9e Mon Sep 17 00:00:00 2001
From: Jean-Luc Makiola
Date: Thu, 25 Jun 2026 13:33:41 +0200
Subject: [PATCH 15/17] docs(readme): enlarge F-Droid badge to height 80
Co-Authored-By: Claude Opus 4.8 (1M context)
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 994ecd2..94808bb 100644
--- a/README.md
+++ b/README.md
@@ -16,7 +16,7 @@ Reads, writes, and reminds β on top of the system calendar, with zero network
-
+
From cecd0c223498385cd5eda640e7731d5fb8a9cd79 Mon Sep 17 00:00:00 2001
From: Jean-Luc Makiola
Date: Thu, 25 Jun 2026 13:34:27 +0200
Subject: [PATCH 16/17] docs(readme): revert F-Droid badge to height 56
Co-Authored-By: Claude Opus 4.8 (1M context)
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 94808bb..994ecd2 100644
--- a/README.md
+++ b/README.md
@@ -16,7 +16,7 @@ Reads, writes, and reminds β on top of the system calendar, with zero network
-
+
From 26e538a9ba944dc3b2cd8725242a958996f079ec Mon Sep 17 00:00:00 2001
From: Jean-Luc Makiola
Date: Thu, 25 Jun 2026 14:07:40 +0200
Subject: [PATCH 17/17] docs(changelog): note Ko-fi support link
Co-Authored-By: Claude Opus 4.8 (1M context)
---
CHANGELOG.md | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 207b925..aa27ebb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [2.10.0] β Unreleased
+
+### Added
+- An optional way to support development. Settings β About now has a "Support
+ development" button that opens Ko-fi in your browser. It's a plain donation
+ link with no perks attached, and it needs no new permissions β Calendula still
+ has no internet access of its own and just hands the link to your browser.
+
## [2.9.0] β 2026-06-25
### Added