Repository navigation
Support Obsidian Tasks metadata and subtasks in iPhone sync - #17
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #17 +/- ##
==========================================
+ Coverage 92.80% 93.03% +0.23%
==========================================
Files 17 18 +1
Lines 3264 3734 +470
==========================================
+ Hits 3029 3474 +445
- Misses 235 260 +25
🚀 New features to boost your workflow:
|
…ew header Real-iPhone acceptance (0.2.0) showed `[Errno 11] Resource deadlock avoided` while the scheduled job read a view iCloud was still writing. The per-key vault hash snapshot and the phone-request reader held the project and alerted on the first occurrence, bypassing the documented "retry quietly, alert on the third consecutive failure" deferral. Transient OS errors now propagate to the run-level deferral in both read paths. Views of boolean-only adapter projects no longer claim that statuses and metadata are imported; they say only checkbox toggles are. Adds regression checks (fail before, pass after), traceability rows and two real-run findings to docs/ibridge-testing.md.
Real-iPhone acceptance run (partial) and one fixTested: head Passed on device (about 45 sub-cases): Markdown and CSV complete/reopen; start/due/scheduled/priority add, change and remove (all five priorities); Unicode, tags, links, task IDs, block IDs and dependencies preserved; Defect found and fixed ( Verification on the changed code: self-test under coverage 824/824; production line coverage 93.90% (gate 85%); public docs 248/248; Ruff clean; staged framework guard passed. Not yet done on device (handed to a follow-up): automatic done/created/cancelled dates and Dataview format (the Tasks plugin would not re-enable after a settings toggle and needs an Obsidian restart), unknown/custom status rejection, row-reorder rejection, corrupted link id, dependency edit from the dialog, copied-note edits (create/delete/reparent children, recurrence), default 5-min/120 s quiet-period rerun, offline/reconnect, interrupted-export recovery, a rich CSV adapter, same-field conflict in isolation, banner visibility. Findings (documented in Recommendation: not ready to cut 0.2.0 until the remaining device cases are recorded (see the release gate in |
Distinguish description renames from field updates in plan, and diagnose trailing prose or damaged generated source links before structural checks. Agent: Codex Model: gpt-6
Clarify bridge previews and damaged source-link diagnostics
Real-iPhone acceptance run: final outcomeTested: real iPhone (iOS 27.0.1) via iPhone Mirroring, Obsidian 1.14.5, Tasks 8.6.0, Dataview 0.5.68, fictional data only. First tested Result: 88 checklist rows: 85 PASS (3 of them Mac-only), 3 BLOCKED, 0 failed, 0 pending. Covered on device: Markdown and CSV toggles; renames (and their rejections: link in title, swapped titles, duplicate title, Blocked (external, not framework defects):
Findings: four confirmed defects found during the run were fixed and merged earlier. Remaining notes, none blocking: a stale phone copy can re-save previously rejected text (documented conservative behavior), and rejection reasons for swapped titles and duplicates share one generic message ("title is already used by another task; reordering or duplicating tasks is not supported"). Readiness: no open framework bug. Recommendation: ready for plain Scheduler and Tasks settings were restored to the defaults after the run (5-minute interval, 120 s quiet period, notifications on errors). |
The iPhone Tasks controls append dates, priorities and lifecycle metadata that the existing bridge rejects. Generated source links also hide existing trailing metadata from the Tasks parser, and task views flatten nested lists.
This change supports rich Tasks edits while retaining validated local commits and recoverable conflicts:
Validation:
6c7e9a1443e645f29998619974329b61cd2d52dd(manifest 8.6.0). Commit 22 resulting fixtures for both formats, daily/weekly/monthly/when-done/undated recurrence, both row orders and deletion. Normal Folderwise tests consume JSON without adding Node or Obsidian runtime dependencies.Structural child creation/deletion/reparenting uses the editable copied-note opt-in; arbitrary generated-row creation/reordering remains unsupported. Legacy boolean adapters retain their contract and require explicit capabilities for richer fields. Finite recurrence inherits upstream Tasks limitations.
Before cutting 0.2.0: record real iPhone/iCloud/launchd acceptance using
docs/ibridge-testing.md, including fresh/existing vaults, offline delivery, scheduler ticks during typing and recovery. The automated and upstream-runtime checks do not certify device transport behavior.