Commit Graph

3 Commits

Author SHA1 Message Date
RomanNum3ral 3d0f6589a9
Add offline resilience, undo-delete, search, week view, BYDAY recurrence, import/export, and single-occurrence recurring edits
Closes out the full post-launch feature backlog:
- Offline write resilience for save/delete, with automatic flush on reconnect
- Undo-after-delete via a snackbar, with a fresh-UID recreate (Nextcloud's
  trashbin rejects reusing a just-deleted item's UID)
- Custom (non-preset) reminder offsets
- Search across events and tasks
- Week view alongside the existing Agenda/Month views
- BYDAY support in the Repeats picker ("every Mon/Wed/Fri"), including a
  proper RRULE evaluator extension for it
- Import/export .ics via the system share sheet and file picker
- Single-occurrence recurring-event editing/deleting ("this event only" vs
  "all events") via RFC 5545 RECURRENCE-ID overrides and EXDATE

A repository-wide write mutex now serializes sync against save/delete/undo,
fixing a real race where a background sync could clobber a just-written item.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-17 18:53:39 -04:00
RomanNum3ral 14ee70d71d
Fix remaining known limitations: recurrence editing, subtask tree parity, conflict resolution
- Recurrence picker (Daily/Weekly/Monthly/Yearly, interval, end condition) for
  both events and tasks, backed by a real RRULE. Fixes a latent bug from the
  prior RRULE-preservation change: editing a recurring item was writing the
  resolved *next occurrence* back as the master DTSTART, silently shifting the
  whole series forward on every edit - start/end/due are now correctly
  read-only for recurring items instead.
- Periodic background sync (WorkManager, ~30 min, network-gated) so widgets
  stay fresh without opening the app; auto-refresh on app open too.
- Tasks widget now renders the same parent/child tree as the in-app Tasks
  screen (util/TaskTree.kt shared by both) instead of a flat due-date list.
- Conflict resolution: a stale save (HTTP 412) shows both versions and lets
  you keep your edit or take theirs, instead of just an error banner.
- First test suite for the project (IcsMapperTest, TaskTreeTest).
2026-07-16 21:02:48 -04:00
RomanNum3ral 75f5e6024b Initial commit: NCal, a native Nextcloud CalDAV client for Android
One app for both events and tasks, talking directly to Nextcloud's CalDAV
endpoint - no DAVx5, no Google Play Services, no third-party services.
Encrypted at rest (SQLCipher DB, EncryptedSharedPreferences, Keystore-backed
widget state), HTTPS-only networking, home screen widgets, reminders,
subtasks, and full VTODO field support (status/priority/%complete/location/url).
2026-07-16 18:19:03 -04:00