Add CalDAV sync (v0.3.0) #102
No reviewers
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
edfloreshz/tasks!102
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "atayozcan/feat/caldav-sync"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Adds two-way CalDAV sync (Nextcloud, Radicale, SOGo, Fastmail, Apple iCloud, …) and a batch of related polish.
Refs #6, #92.
Highlights
VTODOcalendars, push-on-edit, and a 60-second background sync loop.YYYY-MM-DD).Bug fixes uncovered while testing
SetListshort-circuited on unchanged id; newMessage::ReloadTasks).Completehandler routeddetails::updatedirectly and dropped its outputs — now goes throughMessage::Details(..)so the in-memory task and sidebar refresh.invalid SecondaryMap key usedpanic when a slotmap was rebuilt under in-flight messages — all hot-path indexing switched to.get()with bail-out.VALUE=DATEfor all-day RFC encoding.Url::join("uid.ics")overwrite the last segment.Interop / RFC compliance
icalendar::Todo::get_due()so all RFC 5545 forms (DATE,DATE-TIMEUTC / floating / TZID) are accepted.DTSTAMP— some servers refuse VTODOs without one.DUE;VALUE=DATE:…instead ofDUE:…T000000Z.Removed
sync_passwordfield onTasksConfig(passwords are in the keyring now).sqlxdependency andError::Sqlxvariant — meaningful build-graph reduction.caldav:URLdescription marker — replaced byList::remote_url; legacy lists migrate on first sync.unsafe impl Send for List— unnecessary,PathBufis alreadySend.Release housekeeping
finish-argsgain--share=networkand--talk-name=org.freedesktop.secrets;<internet>flipped fromoffline-onlytoalways.README.mdgets a CalDAV section; newCHANGELOG.md(Keep-a-Changelog).CARGO_PKG_VERSION.Tests
12 unit tests cover legacy-marker parsing,
remote_urlprecedence, marker stripping, ISO-8601 (UTC, offset, extended), garbage rejection, and the all-dayVALUE=DATEround-trip.Notes
generated-sources.jsonwas deliberately not regenerated in this PR — happy to add a follow-up commit if you'd prefer to ship that here.Thanks for submitting this, could you rebase this branch?
Started the rebase and hit a wall — the upstream
feat: new store systemcommit isn't a content change, it's a structural rewrite. On the first of 5 commits alone, ~1050 of ~1300 lines ofsrc/app.rsended up inside conflict markers, and most of what this PR depends on (src/app/actions.rs,src/app/dialog.rs,src/app/menu.rs, the entiresrc/storage/module,chrono) has been deleted, moved intosrc/app/{core,dialogs,navigation,ui}/, replaced bysrc/services/store.rs, or swapped forjiff. Subtask handling was also removed.A
git rebasewould produce conflict markers in files that no longer exist on the new tree, so I think the right move is to re-apply this PR as a port on top of the new architecture rather than force-push a rebase. Happy to do that, but wanted to check with you first:services::storeAPI (closing this one), or would you prefer a force-pushed rebase here even if it ends up being effectively a rewrite?src/services/caldav.rsalongsidestore.rs)?RELATED-TOparent links, or drop tasks that have a parent?I'd appreciate it if you could respond directly, I understand you're using AI for this PR and I'm happy to discuss the changes, but I'd prefer to hear from a human.
View command line instructions
Manual merge helper
Use this merge commit message when completing the merge manually.
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.