Repository navigation
iBridge: opt-in phone text edits to copied notes, and a status-report test matrix - #14
Merged
Merged
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #14 +/- ##
==========================================
+ Coverage 92.20% 92.80% +0.59%
==========================================
Files 17 17
Lines 3143 3264 +121
==========================================
+ Hits 2898 3029 +131
+ Misses 245 235 -10
🚀 New features to boost your workflow:
|
TheLinuxGuy
force-pushed
the
feat/ibridge-note-edits
branch
from
October 26, 2026 06:09
ee490a0 to
9400eca
Compare
8 of 11 tasks
TheLinuxGuy
enabled auto-merge
October 26, 2026 06:44
…t, status-report test matrix - Two-switch opt-in for editing copied Markdown notes from the phone: bridge `text_edits` (configure --text-edits on) plus per-project `folderwise-ibridgeedit` path patterns. - A phone edit waits for a quiet period (edit_settle_seconds, default 120, unchanged across two runs), then applies fast-forward-only in an isolated clone: stamped as human, linted, hooked and committed locally with counts-only provenance. Front matter (values) and every generated block are protected; size/line/shrink limits apply; Mac-side drift pauses the project. - Status report gains "Phone edits waiting" and an Edited count in Recent imports; failures from adapters and lint now include their stdout detail. - Dashboard edits are bridge-wide freezes instead of a "None" paused project. - New self-test sections: ibridge_notes, ibridge_transient (real EDEADLK retry path) and ibridge_status, which drives mocked iCloud transport through ~50 scenarios and judges each by the status report, CLI output, last-run record and privacy of the report. - Docs updated.
… what CI cannot test
…k; show reported issues in test failures
TheLinuxGuy
force-pushed
the
feat/ibridge-note-edits
branch
from
October 26, 2026 06:56
2942b93 to
db15c10
Compare
3 of 4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Based on current
origin/main(9e617fd, includes #11 and #12).Summary
icloud_bridge.py configure --text-edits onand a per-projectfolderwise-ibridgeeditlist of path patterns in.docs.yaml. A phone edit waits for a quiet period (edit_settle_seconds, default 120; unchanged across two runs), then applies in an isolated clone: stampedhuman, linted, run through the project's hooks and committed locally (Bridge-Ops: … text-edit=N, counts only). Front matter values and every generated block (byline, change log, tables, task blocks) are protected; size/line/shrink limits apply; a note also changed on the Mac pauses that project (resolvekeeps the Mac version). Stale copies from an older export are refused because their change log differs.ibridge_statusself-test section drives a mocked transport (plain file copies standing in for iCloud) through ~50 scenarios and judges each by the status report, the CLI output,last-run.json, alert counts and report privacy (phone-typed text, source and state paths never appear in the report): clean export and idempotence, lean/image omissions, toggle/rename/note-edit imports, every rejection type, dirty tree, hook, adapter list/apply/validate failures, copied-note edits, Mac conflicts, dashboard edits, unowned collisions, interrupted export journal, symlinks, directory-as-file, conflict copies, edited/legacy reports, disabled project with pending edits, unavailable source, invalid config, doctor.ibridge_transientexercises the real EDEADLK retry path (3rd failure reports).docs/obsidian.md,docs/guide.md, README.What cannot be tested in CI (by design: iCloud transport is assumed reliable and is mocked)
.icloudplaceholders) and real conflict-copy naming (mocked asname 2.md/(conflicted copy)).launchctl/openbinaries in the sandbox).Test plan
uv run _tools/selftest.py(630/630)uv run .github/scripts/test_public_docs.py(242/242)uv run .github/scripts/ci_coverage.py: 93.5% overall, 100% of changedicloud_bridge.pylinesmainwith Document iCloud bridge test cases; keep them in step with the self-tests #13 merged;docs/ibridge-testing.mdnow coversibridge_notes,ibridge_transientandibridge_status, adds checklist step 9, a "What CI cannot test" section and traceability rows E1-E8 and S1-S12 (public docs check 244/244, the earlier Gap row I1 is closed).No workflow,
.github/scripts,.coveragerc,codecov.yml,ruff.toml,.gitignoreorframework_guard.pychanges.