mirror of
https://github.com/avinal/nikki.git
synced 2026-07-03 21:40:09 +05:30
e165be9f6cbe7471e6735c877342c396857b3acf
Notifications: - TaskCheckWorker (WorkManager, 15-min periodic) scans cached memos for tasks due today or overdue, fires Android notifications - TaskNotificationManager: notification channel, tap-to-open intent - Notification deduplication via SharedPreferences (notified task IDs) - Toggle in settings (on/off persisted in DataStore) - POST_NOTIFICATIONS permission requested on API 33+ JSON Backup: - BackupManager: export all memos to JSON, import from JSON - Export: saves to device via Android SAF (CreateDocument) - Import: reads JSON file, creates memos via API, refreshes cache - Backup format: version, exportedAt, memoCount, array of BackupMemo - Export/import buttons in settings with status feedback Test Suite (67 tests, all passing): - TaskParserTest (29): checkbox parsing, priorities, dates, labels, lists, stable IDs, toggle/replace, line indices, edge cases - DtoMappersTest (16): ID extraction, timestamps, visibility, properties, attachments, reactions, comment count from relations - DtoSerializationTest (7): JSON deserialization, unknown fields, relation object refs, attachment size strings - BackupManagerTest (7): export/import round-trip, version, memo count, invalid JSON handling - MemoVisibilityTest (5): fromApiString, toApiString, round-trip - ApiResultTest (3): Success, Error, NetworkError sealed class Co-Authored-By: Claude Opus 4.6 (1M context) Signed-off-by: Avinal Kumar <avinal.xlvii@gmail.com>
Description
Languages
Kotlin
100%