feat: track Google Tasks local edits and sync conflicts #442
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
status:blocked
track:api
track:auto
track:core
track:deploy
track:infra
track:ui
type:cleanup
type:docs
type:epic
type:release
type:research
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
barrettruth/delta#442
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Parent: #144
Follow-up to: #291
Related: #290, #123
Problem
Google Tasks pull is implemented and idempotent by external link, but the current pull path is still effectively remote-wins for mapped fields. If an imported Google task is edited locally in Delta and Google later reports a different value, the next pull can overwrite the local edit without recording that Delta had diverged.
For v0.1, Delta should keep Google Tasks pull-only, but it needs enough sync state to avoid silent local data loss and to tell the operator when local changes, remote updates, or conflicts exist.
Definitions
Use sync metadata on the Google Tasks external link. Do not encode this in the Delta task status.
clean: the mapped local fields still match the last Google-applied snapshot.local_modified: Delta changed one or more mapped fields after the last clean pull, while Google did not change those fields.remote_outdated: Google has a newer value that Delta did not apply because the local field has changed since the last clean pull.conflict: both Delta and Google changed the same mapped field since the last clean pull.Mapped fields for this issue:
Merge policy
Keep Google Tasks pull-only. Do not add writes back to Google Tasks here.
On pull, compare three values per mapped field:
Rules:
local_modified.conflict.Storage shape
Extend Google Tasks external link metadata with a last-applied snapshot and sync state. Exact field names can change during implementation, but it should be able to represent:
Existing provider metadata such as
etag,updated,deleted,hidden, list IDs, and task IDs should remain available for idempotence and diagnostics.Operator feedback
After a manual pull, the result should distinguish applied updates from protected local changes:
Settings/status text should be concise, for example:
The Google Tasks settings panel should expose aggregate sync issue counts without requiring a full conflict resolver in this issue.
Non-goals
Acceptance criteria