super-productivity/docs/plans
Johannes Millan 2864a39c85
fix(sync): file-based provider atomicity & conflict UX (#8960) (#9004)
* docs(plugins): add microsoft 365 calendar provider plan

* docs(plugins): add microsoft 365 calendar provider plan

* docs(ios): plan internal testflight builds

* fix(sync): prevent file-based sync data loss

Preserve post-snapshot operations and stage remote baselines until durable apply.

Use conditional writes and a resumable marker for provider concurrency and legacy migration. Report trustworthy remote timestamps and document transport limits.

Refs #8960

* fix(sync): avoid biased conflict recommendations

Highlight a side only when its timestamp or known change count is strictly greater, leaving unknown and tied metadata neutral.

* test(sync): assert options arg on split-file processRemoteOps

The split-file snapshot path now routes post-snapshot ops through
_processRemoteOpsWithStartupCleanup, which calls processRemoteOps with an
(empty) options object. Update the assertion to match the 2-arg call so the
unit suite passes.

* refactor(sync): dedupe strong-ETag regex, document snapshot-op boundary

- Extract the duplicated RFC 7232 strong-entity-tag pattern into a single
  STRONG_ETAG_RE constant with a comment noting why the char class is safe to
  interpolate into an If-Match header (no CR/LF header splitting).
- Explain why sv === undefined ops are classified as snapshot-included: they are
  legacy migration ops fully contained in the snapshot, and _validateSnapshotRef
  enforces a clock-EQUAL boundary. No behavior change.
2026-07-14 19:23:24 +02:00
..
2026-03-22-advanced-onboarding-design.md feat(onboarding): add lightweight onboarding hints 2026-03-22 19:50:24 +01:00
2026-05-21-clean-slate-data-loss-prevention.md feat(focus-mode): focus screen UX overhaul (#7586) 2026-06-12 11:59:56 +02:00
2026-05-28-android-keyboard-resize-jank.md feat(focus-mode): focus screen UX overhaul (#7586) 2026-06-12 11:59:56 +02:00
2026-06-05-project-completion.md feat(project): project completion experience (#8036) 2026-06-08 13:43:38 +02:00
2026-06-22-android-keyboard-and-systembars-handover.md docs(android): document SDK 28 (API 28) behind-keyboard add-task bar root cause (#8528) 2026-06-22 13:27:45 +02:00
2026-06-22-android-systembars-migration-corrected.md feat(android): migrate edge-to-edge to built-in SystemBars (#8543) 2026-06-22 16:07:06 +02:00
2026-06-30-plainspace-super-productivity-connect-flow.md feat(plainspace): Collaborate-on-Plainspace discovery + smoother connect (#8649) 2026-07-01 16:39:34 +02:00
2026-07-03-android-home-screen-widget.md feat(android): add home screen widget for today's tasks (#8737) 2026-07-03 18:32:34 +02:00
2026-07-03-sync-engine-extraction-plan.md docs(sync): add sync-engine extraction plan 2026-07-03 16:14:22 +02:00
2026-07-07-complete-architecture-review.md fix(op-log): serialize SQLite adapter transactions on the shared connection (#8849) 2026-07-07 18:00:25 +02:00
2026-07-07-ios-home-screen-widget-port.md docs(plans): add iOS home screen widget port plan 2026-07-07 17:08:48 +02:00
2026-07-09-todoist-import.md feat(plugins): add Todoist import plugin with Import/Export launcher (#8882) 2026-07-10 13:30:03 +02:00
2026-07-14-ios-testflight-master-builds.md fix(sync): file-based provider atomicity & conflict UX (#8960) (#9004) 2026-07-14 19:23:24 +02:00
2026-07-14-microsoft-365-calendar-provider.md fix(sync): file-based provider atomicity & conflict UX (#8960) (#9004) 2026-07-14 19:23:24 +02:00