diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml
index 450b342..2ea0bc3 100644
--- a/.gitea/workflows/release.yaml
+++ b/.gitea/workflows/release.yaml
@@ -225,7 +225,7 @@ jobs:
if [ -z "$SAFE_REF_NAME" ]; then
SAFE_REF_NAME="${GITHUB_SHA:-manual}"
fi
- cp app/build/outputs/apk/release/app-release.apk "fdroid/repo/floret_${SAFE_REF_NAME}.apk"
+ cp app/build/outputs/apk/release/app-release.apk "fdroid/repo/agendula_${SAFE_REF_NAME}.apk"
- name: Copy metadata to F-Droid repo
run: |
@@ -248,7 +248,7 @@ jobs:
if [ ! -s /tmp/changelog.txt ]; then
echo "See CHANGELOG.md for $VERSION." > /tmp/changelog.txt
fi
- CL_DIR="fdroid/metadata/de.jeanlucmakiola.floret/en-US/changelogs"
+ CL_DIR="fdroid/metadata/de.jeanlucmakiola.agendula/en-US/changelogs"
mkdir -p "$CL_DIR"
cp /tmp/changelog.txt "$CL_DIR/${VERSION_CODE}.txt"
echo "Wrote $CL_DIR/${VERSION_CODE}.txt"
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 21827f9..747f79f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,7 +8,7 @@ the source of truth for version codes (see Calendula's `docs/RELEASING.md`).
### Added
- M5 reminders onboarding & polish: a one-time reminder onboarding step after the
- provider grant explains that Floret delivers due reminders itself and requests
+ provider grant explains that Agendula delivers due reminders itself and requests
`POST_NOTIFICATIONS` (API 33+). A new **Settings** screen (gear on the lists
overview), structured after Calendula as a category hub with sliding sub-screens
(`CollapsingScaffold` + grouped category rows + full-screen `OptionPicker`):
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 417c7b8..5eef705 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,6 +1,6 @@
-# Contributing to Floret
+# Contributing to Agendula
-Thanks for your interest in Floret — a Material 3 Expressive task app that's a
+Thanks for your interest in Agendula — a Material 3 Expressive task app that's a
pure front-end over the OpenTasks `TaskContract` provider, with no own database
or sync stack. Before diving in, skim [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md)
(how it's built), [`docs/ROADMAP.md`](docs/ROADMAP.md) (what's next), and
@@ -80,7 +80,7 @@ push, so run these locally before opening a PR. Keep CI green.
## Scope
-Floret stays true to its thesis: a front-end over **open** task backends
+Agendula stays true to its thesis: a front-end over **open** task backends
(CalDAV / iCalendar / DecSync via the OpenTasks provider). Proprietary backends
(Google Tasks, Microsoft To Do) are out of scope by design — they'd mean owning
a sync stack. v1 targets the OpenTasks contract (OpenTasks + tasks.org); jtx's
diff --git a/README.md b/README.md
index cce585c..5b5a127 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
-
Floret
+
Agendula
A modern Material 3 Expressive task app for Android.
Reads, writes, and reminds — on top of an existing tasks provider, with no own
@@ -13,14 +13,16 @@ sync stack.
-Floret is the task-list sibling to [Calendula](https://gitea.jeanlucmakiola.de/makiolaj/calendula).
-Where Calendula is a pure front-end over Android's `CalendarContract`, Floret is
+Agendula is the task-list sibling to [Calendula](https://gitea.jeanlucmakiola.de/makiolaj/calendula).
+Where Calendula is a pure front-end over Android's `CalendarContract`, Agendula is
a pure front-end over the **OpenTasks `TaskContract` provider** — the store that
DAVx5 (and SmoothSync, DecSync, …) syncs your CalDAV `VTODO` tasks into. No own
database, no reinvented sync.
-A Calendula flower head is botanically made of many small *florets* — the
-individual items that make up the bloom. Floret is those items: your tasks.
+The name rhymes with its sibling on purpose: **Agendula** is *agenda* — Latin for
+“things to be done” — given Calendula's `-ula` ending. Calendula keeps your days;
+Agendula keeps your to-dos. (A Calendula flower head is botanically a cluster of
+many small *florets* — so the two apps are florets of one bloom.)
> **Status: data layer done, UI in progress.** The full non-visual stack over
> the `TaskContract` provider — provider resolution, live-updating reads,
@@ -32,7 +34,7 @@ individual items that make up the bloom. Floret is those items: your tasks.
## Sync sources (by design)
-Floret works with anything that writes to the tasks provider — **DAVx5**
+Agendula works with anything that writes to the tasks provider — **DAVx5**
(CalDAV), **SmoothSync**, **CalDAV-Sync**, **DecSync CC**, or any Android sync
adapter — because it builds on the provider, not on any one sync app. Google
Tasks / Microsoft To Do are out of scope by design (proprietary; they would mean
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 301bca5..a142ec1 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -16,11 +16,11 @@ val keystoreProperties = Properties().apply {
}
android {
- namespace = "de.jeanlucmakiola.floret"
+ namespace = "de.jeanlucmakiola.agendula"
compileSdk = 37
defaultConfig {
- applicationId = "de.jeanlucmakiola.floret"
+ applicationId = "de.jeanlucmakiola.agendula"
minSdk = 29
targetSdk = 36
// The git tag is the single source of truth for released builds: at
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 74ed6f9..ca41302 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -30,7 +30,7 @@
false
ThemeMode.DARK -> true
}
- FloretTheme(darkTheme = darkTheme, dynamicColor = ui.settings.dynamicColor) {
+ AgendulaTheme(darkTheme = darkTheme, dynamicColor = ui.settings.dynamicColor) {
RootScreen(modifier = Modifier.fillMaxSize())
}
}
}
companion object {
- const val EXTRA_TASK_ID = "de.jeanlucmakiola.floret.extra.TASK_ID"
- private const val EXTRA_SEED = "floret_seed"
+ const val EXTRA_TASK_ID = "de.jeanlucmakiola.agendula.extra.TASK_ID"
+ private const val EXTRA_SEED = "agendula_seed"
/** Opens the app focused on a task (reminder taps). Routing lands with the UI. */
fun taskIntent(context: Context, taskId: Long): Intent =
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/data/demo/DemoSeeder.kt b/app/src/main/java/de/jeanlucmakiola/agendula/data/demo/DemoSeeder.kt
similarity index 80%
rename from app/src/main/java/de/jeanlucmakiola/floret/data/demo/DemoSeeder.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/data/demo/DemoSeeder.kt
index 0b3c40c..a97ec03 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/data/demo/DemoSeeder.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/data/demo/DemoSeeder.kt
@@ -1,10 +1,10 @@
-package de.jeanlucmakiola.floret.data.demo
+package de.jeanlucmakiola.agendula.data.demo
-import de.jeanlucmakiola.floret.data.di.IoDispatcher
-import de.jeanlucmakiola.floret.data.tasks.TasksRepository
-import de.jeanlucmakiola.floret.domain.DayWindow
-import de.jeanlucmakiola.floret.domain.Priority
-import de.jeanlucmakiola.floret.domain.TaskForm
+import de.jeanlucmakiola.agendula.data.di.IoDispatcher
+import de.jeanlucmakiola.agendula.data.tasks.TasksRepository
+import de.jeanlucmakiola.agendula.domain.DayWindow
+import de.jeanlucmakiola.agendula.domain.Priority
+import de.jeanlucmakiola.agendula.domain.TaskForm
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.withContext
@@ -16,10 +16,10 @@ import kotlin.time.Instant
/**
* Debug-only one-shot sample data. Creates a **local, device-only** list
- * ("Floret Demo") — so nothing syncs to a CalDAV server — and fills it with
+ * ("Agendula Demo") — so nothing syncs to a CalDAV server — and fills it with
* tasks spread across overdue / today / upcoming / no-date / completed so every
* smart list shows content. Idempotent: skips if the demo list already exists.
- * Triggered from [de.jeanlucmakiola.floret.MainActivity] only in debug builds.
+ * Triggered from [de.jeanlucmakiola.agendula.MainActivity] only in debug builds.
*/
@Singleton
class DemoSeeder @Inject constructor(
@@ -47,14 +47,14 @@ class DemoSeeder @Inject constructor(
repository.createTask(TaskForm(title = "Gather receipts", listId = listId, parentId = invoiceId))
repository.createTask(TaskForm(title = "Book train tickets", listId = listId, due = at(te + 6 * day), priority = Priority.LOW))
repository.createTask(TaskForm(title = "Read Compose 1.5 release notes", listId = listId))
- repository.createTask(TaskForm(title = "Sketch the Floret app icon", listId = listId))
+ repository.createTask(TaskForm(title = "Sketch the Agendula app icon", listId = listId))
val done = repository.createTask(TaskForm(title = "Renew domain name", listId = listId, due = at(ts - 2 * day)))
repository.setCompleted(done, completed = true)
}
private companion object {
- const val DEMO_LIST = "Floret Demo"
+ const val DEMO_LIST = "Agendula Demo"
const val DEMO_COLOR = 0xFF7A5C6B.toInt()
}
}
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/data/di/DataModule.kt b/app/src/main/java/de/jeanlucmakiola/agendula/data/di/DataModule.kt
similarity index 71%
rename from app/src/main/java/de/jeanlucmakiola/floret/data/di/DataModule.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/data/di/DataModule.kt
index 251f76e..7e668e7 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/data/di/DataModule.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/data/di/DataModule.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.data.di
+package de.jeanlucmakiola.agendula.data.di
import android.content.Context
import androidx.datastore.core.DataStore
@@ -10,16 +10,16 @@ import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.components.SingletonComponent
-import de.jeanlucmakiola.floret.data.tasks.AndroidTasksDataSource
-import de.jeanlucmakiola.floret.data.tasks.TasksDataSource
-import de.jeanlucmakiola.floret.data.tasks.TasksRepository
-import de.jeanlucmakiola.floret.data.tasks.TasksRepositoryImpl
+import de.jeanlucmakiola.agendula.data.tasks.AndroidTasksDataSource
+import de.jeanlucmakiola.agendula.data.tasks.TasksDataSource
+import de.jeanlucmakiola.agendula.data.tasks.TasksRepository
+import de.jeanlucmakiola.agendula.data.tasks.TasksRepositoryImpl
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers
import javax.inject.Singleton
-private val Context.floretDataStore: DataStore by preferencesDataStore(
- name = "floret_prefs",
+private val Context.agendulaDataStore: DataStore by preferencesDataStore(
+ name = "agendula_prefs",
)
@Module
@@ -42,7 +42,7 @@ object DataProvideModule {
@Provides
@Singleton
fun provideDataStore(@ApplicationContext context: Context): DataStore =
- context.floretDataStore
+ context.agendulaDataStore
@Provides
@IoDispatcher
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/data/di/Qualifiers.kt b/app/src/main/java/de/jeanlucmakiola/agendula/data/di/Qualifiers.kt
similarity index 81%
rename from app/src/main/java/de/jeanlucmakiola/floret/data/di/Qualifiers.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/data/di/Qualifiers.kt
index 509478d..6be87bc 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/data/di/Qualifiers.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/data/di/Qualifiers.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.data.di
+package de.jeanlucmakiola.agendula.data.di
import javax.inject.Qualifier
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/data/prefs/SettingsPrefs.kt b/app/src/main/java/de/jeanlucmakiola/agendula/data/prefs/SettingsPrefs.kt
similarity index 98%
rename from app/src/main/java/de/jeanlucmakiola/floret/data/prefs/SettingsPrefs.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/data/prefs/SettingsPrefs.kt
index 01f9c44..e0e9ab2 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/data/prefs/SettingsPrefs.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/data/prefs/SettingsPrefs.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.data.prefs
+package de.jeanlucmakiola.agendula.data.prefs
import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.Preferences
@@ -8,7 +8,7 @@ import androidx.datastore.preferences.core.intPreferencesKey
import androidx.datastore.preferences.core.longPreferencesKey
import androidx.datastore.preferences.core.stringPreferencesKey
import androidx.datastore.preferences.core.stringSetPreferencesKey
-import de.jeanlucmakiola.floret.domain.TaskFormField
+import de.jeanlucmakiola.agendula.domain.TaskFormField
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import javax.inject.Inject
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/data/reminders/BootReceiver.kt b/app/src/main/java/de/jeanlucmakiola/agendula/data/reminders/BootReceiver.kt
similarity index 94%
rename from app/src/main/java/de/jeanlucmakiola/floret/data/reminders/BootReceiver.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/data/reminders/BootReceiver.kt
index dc93b62..242e894 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/data/reminders/BootReceiver.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/data/reminders/BootReceiver.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.data.reminders
+package de.jeanlucmakiola.agendula.data.reminders
import android.content.BroadcastReceiver
import android.content.Context
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/data/reminders/DueReminderReceiver.kt b/app/src/main/java/de/jeanlucmakiola/agendula/data/reminders/DueReminderReceiver.kt
similarity index 86%
rename from app/src/main/java/de/jeanlucmakiola/floret/data/reminders/DueReminderReceiver.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/data/reminders/DueReminderReceiver.kt
index e3bfd44..dba31d7 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/data/reminders/DueReminderReceiver.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/data/reminders/DueReminderReceiver.kt
@@ -1,11 +1,11 @@
-package de.jeanlucmakiola.floret.data.reminders
+package de.jeanlucmakiola.agendula.data.reminders
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import dagger.hilt.android.AndroidEntryPoint
-import de.jeanlucmakiola.floret.data.prefs.SettingsPrefs
-import de.jeanlucmakiola.floret.data.tasks.TasksDataSource
+import de.jeanlucmakiola.agendula.data.prefs.SettingsPrefs
+import de.jeanlucmakiola.agendula.data.tasks.TasksDataSource
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob
@@ -43,7 +43,7 @@ class DueReminderReceiver : BroadcastReceiver() {
}
companion object {
- private const val EXTRA_TASK_ID = "de.jeanlucmakiola.floret.extra.TASK_ID"
+ private const val EXTRA_TASK_ID = "de.jeanlucmakiola.agendula.extra.TASK_ID"
fun intent(context: Context, taskId: Long): Intent =
Intent(context, DueReminderReceiver::class.java).putExtra(EXTRA_TASK_ID, taskId)
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/data/reminders/ProviderChangeReceiver.kt b/app/src/main/java/de/jeanlucmakiola/agendula/data/reminders/ProviderChangeReceiver.kt
similarity index 88%
rename from app/src/main/java/de/jeanlucmakiola/floret/data/reminders/ProviderChangeReceiver.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/data/reminders/ProviderChangeReceiver.kt
index f97886e..82c491b 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/data/reminders/ProviderChangeReceiver.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/data/reminders/ProviderChangeReceiver.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.data.reminders
+package de.jeanlucmakiola.agendula.data.reminders
import android.content.BroadcastReceiver
import android.content.Context
@@ -12,7 +12,7 @@ import javax.inject.Inject
/**
* Re-syncs reminders whenever the tasks provider changes — covers external sync
- * (DAVx5 pulling new/edited tasks) while Floret isn't in the foreground. The
+ * (DAVx5 pulling new/edited tasks) while Agendula isn't in the foreground. The
* manifest filter targets both known authorities; best-effort (the in-app
* ContentObserver covers the foreground case regardless).
*/
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/data/reminders/ReminderScheduler.kt b/app/src/main/java/de/jeanlucmakiola/agendula/data/reminders/ReminderScheduler.kt
similarity index 89%
rename from app/src/main/java/de/jeanlucmakiola/floret/data/reminders/ReminderScheduler.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/data/reminders/ReminderScheduler.kt
index 602d63d..4cea316 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/data/reminders/ReminderScheduler.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/data/reminders/ReminderScheduler.kt
@@ -1,15 +1,15 @@
-package de.jeanlucmakiola.floret.data.reminders
+package de.jeanlucmakiola.agendula.data.reminders
import android.app.AlarmManager
import android.app.PendingIntent
import android.content.Context
import android.os.Build
import dagger.hilt.android.qualifiers.ApplicationContext
-import de.jeanlucmakiola.floret.data.di.IoDispatcher
-import de.jeanlucmakiola.floret.data.prefs.SettingsPrefs
-import de.jeanlucmakiola.floret.data.tasks.ProviderResolver
-import de.jeanlucmakiola.floret.data.tasks.TaskQuery
-import de.jeanlucmakiola.floret.data.tasks.TasksDataSource
+import de.jeanlucmakiola.agendula.data.di.IoDispatcher
+import de.jeanlucmakiola.agendula.data.prefs.SettingsPrefs
+import de.jeanlucmakiola.agendula.data.tasks.ProviderResolver
+import de.jeanlucmakiola.agendula.data.tasks.TaskQuery
+import de.jeanlucmakiola.agendula.data.tasks.TasksDataSource
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.withContext
@@ -18,7 +18,7 @@ import javax.inject.Singleton
/**
* The self-scheduled due-reminder engine. Tasks providers don't deliver
- * reminders, so Floret reads upcoming due tasks and arms one exact [AlarmManager]
+ * reminders, so Agendula reads upcoming due tasks and arms one exact [AlarmManager]
* alarm each, within a rolling window. Re-run on app start, boot and provider
* change; it diffs against [ScheduledReminderStore] so only changed alarms move.
*/
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/data/reminders/ScheduledReminderStore.kt b/app/src/main/java/de/jeanlucmakiola/agendula/data/reminders/ScheduledReminderStore.kt
similarity index 96%
rename from app/src/main/java/de/jeanlucmakiola/floret/data/reminders/ScheduledReminderStore.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/data/reminders/ScheduledReminderStore.kt
index f903cb1..1331b0a 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/data/reminders/ScheduledReminderStore.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/data/reminders/ScheduledReminderStore.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.data.reminders
+package de.jeanlucmakiola.agendula.data.reminders
import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.Preferences
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/data/reminders/TaskNotifier.kt b/app/src/main/java/de/jeanlucmakiola/agendula/data/reminders/TaskNotifier.kt
similarity index 95%
rename from app/src/main/java/de/jeanlucmakiola/floret/data/reminders/TaskNotifier.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/data/reminders/TaskNotifier.kt
index c800ddc..4780f1c 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/data/reminders/TaskNotifier.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/data/reminders/TaskNotifier.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.data.reminders
+package de.jeanlucmakiola.agendula.data.reminders
import android.Manifest
import android.annotation.SuppressLint
@@ -12,9 +12,9 @@ import android.os.Build
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
import androidx.core.content.ContextCompat
-import de.jeanlucmakiola.floret.MainActivity
-import de.jeanlucmakiola.floret.R
-import de.jeanlucmakiola.floret.domain.Task
+import de.jeanlucmakiola.agendula.MainActivity
+import de.jeanlucmakiola.agendula.R
+import de.jeanlucmakiola.agendula.domain.Task
import dagger.hilt.android.qualifiers.ApplicationContext
import java.time.Instant as JInstant
import java.time.ZoneId
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/data/tasks/AndroidTasksDataSource.kt b/app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/AndroidTasksDataSource.kt
similarity index 94%
rename from app/src/main/java/de/jeanlucmakiola/floret/data/tasks/AndroidTasksDataSource.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/AndroidTasksDataSource.kt
index 61c7373..1ddbfa6 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/data/tasks/AndroidTasksDataSource.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/AndroidTasksDataSource.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.data.tasks
+package de.jeanlucmakiola.agendula.data.tasks
import android.content.ContentResolver
import android.content.ContentUris
@@ -9,12 +9,12 @@ import android.net.Uri
import android.os.Handler
import android.os.Looper
import dagger.hilt.android.qualifiers.ApplicationContext
-import de.jeanlucmakiola.floret.data.tasks.TasksContract.Instances
-import de.jeanlucmakiola.floret.data.tasks.TasksContract.Lists
-import de.jeanlucmakiola.floret.data.tasks.TasksContract.Tasks
-import de.jeanlucmakiola.floret.domain.Task
-import de.jeanlucmakiola.floret.domain.TaskForm
-import de.jeanlucmakiola.floret.domain.TaskList
+import de.jeanlucmakiola.agendula.data.tasks.TasksContract.Instances
+import de.jeanlucmakiola.agendula.data.tasks.TasksContract.Lists
+import de.jeanlucmakiola.agendula.data.tasks.TasksContract.Tasks
+import de.jeanlucmakiola.agendula.domain.Task
+import de.jeanlucmakiola.agendula.domain.TaskForm
+import de.jeanlucmakiola.agendula.domain.TaskList
import java.time.ZoneId
import javax.inject.Inject
import javax.inject.Singleton
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/data/tasks/ColumnReader.kt b/app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/ColumnReader.kt
similarity index 96%
rename from app/src/main/java/de/jeanlucmakiola/floret/data/tasks/ColumnReader.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/ColumnReader.kt
index 0da8dfd..5cd2933 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/data/tasks/ColumnReader.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/ColumnReader.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.data.tasks
+package de.jeanlucmakiola.agendula.data.tasks
import android.database.Cursor
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/data/tasks/Failures.kt b/app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/Failures.kt
similarity index 93%
rename from app/src/main/java/de/jeanlucmakiola/floret/data/tasks/Failures.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/Failures.kt
index 6859a32..d34dae4 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/data/tasks/Failures.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/Failures.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.data.tasks
+package de.jeanlucmakiola.agendula.data.tasks
/** No tasks provider (OpenTasks / tasks.org) is installed on the device. */
class ProviderUnavailableException :
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/data/tasks/ProviderResolver.kt b/app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/ProviderResolver.kt
similarity index 95%
rename from app/src/main/java/de/jeanlucmakiola/floret/data/tasks/ProviderResolver.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/ProviderResolver.kt
index 00fb24e..ba24eb0 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/data/tasks/ProviderResolver.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/ProviderResolver.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.data.tasks
+package de.jeanlucmakiola.agendula.data.tasks
import android.content.Context
import android.content.pm.PackageManager
@@ -8,7 +8,7 @@ import javax.inject.Inject
import javax.inject.Singleton
/**
- * A tasks provider Floret can talk to. The same dmfs `TaskProvider` backs every
+ * A tasks provider Agendula can talk to. The same dmfs `TaskProvider` backs every
* candidate, so the [TasksContract] columns apply regardless of which is present.
*/
data class TaskProvider(
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/data/tasks/TaskMapper.kt b/app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/TaskMapper.kt
similarity index 82%
rename from app/src/main/java/de/jeanlucmakiola/floret/data/tasks/TaskMapper.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/TaskMapper.kt
index 40396a5..c8b36ab 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/data/tasks/TaskMapper.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/TaskMapper.kt
@@ -1,12 +1,12 @@
-package de.jeanlucmakiola.floret.data.tasks
+package de.jeanlucmakiola.agendula.data.tasks
-import de.jeanlucmakiola.floret.data.tasks.TasksContract.Instances
-import de.jeanlucmakiola.floret.data.tasks.TasksContract.Lists
-import de.jeanlucmakiola.floret.data.tasks.TasksContract.Tasks
-import de.jeanlucmakiola.floret.domain.Task
-import de.jeanlucmakiola.floret.domain.TaskList
-import de.jeanlucmakiola.floret.domain.priorityFromICal
-import de.jeanlucmakiola.floret.domain.statusFromInt
+import de.jeanlucmakiola.agendula.data.tasks.TasksContract.Instances
+import de.jeanlucmakiola.agendula.data.tasks.TasksContract.Lists
+import de.jeanlucmakiola.agendula.data.tasks.TasksContract.Tasks
+import de.jeanlucmakiola.agendula.domain.Task
+import de.jeanlucmakiola.agendula.domain.TaskList
+import de.jeanlucmakiola.agendula.domain.priorityFromICal
+import de.jeanlucmakiola.agendula.domain.statusFromInt
import kotlin.time.Instant
/** Maps a provider row (via [ColumnReader]) to a domain model. Pure + testable. */
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/data/tasks/TaskProjections.kt b/app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/TaskProjections.kt
similarity index 81%
rename from app/src/main/java/de/jeanlucmakiola/floret/data/tasks/TaskProjections.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/TaskProjections.kt
index 9113f56..6b6fa45 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/data/tasks/TaskProjections.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/TaskProjections.kt
@@ -1,8 +1,8 @@
-package de.jeanlucmakiola.floret.data.tasks
+package de.jeanlucmakiola.agendula.data.tasks
-import de.jeanlucmakiola.floret.data.tasks.TasksContract.Instances
-import de.jeanlucmakiola.floret.data.tasks.TasksContract.Lists
-import de.jeanlucmakiola.floret.data.tasks.TasksContract.Tasks
+import de.jeanlucmakiola.agendula.data.tasks.TasksContract.Instances
+import de.jeanlucmakiola.agendula.data.tasks.TasksContract.Lists
+import de.jeanlucmakiola.agendula.data.tasks.TasksContract.Tasks
/** Column lists requested from the provider. Order is irrelevant; we read by name. */
object TaskProjections {
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/data/tasks/TaskWriteMapper.kt b/app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/TaskWriteMapper.kt
similarity index 91%
rename from app/src/main/java/de/jeanlucmakiola/floret/data/tasks/TaskWriteMapper.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/TaskWriteMapper.kt
index 3045480..601ac24 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/data/tasks/TaskWriteMapper.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/TaskWriteMapper.kt
@@ -1,9 +1,9 @@
-package de.jeanlucmakiola.floret.data.tasks
+package de.jeanlucmakiola.agendula.data.tasks
-import de.jeanlucmakiola.floret.data.tasks.TasksContract.Lists
-import de.jeanlucmakiola.floret.data.tasks.TasksContract.Tasks
-import de.jeanlucmakiola.floret.domain.TaskForm
-import de.jeanlucmakiola.floret.domain.toICal
+import de.jeanlucmakiola.agendula.data.tasks.TasksContract.Lists
+import de.jeanlucmakiola.agendula.data.tasks.TasksContract.Tasks
+import de.jeanlucmakiola.agendula.domain.TaskForm
+import de.jeanlucmakiola.agendula.domain.toICal
/**
* Turns a [TaskForm] / mutation into a name→value map. Pure (no ContentValues),
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/data/tasks/TasksContract.kt b/app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/TasksContract.kt
similarity index 95%
rename from app/src/main/java/de/jeanlucmakiola/floret/data/tasks/TasksContract.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/TasksContract.kt
index 8bc38d4..a400d59 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/data/tasks/TasksContract.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/TasksContract.kt
@@ -1,9 +1,9 @@
-package de.jeanlucmakiola.floret.data.tasks
+package de.jeanlucmakiola.agendula.data.tasks
import android.net.Uri
/**
- * The subset of the OpenTasks `TaskContract` that Floret uses, vendored as
+ * The subset of the OpenTasks `TaskContract` that Agendula uses, vendored as
* Kotlin constants. Derived from `org.dmfs.tasks.contract.TaskContract`
* (Apache-2.0, dmfs GmbH):
* https://github.com/dmfs/opentasks/blob/master/opentasks-contract/src/main/java/org/dmfs/tasks/contract/TaskContract.java
@@ -25,7 +25,7 @@ object TasksContract {
const val PARAM_ACCOUNT_TYPE = "account_type"
const val LOAD_PROPERTIES = "load_properties"
- /** Account used for local, device-only task lists Floret owns. */
+ /** Account used for local, device-only task lists Agendula owns. */
const val LOCAL_ACCOUNT_NAME = "Local"
const val LOCAL_ACCOUNT_TYPE = "org.dmfs.account.LOCAL"
@@ -85,7 +85,7 @@ object TasksContract {
* The `instances` view — one row per task occurrence, with recurrence
* resolved and absolute [INSTANCE_START]/[INSTANCE_DUE] timestamps. Inherits
* every [Tasks] column (title, status, …) plus the instance-only columns
- * below. This is Floret's read source.
+ * below. This is Agendula's read source.
*/
object Instances {
const val PATH = "instances"
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/data/tasks/TasksDataSource.kt b/app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/TasksDataSource.kt
similarity index 83%
rename from app/src/main/java/de/jeanlucmakiola/floret/data/tasks/TasksDataSource.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/TasksDataSource.kt
index b6dc8a6..e73d7ee 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/data/tasks/TasksDataSource.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/TasksDataSource.kt
@@ -1,8 +1,8 @@
-package de.jeanlucmakiola.floret.data.tasks
+package de.jeanlucmakiola.agendula.data.tasks
-import de.jeanlucmakiola.floret.domain.Task
-import de.jeanlucmakiola.floret.domain.TaskForm
-import de.jeanlucmakiola.floret.domain.TaskList
+import de.jeanlucmakiola.agendula.domain.Task
+import de.jeanlucmakiola.agendula.domain.TaskForm
+import de.jeanlucmakiola.agendula.domain.TaskList
/** What to fetch from the provider. Smart-list date logic is applied above this. */
data class TaskQuery(
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/data/tasks/TasksRepository.kt b/app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/TasksRepository.kt
similarity index 76%
rename from app/src/main/java/de/jeanlucmakiola/floret/data/tasks/TasksRepository.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/TasksRepository.kt
index 72b226b..82c5148 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/data/tasks/TasksRepository.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/TasksRepository.kt
@@ -1,14 +1,14 @@
-package de.jeanlucmakiola.floret.data.tasks
+package de.jeanlucmakiola.agendula.data.tasks
-import de.jeanlucmakiola.floret.domain.Task
-import de.jeanlucmakiola.floret.domain.TaskDetail
-import de.jeanlucmakiola.floret.domain.TaskFilter
-import de.jeanlucmakiola.floret.domain.TaskForm
-import de.jeanlucmakiola.floret.domain.TaskList
+import de.jeanlucmakiola.agendula.domain.Task
+import de.jeanlucmakiola.agendula.domain.TaskDetail
+import de.jeanlucmakiola.agendula.domain.TaskFilter
+import de.jeanlucmakiola.agendula.domain.TaskForm
+import de.jeanlucmakiola.agendula.domain.TaskList
import kotlinx.coroutines.flow.Flow
import kotlin.time.Instant
-/** Whether Floret can use the tasks provider right now. Drives onboarding. */
+/** Whether Agendula can use the tasks provider right now. Drives onboarding. */
enum class ProviderStatus { READY, NEEDS_PERMISSION, NO_PROVIDER }
/**
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/data/tasks/TasksRepositoryImpl.kt b/app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/TasksRepositoryImpl.kt
similarity index 90%
rename from app/src/main/java/de/jeanlucmakiola/floret/data/tasks/TasksRepositoryImpl.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/TasksRepositoryImpl.kt
index 15aa521..0cc8aa5 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/data/tasks/TasksRepositoryImpl.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/data/tasks/TasksRepositoryImpl.kt
@@ -1,14 +1,14 @@
-package de.jeanlucmakiola.floret.data.tasks
+package de.jeanlucmakiola.agendula.data.tasks
-import de.jeanlucmakiola.floret.data.di.IoDispatcher
-import de.jeanlucmakiola.floret.domain.DayWindow
-import de.jeanlucmakiola.floret.domain.Task
-import de.jeanlucmakiola.floret.domain.TaskDetail
-import de.jeanlucmakiola.floret.domain.TaskFilter
-import de.jeanlucmakiola.floret.domain.TaskFiltering
-import de.jeanlucmakiola.floret.domain.TaskForm
-import de.jeanlucmakiola.floret.domain.TaskList
-import de.jeanlucmakiola.floret.domain.TaskSorting
+import de.jeanlucmakiola.agendula.data.di.IoDispatcher
+import de.jeanlucmakiola.agendula.domain.DayWindow
+import de.jeanlucmakiola.agendula.domain.Task
+import de.jeanlucmakiola.agendula.domain.TaskDetail
+import de.jeanlucmakiola.agendula.domain.TaskFilter
+import de.jeanlucmakiola.agendula.domain.TaskFiltering
+import de.jeanlucmakiola.agendula.domain.TaskForm
+import de.jeanlucmakiola.agendula.domain.TaskList
+import de.jeanlucmakiola.agendula.domain.TaskSorting
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.channels.awaitClose
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/domain/DayWindow.kt b/app/src/main/java/de/jeanlucmakiola/agendula/domain/DayWindow.kt
similarity index 94%
rename from app/src/main/java/de/jeanlucmakiola/floret/domain/DayWindow.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/domain/DayWindow.kt
index 374ea36..fed4eeb 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/domain/DayWindow.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/domain/DayWindow.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.domain
+package de.jeanlucmakiola.agendula.domain
import java.time.ZoneId
import kotlin.time.Instant
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/domain/Models.kt b/app/src/main/java/de/jeanlucmakiola/agendula/domain/Models.kt
similarity index 94%
rename from app/src/main/java/de/jeanlucmakiola/floret/domain/Models.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/domain/Models.kt
index 4eeb306..47e8e68 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/domain/Models.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/domain/Models.kt
@@ -1,6 +1,6 @@
-package de.jeanlucmakiola.floret.domain
+package de.jeanlucmakiola.agendula.domain
-import de.jeanlucmakiola.floret.data.tasks.TasksContract
+import de.jeanlucmakiola.agendula.data.tasks.TasksContract
import kotlin.time.Instant
/** A task list (the `tasklists` table). Lists group under their account. */
@@ -14,7 +14,7 @@ data class TaskList(
val isVisible: Boolean,
val owner: String?,
) {
- /** A device-only list Floret (or another app) created locally, not synced. */
+ /** A device-only list Agendula (or another app) created locally, not synced. */
val isLocal: Boolean get() = accountType == TasksContract.LOCAL_ACCOUNT_TYPE
}
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/domain/TaskFilter.kt b/app/src/main/java/de/jeanlucmakiola/agendula/domain/TaskFilter.kt
similarity index 97%
rename from app/src/main/java/de/jeanlucmakiola/floret/domain/TaskFilter.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/domain/TaskFilter.kt
index 70d7858..e0e8550 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/domain/TaskFilter.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/domain/TaskFilter.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.domain
+package de.jeanlucmakiola.agendula.domain
import kotlin.time.Instant
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/domain/TaskForm.kt b/app/src/main/java/de/jeanlucmakiola/agendula/domain/TaskForm.kt
similarity index 94%
rename from app/src/main/java/de/jeanlucmakiola/floret/domain/TaskForm.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/domain/TaskForm.kt
index 1852152..3d78fc2 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/domain/TaskForm.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/domain/TaskForm.kt
@@ -1,11 +1,11 @@
-package de.jeanlucmakiola.floret.domain
+package de.jeanlucmakiola.agendula.domain
import kotlin.time.Instant
/**
* A validated create/edit form. Kept free of Android types so ViewModels and
* tests can build and validate it on the JVM. The data layer turns it into
- * provider ContentValues ([de.jeanlucmakiola.floret.data.tasks.TaskWriteMapper]).
+ * provider ContentValues ([de.jeanlucmakiola.agendula.data.tasks.TaskWriteMapper]).
*/
data class TaskForm(
val title: String,
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/domain/TaskSections.kt b/app/src/main/java/de/jeanlucmakiola/agendula/domain/TaskSections.kt
similarity index 97%
rename from app/src/main/java/de/jeanlucmakiola/floret/domain/TaskSections.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/domain/TaskSections.kt
index 167e379..f25a608 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/domain/TaskSections.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/domain/TaskSections.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.domain
+package de.jeanlucmakiola.agendula.domain
import kotlin.time.Instant
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/domain/TaskSorting.kt b/app/src/main/java/de/jeanlucmakiola/agendula/domain/TaskSorting.kt
similarity index 91%
rename from app/src/main/java/de/jeanlucmakiola/floret/domain/TaskSorting.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/domain/TaskSorting.kt
index 98915ba..82055d4 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/domain/TaskSorting.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/domain/TaskSorting.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.domain
+package de.jeanlucmakiola.agendula.domain
/** Default task ordering, extracted so it's unit-testable without the repository. */
object TaskSorting {
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/RootScreen.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/RootScreen.kt
similarity index 86%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/RootScreen.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/RootScreen.kt
index 49290c2..e481bd7 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/RootScreen.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/RootScreen.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.ui
+package de.jeanlucmakiola.agendula.ui
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.result.contract.ActivityResultContracts
@@ -18,16 +18,16 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
-import de.jeanlucmakiola.floret.R
-import de.jeanlucmakiola.floret.data.tasks.ProviderStatus
-import de.jeanlucmakiola.floret.ui.navigation.FloretNavHost
-import de.jeanlucmakiola.floret.ui.permission.PermissionViewModel
-import de.jeanlucmakiola.floret.ui.permission.ReminderOnboardingScreen
-import de.jeanlucmakiola.floret.ui.permission.ReminderOnboardingViewModel
+import de.jeanlucmakiola.agendula.R
+import de.jeanlucmakiola.agendula.data.tasks.ProviderStatus
+import de.jeanlucmakiola.agendula.ui.navigation.AgendulaNavHost
+import de.jeanlucmakiola.agendula.ui.permission.PermissionViewModel
+import de.jeanlucmakiola.agendula.ui.permission.ReminderOnboardingScreen
+import de.jeanlucmakiola.agendula.ui.permission.ReminderOnboardingViewModel
/**
* App root: gates on the tasks-provider permission, then hands off to
- * [FloretNavHost] (lists → task list → detail / edit).
+ * [AgendulaNavHost] (lists → task list → detail / edit).
*/
@Composable
fun RootScreen(
@@ -70,7 +70,7 @@ private fun ReadyGate(
val done by onboardingViewModel.onboardingDone.collectAsStateWithLifecycle()
Crossfade(targetState = done, label = "reminderOnboardingGate") { state ->
when (state) {
- true -> FloretNavHost(modifier = modifier)
+ true -> AgendulaNavHost(modifier = modifier)
false -> ReminderOnboardingScreen(
onFinished = onboardingViewModel::finish,
modifier = modifier,
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/common/CollapsingScaffold.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/common/CollapsingScaffold.kt
similarity index 97%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/common/CollapsingScaffold.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/common/CollapsingScaffold.kt
index e51999f..87754c7 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/common/CollapsingScaffold.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/common/CollapsingScaffold.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.ui.common
+package de.jeanlucmakiola.agendula.ui.common
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Column
@@ -25,7 +25,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
-import de.jeanlucmakiola.floret.R
+import de.jeanlucmakiola.agendula.R
/**
* Shared collapsing scaffold for the settings hub, its sub-screens and the
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/common/DateTimeField.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/common/DateTimeField.kt
similarity index 98%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/common/DateTimeField.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/common/DateTimeField.kt
index d9915ba..cfb6a1e 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/common/DateTimeField.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/common/DateTimeField.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.ui.common
+package de.jeanlucmakiola.agendula.ui.common
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
@@ -31,7 +31,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
-import de.jeanlucmakiola.floret.R
+import de.jeanlucmakiola.agendula.R
import java.time.LocalDate
import java.time.LocalTime
import java.time.ZoneId
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/common/DateTimeFormat.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/common/DateTimeFormat.kt
similarity index 96%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/common/DateTimeFormat.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/common/DateTimeFormat.kt
index bdf347d..82898c7 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/common/DateTimeFormat.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/common/DateTimeFormat.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.ui.common
+package de.jeanlucmakiola.agendula.ui.common
import java.time.ZoneId
import java.time.format.DateTimeFormatter
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/common/GroupedList.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/common/GroupedList.kt
similarity index 99%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/common/GroupedList.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/common/GroupedList.kt
index 7d74f20..7914f72 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/common/GroupedList.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/common/GroupedList.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.ui.common
+package de.jeanlucmakiola.agendula.ui.common
import androidx.compose.animation.core.animateDpAsState
import androidx.compose.foundation.interaction.MutableInteractionSource
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/common/InlineTextField.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/common/InlineTextField.kt
similarity index 95%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/common/InlineTextField.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/common/InlineTextField.kt
index fa4da56..60a6f31 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/common/InlineTextField.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/common/InlineTextField.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.ui.common
+package de.jeanlucmakiola.agendula.ui.common
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxWidth
@@ -20,7 +20,7 @@ import androidx.compose.ui.unit.dp
/**
* The app's borderless text input: no underline, no outline, just the tonal
- * card behind it. Floret uses this inside a tonal [androidx.compose.material3.Surface]
+ * card behind it. Agendula uses this inside a tonal [androidx.compose.material3.Surface]
* for the edit form (title + cards), so anything that takes text reads as one
* family rather than a boxed Material field. Ported from Calendula so the two
* apps share one input style.
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/common/ListChip.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/common/ListChip.kt
similarity index 97%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/common/ListChip.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/common/ListChip.kt
index 1a987bf..7676335 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/common/ListChip.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/common/ListChip.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.ui.common
+package de.jeanlucmakiola.agendula.ui.common
import androidx.compose.foundation.background
import androidx.compose.foundation.isSystemInDarkTheme
@@ -39,7 +39,7 @@ fun pastelize(rawArgb: Int, dark: Boolean): Color {
/**
* Leading avatar for a task list: a neutral round chip holding a checklist glyph
* tinted in the list's (pastelised) colour — the Calendula calendar-chip pattern,
- * with a task icon for Floret.
+ * with a task icon for Agendula.
*/
@Composable
fun ListColorChip(color: Int, modifier: Modifier = Modifier) {
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/common/OptionCard.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/common/OptionCard.kt
similarity index 98%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/common/OptionCard.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/common/OptionCard.kt
index dfad3da..84186aa 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/common/OptionCard.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/common/OptionCard.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.ui.common
+package de.jeanlucmakiola.agendula.ui.common
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/common/OptionPicker.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/common/OptionPicker.kt
similarity index 98%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/common/OptionPicker.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/common/OptionPicker.kt
index a5746bf..50581a8 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/common/OptionPicker.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/common/OptionPicker.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.ui.common
+package de.jeanlucmakiola.agendula.ui.common
import androidx.compose.foundation.layout.ColumnScope
import androidx.compose.material.icons.Icons
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/common/PriorityChip.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/common/PriorityChip.kt
similarity index 97%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/common/PriorityChip.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/common/PriorityChip.kt
index b659fe3..4abaca1 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/common/PriorityChip.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/common/PriorityChip.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.ui.common
+package de.jeanlucmakiola.agendula.ui.common
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.isSystemInDarkTheme
@@ -21,7 +21,7 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.isSpecified
import androidx.compose.ui.graphics.luminance
import androidx.compose.ui.unit.dp
-import de.jeanlucmakiola.floret.domain.Priority
+import de.jeanlucmakiola.agendula.domain.Priority
/**
* Priority has no semantic Material role (M3 only ships `error` for danger), so
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/common/ReminderFormatting.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/common/ReminderFormatting.kt
similarity index 95%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/common/ReminderFormatting.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/common/ReminderFormatting.kt
index 4640c16..9376a4f 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/common/ReminderFormatting.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/common/ReminderFormatting.kt
@@ -1,10 +1,10 @@
-package de.jeanlucmakiola.floret.ui.common
+package de.jeanlucmakiola.agendula.ui.common
import androidx.annotation.StringRes
import androidx.compose.runtime.Composable
import androidx.compose.ui.res.pluralStringResource
import androidx.compose.ui.res.stringResource
-import de.jeanlucmakiola.floret.R
+import de.jeanlucmakiola.agendula.R
/** Common reminder lead times offered as quick picks in the reminder pickers. */
val REMINDER_PRESETS = listOf(0, 5, 10, 30, 60, 1_440)
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/common/ReminderLeadPicker.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/common/ReminderLeadPicker.kt
similarity index 98%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/common/ReminderLeadPicker.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/common/ReminderLeadPicker.kt
index 91bf55e..82bfe7d 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/common/ReminderLeadPicker.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/common/ReminderLeadPicker.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.ui.common
+package de.jeanlucmakiola.agendula.ui.common
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.expandVertically
@@ -30,8 +30,8 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.unit.dp
-import de.jeanlucmakiola.floret.R
-import de.jeanlucmakiola.floret.data.prefs.ListReminderOverride
+import de.jeanlucmakiola.agendula.R
+import de.jeanlucmakiola.agendula.data.prefs.ListReminderOverride
/**
* Reminder lead-time picker, full-screen: the grouped list of preset lead times
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/common/ShapedActionButton.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/common/ShapedActionButton.kt
similarity index 98%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/common/ShapedActionButton.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/common/ShapedActionButton.kt
index 8a4da87..d80de66 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/common/ShapedActionButton.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/common/ShapedActionButton.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.ui.common
+package de.jeanlucmakiola.agendula.ui.common
import androidx.compose.animation.core.animateFloatAsState
import androidx.compose.foundation.interaction.MutableInteractionSource
@@ -26,7 +26,7 @@ import androidx.graphics.shapes.RoundedPolygon
/**
* A top-bar action whose icon sits in a tonal container clipped to one of the
- * M3 Expressive [MaterialShapes] (cookie, clover, sunny, …) — Floret's playful
+ * M3 Expressive [MaterialShapes] (cookie, clover, sunny, …) — Agendula's playful
* take on a plain [androidx.compose.material3.IconButton]. Each action passes
* its own [shape] and [containerColor], so a row of them reads as a set of
* distinct little tokens rather than identical grey glyphs.
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/detail/TaskDetailScreen.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/detail/TaskDetailScreen.kt
similarity index 97%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/detail/TaskDetailScreen.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/detail/TaskDetailScreen.kt
index 4368e57..ae5c97f 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/detail/TaskDetailScreen.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/detail/TaskDetailScreen.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.ui.detail
+package de.jeanlucmakiola.agendula.ui.detail
import androidx.compose.animation.core.animateFloatAsState
import androidx.compose.foundation.background
@@ -67,16 +67,16 @@ import androidx.compose.ui.text.style.TextDecoration
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
-import de.jeanlucmakiola.floret.R
-import de.jeanlucmakiola.floret.domain.Task
-import de.jeanlucmakiola.floret.domain.TaskDetail
-import de.jeanlucmakiola.floret.ui.common.GroupedSurface
-import de.jeanlucmakiola.floret.ui.common.PriorityChip
-import de.jeanlucmakiola.floret.ui.common.formatDate
-import de.jeanlucmakiola.floret.ui.common.formatTime
-import de.jeanlucmakiola.floret.ui.common.pastelize
-import de.jeanlucmakiola.floret.ui.common.positionOf
-import de.jeanlucmakiola.floret.ui.tasklist.priorityLabel
+import de.jeanlucmakiola.agendula.R
+import de.jeanlucmakiola.agendula.domain.Task
+import de.jeanlucmakiola.agendula.domain.TaskDetail
+import de.jeanlucmakiola.agendula.ui.common.GroupedSurface
+import de.jeanlucmakiola.agendula.ui.common.PriorityChip
+import de.jeanlucmakiola.agendula.ui.common.formatDate
+import de.jeanlucmakiola.agendula.ui.common.formatTime
+import de.jeanlucmakiola.agendula.ui.common.pastelize
+import de.jeanlucmakiola.agendula.ui.common.positionOf
+import de.jeanlucmakiola.agendula.ui.tasklist.priorityLabel
/**
* One task's detail. Each fact is its own tonal card with a leading icon (the
@@ -246,7 +246,7 @@ private fun DetailBody(
}
// Priority — a coloured status chip in the level's hue.
- if (task.priority != de.jeanlucmakiola.floret.domain.Priority.NONE) {
+ if (task.priority != de.jeanlucmakiola.agendula.domain.Priority.NONE) {
add {
DetailCard(
icon = Icons.Rounded.Flag,
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/detail/TaskDetailViewModel.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/detail/TaskDetailViewModel.kt
similarity index 90%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/detail/TaskDetailViewModel.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/detail/TaskDetailViewModel.kt
index a43b896..2e48a3a 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/detail/TaskDetailViewModel.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/detail/TaskDetailViewModel.kt
@@ -1,12 +1,12 @@
-package de.jeanlucmakiola.floret.ui.detail
+package de.jeanlucmakiola.agendula.ui.detail
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
-import de.jeanlucmakiola.floret.data.tasks.TasksRepository
-import de.jeanlucmakiola.floret.domain.Task
-import de.jeanlucmakiola.floret.domain.TaskDetail
-import de.jeanlucmakiola.floret.domain.TaskForm
+import de.jeanlucmakiola.agendula.data.tasks.TasksRepository
+import de.jeanlucmakiola.agendula.domain.Task
+import de.jeanlucmakiola.agendula.domain.TaskDetail
+import de.jeanlucmakiola.agendula.domain.TaskForm
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/edit/TaskEditScreen.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/edit/TaskEditScreen.kt
similarity index 96%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/edit/TaskEditScreen.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/edit/TaskEditScreen.kt
index 385f256..7afa13a 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/edit/TaskEditScreen.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/edit/TaskEditScreen.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.ui.edit
+package de.jeanlucmakiola.agendula.ui.edit
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.expandVertically
@@ -85,27 +85,27 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
-import de.jeanlucmakiola.floret.R
-import de.jeanlucmakiola.floret.domain.DayWindow
-import de.jeanlucmakiola.floret.domain.Priority
-import de.jeanlucmakiola.floret.domain.Task
-import de.jeanlucmakiola.floret.domain.TaskFormError
-import de.jeanlucmakiola.floret.domain.TaskFormField
-import de.jeanlucmakiola.floret.domain.TaskList
-import de.jeanlucmakiola.floret.domain.TaskSection
-import de.jeanlucmakiola.floret.domain.TaskSections
-import de.jeanlucmakiola.floret.ui.common.GroupedRow
-import de.jeanlucmakiola.floret.ui.common.InlineTextField
-import de.jeanlucmakiola.floret.ui.common.OptionCard
-import de.jeanlucmakiola.floret.ui.common.priorityFill
-import de.jeanlucmakiola.floret.ui.common.formatDate
-import de.jeanlucmakiola.floret.ui.common.formatTime
-import de.jeanlucmakiola.floret.ui.common.localToInstant
-import de.jeanlucmakiola.floret.ui.common.pastelize
-import de.jeanlucmakiola.floret.ui.common.positionOf
-import de.jeanlucmakiola.floret.ui.common.toLocalDate
-import de.jeanlucmakiola.floret.ui.common.toLocalTime
-import de.jeanlucmakiola.floret.ui.tasklist.priorityLabel
+import de.jeanlucmakiola.agendula.R
+import de.jeanlucmakiola.agendula.domain.DayWindow
+import de.jeanlucmakiola.agendula.domain.Priority
+import de.jeanlucmakiola.agendula.domain.Task
+import de.jeanlucmakiola.agendula.domain.TaskFormError
+import de.jeanlucmakiola.agendula.domain.TaskFormField
+import de.jeanlucmakiola.agendula.domain.TaskList
+import de.jeanlucmakiola.agendula.domain.TaskSection
+import de.jeanlucmakiola.agendula.domain.TaskSections
+import de.jeanlucmakiola.agendula.ui.common.GroupedRow
+import de.jeanlucmakiola.agendula.ui.common.InlineTextField
+import de.jeanlucmakiola.agendula.ui.common.OptionCard
+import de.jeanlucmakiola.agendula.ui.common.priorityFill
+import de.jeanlucmakiola.agendula.ui.common.formatDate
+import de.jeanlucmakiola.agendula.ui.common.formatTime
+import de.jeanlucmakiola.agendula.ui.common.localToInstant
+import de.jeanlucmakiola.agendula.ui.common.pastelize
+import de.jeanlucmakiola.agendula.ui.common.positionOf
+import de.jeanlucmakiola.agendula.ui.common.toLocalDate
+import de.jeanlucmakiola.agendula.ui.common.toLocalTime
+import de.jeanlucmakiola.agendula.ui.tasklist.priorityLabel
import java.time.LocalTime
import java.time.ZoneId
import java.time.ZoneOffset
@@ -119,7 +119,7 @@ import kotlin.time.Instant
* "When" card with the all-day toggle and tappable schedule rows, a tappable
* list card, and the optional Description / Priority / Reminder sections that
* unfold from "More fields" (which ones start open is a setting). Validated
- * through the M1 [TaskEditViewModel] / [de.jeanlucmakiola.floret.domain.TaskForm];
+ * through the M1 [TaskEditViewModel] / [de.jeanlucmakiola.agendula.domain.TaskForm];
* the VM flips `saved` once the write lands, which pops us back.
*/
@OptIn(ExperimentalMaterial3Api::class)
@@ -853,7 +853,7 @@ private fun ParentPickerSheet(
item(key = "none") {
GroupedRow(
title = stringResource(R.string.edit_parent_none),
- position = de.jeanlucmakiola.floret.ui.common.Position.Alone,
+ position = de.jeanlucmakiola.agendula.ui.common.Position.Alone,
selected = selectedId == null,
minHeight = 56.dp,
onClick = { choose(null) },
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/edit/TaskEditViewModel.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/edit/TaskEditViewModel.kt
similarity index 93%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/edit/TaskEditViewModel.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/edit/TaskEditViewModel.kt
index 47d6d17..d25d0e5 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/edit/TaskEditViewModel.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/edit/TaskEditViewModel.kt
@@ -1,20 +1,20 @@
-package de.jeanlucmakiola.floret.ui.edit
+package de.jeanlucmakiola.agendula.ui.edit
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
-import de.jeanlucmakiola.floret.data.prefs.SettingsPrefs
-import de.jeanlucmakiola.floret.data.reminders.ReminderScheduler
-import de.jeanlucmakiola.floret.data.tasks.TaskConflictException
-import de.jeanlucmakiola.floret.data.tasks.TasksRepository
-import de.jeanlucmakiola.floret.domain.Priority
-import de.jeanlucmakiola.floret.domain.Task
-import de.jeanlucmakiola.floret.domain.TaskFilter
-import de.jeanlucmakiola.floret.domain.TaskForm
-import de.jeanlucmakiola.floret.domain.TaskFormError
-import de.jeanlucmakiola.floret.domain.TaskFormField
-import de.jeanlucmakiola.floret.domain.TaskList
-import de.jeanlucmakiola.floret.domain.populatedFields
+import de.jeanlucmakiola.agendula.data.prefs.SettingsPrefs
+import de.jeanlucmakiola.agendula.data.reminders.ReminderScheduler
+import de.jeanlucmakiola.agendula.data.tasks.TaskConflictException
+import de.jeanlucmakiola.agendula.data.tasks.TasksRepository
+import de.jeanlucmakiola.agendula.domain.Priority
+import de.jeanlucmakiola.agendula.domain.Task
+import de.jeanlucmakiola.agendula.domain.TaskFilter
+import de.jeanlucmakiola.agendula.domain.TaskForm
+import de.jeanlucmakiola.agendula.domain.TaskFormError
+import de.jeanlucmakiola.agendula.domain.TaskFormField
+import de.jeanlucmakiola.agendula.domain.TaskList
+import de.jeanlucmakiola.agendula.domain.populatedFields
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/lists/ListsScreen.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/lists/ListsScreen.kt
similarity index 95%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/lists/ListsScreen.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/lists/ListsScreen.kt
index a8323c3..bf550bd 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/lists/ListsScreen.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/lists/ListsScreen.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.ui.lists
+package de.jeanlucmakiola.agendula.ui.lists
import androidx.compose.animation.core.animateDpAsState
import androidx.compose.foundation.interaction.MutableInteractionSource
@@ -45,14 +45,14 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
-import de.jeanlucmakiola.floret.R
-import de.jeanlucmakiola.floret.domain.SmartList
-import de.jeanlucmakiola.floret.domain.TaskFilter
-import de.jeanlucmakiola.floret.ui.common.ActionShapes
-import de.jeanlucmakiola.floret.ui.common.GroupedRow
-import de.jeanlucmakiola.floret.ui.common.ListColorChip
-import de.jeanlucmakiola.floret.ui.common.ShapedActionButton
-import de.jeanlucmakiola.floret.ui.common.positionOf
+import de.jeanlucmakiola.agendula.R
+import de.jeanlucmakiola.agendula.domain.SmartList
+import de.jeanlucmakiola.agendula.domain.TaskFilter
+import de.jeanlucmakiola.agendula.ui.common.ActionShapes
+import de.jeanlucmakiola.agendula.ui.common.GroupedRow
+import de.jeanlucmakiola.agendula.ui.common.ListColorChip
+import de.jeanlucmakiola.agendula.ui.common.ShapedActionButton
+import de.jeanlucmakiola.agendula.ui.common.positionOf
/**
* Home: smart lists (Today / Overdue / Upcoming / All) as tonal cards with live
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/lists/ListsViewModel.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/lists/ListsViewModel.kt
similarity index 87%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/lists/ListsViewModel.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/lists/ListsViewModel.kt
index f1aa332..5af32fd 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/lists/ListsViewModel.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/lists/ListsViewModel.kt
@@ -1,15 +1,15 @@
-package de.jeanlucmakiola.floret.ui.lists
+package de.jeanlucmakiola.agendula.ui.lists
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
-import de.jeanlucmakiola.floret.data.tasks.TasksRepository
-import de.jeanlucmakiola.floret.domain.DayWindow
-import de.jeanlucmakiola.floret.domain.SmartList
-import de.jeanlucmakiola.floret.domain.Task
-import de.jeanlucmakiola.floret.domain.TaskFilter
-import de.jeanlucmakiola.floret.domain.TaskFiltering
-import de.jeanlucmakiola.floret.domain.TaskList
+import de.jeanlucmakiola.agendula.data.tasks.TasksRepository
+import de.jeanlucmakiola.agendula.domain.DayWindow
+import de.jeanlucmakiola.agendula.domain.SmartList
+import de.jeanlucmakiola.agendula.domain.Task
+import de.jeanlucmakiola.agendula.domain.TaskFilter
+import de.jeanlucmakiola.agendula.domain.TaskFiltering
+import de.jeanlucmakiola.agendula.domain.TaskList
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.catch
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/navigation/FloretNavHost.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/navigation/AgendulaNavHost.kt
similarity index 88%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/navigation/FloretNavHost.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/navigation/AgendulaNavHost.kt
index b421d9a..4abcc52 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/navigation/FloretNavHost.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/navigation/AgendulaNavHost.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.ui.navigation
+package de.jeanlucmakiola.agendula.ui.navigation
import androidx.compose.animation.EnterTransition
import androidx.compose.animation.ExitTransition
@@ -12,15 +12,15 @@ import androidx.hilt.navigation.compose.hiltViewModel
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
-import de.jeanlucmakiola.floret.domain.TaskFilter
-import de.jeanlucmakiola.floret.ui.detail.TaskDetailScreen
-import de.jeanlucmakiola.floret.ui.detail.TaskDetailViewModel
-import de.jeanlucmakiola.floret.ui.edit.TaskEditScreen
-import de.jeanlucmakiola.floret.ui.edit.TaskEditViewModel
-import de.jeanlucmakiola.floret.ui.lists.ListsScreen
-import de.jeanlucmakiola.floret.ui.settings.SettingsScreen
-import de.jeanlucmakiola.floret.ui.tasklist.TaskListScreen
-import de.jeanlucmakiola.floret.ui.tasklist.TaskListViewModel
+import de.jeanlucmakiola.agendula.domain.TaskFilter
+import de.jeanlucmakiola.agendula.ui.detail.TaskDetailScreen
+import de.jeanlucmakiola.agendula.ui.detail.TaskDetailViewModel
+import de.jeanlucmakiola.agendula.ui.edit.TaskEditScreen
+import de.jeanlucmakiola.agendula.ui.edit.TaskEditViewModel
+import de.jeanlucmakiola.agendula.ui.lists.ListsScreen
+import de.jeanlucmakiola.agendula.ui.settings.SettingsScreen
+import de.jeanlucmakiola.agendula.ui.tasklist.TaskListScreen
+import de.jeanlucmakiola.agendula.ui.tasklist.TaskListViewModel
/**
* The single in-app back stack: lists → task list → detail / edit.
@@ -32,7 +32,7 @@ import de.jeanlucmakiola.floret.ui.tasklist.TaskListViewModel
* unaware of the nav library.
*/
@Composable
-fun FloretNavHost(modifier: Modifier = Modifier) {
+fun AgendulaNavHost(modifier: Modifier = Modifier) {
val nav = rememberNavController()
val slide = rememberNavSlideSpec()
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/navigation/FloretTransitions.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/navigation/AgendulaTransitions.kt
similarity index 94%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/navigation/FloretTransitions.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/navigation/AgendulaTransitions.kt
index 1b327e9..2ee421d 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/navigation/FloretTransitions.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/navigation/AgendulaTransitions.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.ui.navigation
+package de.jeanlucmakiola.agendula.ui.navigation
import androidx.compose.animation.core.FiniteAnimationSpec
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/navigation/Destinations.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/navigation/Destinations.kt
similarity index 95%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/navigation/Destinations.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/navigation/Destinations.kt
index 91bee1d..274bbbf 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/navigation/Destinations.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/navigation/Destinations.kt
@@ -1,9 +1,9 @@
-package de.jeanlucmakiola.floret.ui.navigation
+package de.jeanlucmakiola.agendula.ui.navigation
import androidx.navigation.NavType
import androidx.navigation.navArgument
-import de.jeanlucmakiola.floret.domain.SmartList
-import de.jeanlucmakiola.floret.domain.TaskFilter
+import de.jeanlucmakiola.agendula.domain.SmartList
+import de.jeanlucmakiola.agendula.domain.TaskFilter
/**
* String-based route table for the app's [androidx.navigation.NavHost].
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/permission/OnboardingScaffold.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/permission/OnboardingScaffold.kt
similarity index 99%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/permission/OnboardingScaffold.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/permission/OnboardingScaffold.kt
index 1c37304..5e02212 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/permission/OnboardingScaffold.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/permission/OnboardingScaffold.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.ui.permission
+package de.jeanlucmakiola.agendula.ui.permission
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/permission/PermissionViewModel.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/permission/PermissionViewModel.kt
similarity index 86%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/permission/PermissionViewModel.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/permission/PermissionViewModel.kt
index df82d63..9e6760a 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/permission/PermissionViewModel.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/permission/PermissionViewModel.kt
@@ -1,10 +1,10 @@
-package de.jeanlucmakiola.floret.ui.permission
+package de.jeanlucmakiola.agendula.ui.permission
import androidx.lifecycle.ViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
-import de.jeanlucmakiola.floret.data.tasks.ProviderResolver
-import de.jeanlucmakiola.floret.data.tasks.ProviderStatus
-import de.jeanlucmakiola.floret.data.tasks.TasksRepository
+import de.jeanlucmakiola.agendula.data.tasks.ProviderResolver
+import de.jeanlucmakiola.agendula.data.tasks.ProviderStatus
+import de.jeanlucmakiola.agendula.data.tasks.TasksRepository
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/permission/ReminderOnboardingScreen.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/permission/ReminderOnboardingScreen.kt
similarity index 97%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/permission/ReminderOnboardingScreen.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/permission/ReminderOnboardingScreen.kt
index 8cb4567..be88022 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/permission/ReminderOnboardingScreen.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/permission/ReminderOnboardingScreen.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.ui.permission
+package de.jeanlucmakiola.agendula.ui.permission
import android.Manifest
import android.os.Build
@@ -21,10 +21,10 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
-import de.jeanlucmakiola.floret.R
+import de.jeanlucmakiola.agendula.R
/**
- * One-time onboarding step after the tasks-provider grant: explains that Floret
+ * One-time onboarding step after the tasks-provider grant: explains that Agendula
* delivers due reminders itself (tasks providers don't broadcast reminders) and
* requests `POST_NOTIFICATIONS` (a system dialog on API 33+ only).
*
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/permission/ReminderOnboardingViewModel.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/permission/ReminderOnboardingViewModel.kt
similarity index 92%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/permission/ReminderOnboardingViewModel.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/permission/ReminderOnboardingViewModel.kt
index 8432a15..cac8cda 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/permission/ReminderOnboardingViewModel.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/permission/ReminderOnboardingViewModel.kt
@@ -1,9 +1,9 @@
-package de.jeanlucmakiola.floret.ui.permission
+package de.jeanlucmakiola.agendula.ui.permission
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
-import de.jeanlucmakiola.floret.data.prefs.SettingsPrefs
+import de.jeanlucmakiola.agendula.data.prefs.SettingsPrefs
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.map
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/settings/AppLanguage.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/settings/AppLanguage.kt
similarity index 97%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/settings/AppLanguage.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/settings/AppLanguage.kt
index 795cf8a..4baed11 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/settings/AppLanguage.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/settings/AppLanguage.kt
@@ -1,9 +1,9 @@
-package de.jeanlucmakiola.floret.ui.settings
+package de.jeanlucmakiola.agendula.ui.settings
import android.content.Context
import androidx.appcompat.app.AppCompatDelegate
import androidx.core.os.LocaleListCompat
-import de.jeanlucmakiola.floret.R
+import de.jeanlucmakiola.agendula.R
import org.xmlpull.v1.XmlPullParser
import java.util.Locale
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/settings/SettingsScreen.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/settings/SettingsScreen.kt
similarity index 97%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/settings/SettingsScreen.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/settings/SettingsScreen.kt
index 6e2f1f4..e8457ca 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/settings/SettingsScreen.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/settings/SettingsScreen.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.ui.settings
+package de.jeanlucmakiola.agendula.ui.settings
import android.Manifest
import android.app.AlarmManager
@@ -83,18 +83,18 @@ import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleEventObserver
import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.lifecycle.compose.collectAsStateWithLifecycle
-import de.jeanlucmakiola.floret.R
-import de.jeanlucmakiola.floret.data.prefs.ListReminderOverride
-import de.jeanlucmakiola.floret.data.prefs.ThemeMode
-import de.jeanlucmakiola.floret.domain.TaskFormField
-import de.jeanlucmakiola.floret.ui.common.CollapsingScaffold
-import de.jeanlucmakiola.floret.ui.common.GroupedRow
-import de.jeanlucmakiola.floret.ui.common.OptionPicker
-import de.jeanlucmakiola.floret.ui.common.Position
-import de.jeanlucmakiola.floret.ui.common.ReminderLeadPicker
-import de.jeanlucmakiola.floret.ui.common.pastelize
-import de.jeanlucmakiola.floret.ui.common.positionOf
-import de.jeanlucmakiola.floret.ui.common.reminderLeadTimeLabel
+import de.jeanlucmakiola.agendula.R
+import de.jeanlucmakiola.agendula.data.prefs.ListReminderOverride
+import de.jeanlucmakiola.agendula.data.prefs.ThemeMode
+import de.jeanlucmakiola.agendula.domain.TaskFormField
+import de.jeanlucmakiola.agendula.ui.common.CollapsingScaffold
+import de.jeanlucmakiola.agendula.ui.common.GroupedRow
+import de.jeanlucmakiola.agendula.ui.common.OptionPicker
+import de.jeanlucmakiola.agendula.ui.common.Position
+import de.jeanlucmakiola.agendula.ui.common.ReminderLeadPicker
+import de.jeanlucmakiola.agendula.ui.common.pastelize
+import de.jeanlucmakiola.agendula.ui.common.positionOf
+import de.jeanlucmakiola.agendula.ui.common.reminderLeadTimeLabel
/** The settings sub-screens reached from the hub's category rows. */
private enum class SettingsSection { Appearance, TaskForm, Reminders }
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/settings/SettingsViewModel.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/settings/SettingsViewModel.kt
similarity index 83%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/settings/SettingsViewModel.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/settings/SettingsViewModel.kt
index 8b47058..f9171f6 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/settings/SettingsViewModel.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/settings/SettingsViewModel.kt
@@ -1,15 +1,15 @@
-package de.jeanlucmakiola.floret.ui.settings
+package de.jeanlucmakiola.agendula.ui.settings
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
-import de.jeanlucmakiola.floret.data.prefs.ListReminderOverride
-import de.jeanlucmakiola.floret.data.prefs.Settings
-import de.jeanlucmakiola.floret.data.prefs.SettingsPrefs
-import de.jeanlucmakiola.floret.data.prefs.ThemeMode
-import de.jeanlucmakiola.floret.data.tasks.TasksRepository
-import de.jeanlucmakiola.floret.domain.TaskFormField
-import de.jeanlucmakiola.floret.domain.TaskList
+import de.jeanlucmakiola.agendula.data.prefs.ListReminderOverride
+import de.jeanlucmakiola.agendula.data.prefs.Settings
+import de.jeanlucmakiola.agendula.data.prefs.SettingsPrefs
+import de.jeanlucmakiola.agendula.data.prefs.ThemeMode
+import de.jeanlucmakiola.agendula.data.tasks.TasksRepository
+import de.jeanlucmakiola.agendula.domain.TaskFormField
+import de.jeanlucmakiola.agendula.domain.TaskList
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.catch
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/tasklist/TaskListScreen.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/tasklist/TaskListScreen.kt
similarity index 98%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/tasklist/TaskListScreen.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/tasklist/TaskListScreen.kt
index 723bcf0..9ccf40d 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/tasklist/TaskListScreen.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/tasklist/TaskListScreen.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.ui.tasklist
+package de.jeanlucmakiola.agendula.ui.tasklist
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.core.animateDpAsState
@@ -80,20 +80,20 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
-import de.jeanlucmakiola.floret.R
-import de.jeanlucmakiola.floret.domain.DayWindow
-import de.jeanlucmakiola.floret.domain.Priority
-import de.jeanlucmakiola.floret.domain.SmartList
-import de.jeanlucmakiola.floret.domain.Task
-import de.jeanlucmakiola.floret.domain.TaskFilter
-import de.jeanlucmakiola.floret.domain.TaskSection
-import de.jeanlucmakiola.floret.domain.TaskSections
-import de.jeanlucmakiola.floret.ui.common.ListNameChip
-import de.jeanlucmakiola.floret.ui.common.Position
-import de.jeanlucmakiola.floret.ui.common.PriorityChip
-import de.jeanlucmakiola.floret.ui.common.formatDateTime
-import de.jeanlucmakiola.floret.ui.common.pastelize
-import de.jeanlucmakiola.floret.ui.common.positionOf
+import de.jeanlucmakiola.agendula.R
+import de.jeanlucmakiola.agendula.domain.DayWindow
+import de.jeanlucmakiola.agendula.domain.Priority
+import de.jeanlucmakiola.agendula.domain.SmartList
+import de.jeanlucmakiola.agendula.domain.Task
+import de.jeanlucmakiola.agendula.domain.TaskFilter
+import de.jeanlucmakiola.agendula.domain.TaskSection
+import de.jeanlucmakiola.agendula.domain.TaskSections
+import de.jeanlucmakiola.agendula.ui.common.ListNameChip
+import de.jeanlucmakiola.agendula.ui.common.Position
+import de.jeanlucmakiola.agendula.ui.common.PriorityChip
+import de.jeanlucmakiola.agendula.ui.common.formatDateTime
+import de.jeanlucmakiola.agendula.ui.common.pastelize
+import de.jeanlucmakiola.agendula.ui.common.positionOf
import java.time.ZoneId
import kotlin.time.Clock
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/tasklist/TaskListViewModel.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/tasklist/TaskListViewModel.kt
similarity index 94%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/tasklist/TaskListViewModel.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/tasklist/TaskListViewModel.kt
index 5114030..1f31c52 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/tasklist/TaskListViewModel.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/tasklist/TaskListViewModel.kt
@@ -1,13 +1,13 @@
-package de.jeanlucmakiola.floret.ui.tasklist
+package de.jeanlucmakiola.agendula.ui.tasklist
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
-import de.jeanlucmakiola.floret.data.prefs.SettingsPrefs
-import de.jeanlucmakiola.floret.data.tasks.TasksRepository
-import de.jeanlucmakiola.floret.domain.Task
-import de.jeanlucmakiola.floret.domain.TaskFilter
-import de.jeanlucmakiola.floret.domain.TaskForm
+import de.jeanlucmakiola.agendula.data.prefs.SettingsPrefs
+import de.jeanlucmakiola.agendula.data.tasks.TasksRepository
+import de.jeanlucmakiola.agendula.domain.Task
+import de.jeanlucmakiola.agendula.domain.TaskFilter
+import de.jeanlucmakiola.agendula.domain.TaskForm
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/theme/Color.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/theme/Color.kt
similarity index 88%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/theme/Color.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/theme/Color.kt
index 0ec5a69..5d4cb54 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/theme/Color.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/theme/Color.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.ui.theme
+package de.jeanlucmakiola.agendula.ui.theme
import androidx.compose.material3.darkColorScheme
import androidx.compose.material3.lightColorScheme
@@ -12,14 +12,14 @@ import androidx.compose.ui.graphics.Color
*
* Placeholder until branding lands; refine alongside the launcher icon.
*/
-val FloretSeed: Color = Color(0xFF7A5C6B)
+val AgendulaSeed: Color = Color(0xFF7A5C6B)
/**
* Fallback light scheme for devices without dynamic color (API < 31) or when
* the user disables it. Dynamic color (API 31+) is the real path; these are a
- * hand-picked approximation of the tonal palette generated from [FloretSeed].
+ * hand-picked approximation of the tonal palette generated from [AgendulaSeed].
*/
-val FloretLightFallback = lightColorScheme(
+val AgendulaLightFallback = lightColorScheme(
primary = Color(0xFF6A4E5B),
onPrimary = Color(0xFFFFFFFF),
primaryContainer = Color(0xFFF6D9E5),
@@ -32,7 +32,7 @@ val FloretLightFallback = lightColorScheme(
onSurface = Color(0xFF1F1A1C),
)
-val FloretDarkFallback = darkColorScheme(
+val AgendulaDarkFallback = darkColorScheme(
primary = Color(0xFFE2BAC9),
onPrimary = Color(0xFF402533),
primaryContainer = Color(0xFF583B49),
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/theme/Theme.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/theme/Theme.kt
similarity index 87%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/theme/Theme.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/theme/Theme.kt
index aef59fc..451db94 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/theme/Theme.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/theme/Theme.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.ui.theme
+package de.jeanlucmakiola.agendula.ui.theme
import android.os.Build
import androidx.compose.foundation.isSystemInDarkTheme
@@ -14,7 +14,7 @@ import androidx.compose.ui.platform.LocalContext
* App theme. Honors:
* - System light/dark.
* - Dynamic Color on API 31+, else falls back to the hand-tuned scheme
- * derived from [FloretSeed].
+ * derived from [AgendulaSeed].
*
* Mirrors Calendula's theme: MaterialExpressiveTheme routes all component +
* custom motion through MaterialTheme.motionScheme. STANDARD over expressive()
@@ -25,7 +25,7 @@ import androidx.compose.ui.platform.LocalContext
*/
@OptIn(ExperimentalMaterial3ExpressiveApi::class)
@Composable
-fun FloretTheme(
+fun AgendulaTheme(
darkTheme: Boolean = isSystemInDarkTheme(),
dynamicColor: Boolean = true,
content: @Composable () -> Unit,
@@ -35,13 +35,13 @@ fun FloretTheme(
val ctx = LocalContext.current
if (darkTheme) dynamicDarkColorScheme(ctx) else dynamicLightColorScheme(ctx)
}
- darkTheme -> FloretDarkFallback
- else -> FloretLightFallback
+ darkTheme -> AgendulaDarkFallback
+ else -> AgendulaLightFallback
}
MaterialExpressiveTheme(
colorScheme = colorScheme,
- typography = FloretTypography,
+ typography = AgendulaTypography,
motionScheme = MotionScheme.standard(),
content = content,
)
diff --git a/app/src/main/java/de/jeanlucmakiola/floret/ui/theme/Type.kt b/app/src/main/java/de/jeanlucmakiola/agendula/ui/theme/Type.kt
similarity index 76%
rename from app/src/main/java/de/jeanlucmakiola/floret/ui/theme/Type.kt
rename to app/src/main/java/de/jeanlucmakiola/agendula/ui/theme/Type.kt
index 4ed8542..1210a21 100644
--- a/app/src/main/java/de/jeanlucmakiola/floret/ui/theme/Type.kt
+++ b/app/src/main/java/de/jeanlucmakiola/agendula/ui/theme/Type.kt
@@ -1,4 +1,4 @@
-package de.jeanlucmakiola.floret.ui.theme
+package de.jeanlucmakiola.agendula.ui.theme
import androidx.compose.material3.Typography
@@ -7,4 +7,4 @@ import androidx.compose.material3.Typography
* land in a later UI-design iteration; the defaults keep the M0 foundation lean
* (same posture as Calendula's scaffolding).
*/
-val FloretTypography = Typography()
+val AgendulaTypography = Typography()
diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml
index c72b21d..676d561 100644
--- a/app/src/main/res/drawable/ic_launcher_foreground.xml
+++ b/app/src/main/res/drawable/ic_launcher_foreground.xml
@@ -1,10 +1,10 @@
- Floret
+ Agendula
A modern Material 3 Expressive task app.\nComing into bloom.
@@ -136,19 +136,19 @@
A tasks app is needed
- Floret shows and edits the tasks stored by OpenTasks or tasks.org, synced by DAVx5. Install one of them to get started.
+ Agendula shows and edits the tasks stored by OpenTasks or tasks.org, synced by DAVx5. Install one of them to get started.
Allow access to your tasks
- Floret needs permission to read and write your tasks. That\'s the only thing it ever asks for.
+ Agendula needs permission to read and write your tasks. That\'s the only thing it ever asks for.
Grant task access
Install OpenTasks
Install tasks.org
Never miss what\'s due
- Tasks apps don\'t send reminders themselves, so Floret delivers them for you. Turn them on to get a notification when a task is due.
+ Tasks apps don\'t send reminders themselves, so Agendula delivers them for you. Turn them on to get a notification when a task is due.
Enable reminders
Not now
- Floret reminds you
+ Agendula reminds you
It schedules a notification for each task with a due date.
On your schedule
Choose how far ahead to be reminded in Settings.
@@ -170,14 +170,14 @@
License
Support development
Version %1$s
- Floret app icon
+ Agendula app icon
App language
System default
Report a problem
Open the issue tracker
- https://gitea.jeanlucmakiola.de/makiolaj/floret
- https://gitea.jeanlucmakiola.de/makiolaj/floret/issues/new
- https://gitea.jeanlucmakiola.de/makiolaj/floret/src/branch/main/LICENSE
+ https://gitea.jeanlucmakiola.de/makiolaj/agendula
+ https://gitea.jeanlucmakiola.de/makiolaj/agendula/issues/new
+ https://gitea.jeanlucmakiola.de/makiolaj/agendula/src/branch/main/LICENSE
https://ko-fi.com/jeanlucmakiola
Theme
Follow system
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 2b18c64..49cb7b6 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -1,5 +1,5 @@
-