All checks were successful
CI / ci (push) Successful in 9m16s
Adds crash reporting to Agendula by drawing the kit's new core-crash module (first Android-library module in floret-kit), and finishes the core-time wiring that a Phase 0 staging slip left uncommitted on main. core-crash (NEW capability — Agendula had none): - CrashReporter.install() in AgendulaApp captures uncaught exceptions on-device (allowlist-only report, chains to the platform handler, uploads nothing). - MainActivity routes to a standalone CrashReportActivity on a startup crash-loop, and surfaces a single captured crash as a dialog on next launch; markHealthy on resume. App label + issue-tracker URL flow in via CrashConfig. - Thin app-side CrashReportActivity uses AgendulaTheme; the reusable machinery (reporter, dialog, submit, config) lives in the kit. Submodule re-pinned to the core-crash kit commit. Completes Phase 0 (was only partially committed inec7b696): - Repoint DayWindow + Instant formatting imports to de.jeanlucmakiola.floret.time (the app copies were deleted inec7b696but the imports/includeBuild/dependency were never staged, leaving main non-building). - settings.gradle.kts includeBuild("floret-kit"); app depends on core-time. Also fixes the CI checkout YAML: the submodules block was mis-indented under 'uses:' (invalid step mapping) — dedented to a proper sibling. Clean composite build + unit tests + lintDebug + debug assemble green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
102 lines
4.4 KiB
XML
102 lines
4.4 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
|
xmlns:tools="http://schemas.android.com/tools">
|
|
|
|
<!-- Tasks provider access. Both permission sets are declared; the active one
|
|
(org.tasks.* for tasks.org, org.dmfs.* for OpenTasks) is requested at
|
|
runtime by the permission flow. Both are dangerous-level. -->
|
|
<uses-permission android:name="org.dmfs.permission.READ_TASKS" />
|
|
<uses-permission android:name="org.dmfs.permission.WRITE_TASKS" />
|
|
<uses-permission android:name="org.tasks.permission.READ_TASKS" />
|
|
<uses-permission android:name="org.tasks.permission.WRITE_TASKS" />
|
|
|
|
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
|
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
|
<!-- Exact due-time reminders: USE_EXACT_ALARM on 33+, SCHEDULE on 31-32. -->
|
|
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"
|
|
android:maxSdkVersion="32" />
|
|
<uses-permission android:name="android.permission.USE_EXACT_ALARM" />
|
|
|
|
<!-- Package visibility (Android 11+): see the tasks providers so
|
|
resolveContentProvider works, and launchable apps so we can open the
|
|
provider / a store listing during onboarding. -->
|
|
<queries>
|
|
<provider android:authorities="org.dmfs.tasks" />
|
|
<provider android:authorities="org.tasks.opentasks" />
|
|
<intent>
|
|
<action android:name="android.intent.action.MAIN" />
|
|
<category android:name="android.intent.category.LAUNCHER" />
|
|
</intent>
|
|
</queries>
|
|
|
|
<application
|
|
android:name=".AgendulaApp"
|
|
android:allowBackup="true"
|
|
android:dataExtractionRules="@xml/data_extraction_rules"
|
|
android:fullBackupContent="@xml/backup_rules"
|
|
android:icon="@mipmap/ic_launcher"
|
|
android:label="@string/app_name"
|
|
android:localeConfig="@xml/locales_config"
|
|
android:roundIcon="@mipmap/ic_launcher_round"
|
|
android:supportsRtl="true"
|
|
android:theme="@style/Theme.Agendula"
|
|
tools:targetApi="35">
|
|
<activity
|
|
android:name=".MainActivity"
|
|
android:exported="true"
|
|
android:launchMode="singleTop"
|
|
android:windowSoftInputMode="adjustResize">
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.MAIN" />
|
|
<category android:name="android.intent.category.LAUNCHER" />
|
|
</intent-filter>
|
|
</activity>
|
|
|
|
<!-- Standalone crash-report surface; MainActivity routes here on a
|
|
startup crash-loop. Not exported, kept out of recents. -->
|
|
<activity
|
|
android:name=".ui.crash.CrashReportActivity"
|
|
android:exported="false"
|
|
android:excludeFromRecents="true"
|
|
android:launchMode="singleTask" />
|
|
|
|
<!-- Reminder alarm fires here (internal PendingIntent → not exported). -->
|
|
<receiver
|
|
android:name=".data.reminders.DueReminderReceiver"
|
|
android:exported="false" />
|
|
|
|
<!-- Re-arm alarms after reboot. -->
|
|
<receiver
|
|
android:name=".data.reminders.BootReceiver"
|
|
android:exported="true">
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
|
</intent-filter>
|
|
</receiver>
|
|
|
|
<!-- Re-sync reminders when the provider changes (external DAVx5 sync).
|
|
Targets both known authorities; the host must be static. -->
|
|
<receiver
|
|
android:name=".data.reminders.ProviderChangeReceiver"
|
|
android:exported="true">
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.PROVIDER_CHANGED" />
|
|
<data android:scheme="content" android:host="org.tasks.opentasks" />
|
|
<data android:scheme="content" android:host="org.dmfs.tasks" />
|
|
</intent-filter>
|
|
</receiver>
|
|
|
|
<!-- Persists the per-app language on API < 33, where the platform
|
|
per-app-languages API is unavailable. On 33+ this is a no-op. -->
|
|
<service
|
|
android:name="androidx.appcompat.app.AppLocalesMetadataHolderService"
|
|
android:enabled="false"
|
|
android:exported="false">
|
|
<meta-data
|
|
android:name="autoStoreLocales"
|
|
android:value="true" />
|
|
</service>
|
|
</application>
|
|
|
|
</manifest>
|