Fix iOS QR contact send path resolution - #134
Merged
Merged
Conversation
Contributor
Greptile SummaryThis revision fixes the previously reported retry-persistence failures by staging retries durably, atomically rekeying their database rows, and recovering interrupted attempts into an actionable uncertain-delivery state.
Confidence Score: 5/5The PR appears safe to merge. The previously reported retry replacement and interrupted-retry failures are addressed: row transitions are transactional, staged attempts are recovered as visible uncertain failures, and no blocking failure remains. Important Files Changed
Sequence DiagramsequenceDiagram
participant User
participant VM as MessagingViewModel
participant DB as MessageRepository
participant Backend
User->>VM: Retry failed message
VM->>DB: stageRetry (failed → sending)
DB-->>VM: Atomic row rekey
VM->>Backend: Submit complete payload
alt Backend accepts
Backend-->>VM: queued(canonical hash)
VM->>DB: Atomic replacement (sending → sent)
else Submission fails
Backend-->>VM: Failure
VM->>DB: Replace staged row as failed
else App terminates while staged
VM-xBackend: Delivery outcome uncertain
DB->>DB: Startup recovery (sending → failed/uncertain)
end
Reviews (3): Last reviewed commit: "fix: persist direct delivery method" | Re-trigger Greptile |
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.
Summary
lxma://QR codes from the LXMF delivery destination instead of the identity hashlxmf.deliverydestinationScope
This change targets the shipping embedded-Python RNS/LXMF runtime only. It does not change Model B, the Network Extension, Proxy IPC, App Group outbox behavior, or LXMF-swift dependencies.
Verification
python3 -m unittest Tests.static.test_qr_contact_send_path_contract -v- 14 passedpython3 -m unittest discover -s Tests/static -p 'test_*.py'- 221 passed, 1 skippedpython3 -m py_compile app/rns_bridge.py- passedxcodebuild teston iPhone 17 simulator - 156 passedgit diff --check origin/main...HEAD- passedThe automated tests cover QR destination binding, Python identity retention, bounded one-request path resolution, passive contact behavior, actionable send failures, and payload-preserving retry. Real camera focus, metadata recognition, vibration, scanner dismissal, and Add Contact presentation still require physical-device verification.