deps(ios): bump RNS pin to 1.5.2 + surface operator LXMF contact - #197
Open
torlando-tech wants to merge 2 commits into
Open
deps(ios): bump RNS pin to 1.5.2 + surface operator LXMF contact#197torlando-tech wants to merge 2 commits into
torlando-tech wants to merge 2 commits into
Conversation
…4654fe) Rebased the six embedded-runtime hardening patches onto upstream 1.5.2 (AutoInterface.py is byte-identical between 1.4.2 and 1.5.2, so the hardening stack applies unchanged; only tests/all.py needed a union merge of import blocks). The 1.5.2 base adds the optional LXMf operator contact field in interface discovery announces (discovery_lxmf_address), discovery announce caching/validation, and dataplane ingress/egress control. Also corrects the stale PythonRNSBackend capabilities version label (reticulum 1.3.1 -> 1.5.2, lxmf 0.9.9 -> 1.1.0) to match what the pinned wheels actually ship, and updates the static dependency contract test pin.
…1.5.0+) RNS 1.5.0 adds an optional operator contact field to on-network interface announces (discovery_lxmf_address -> operator_lxmf_address, 32-hex). The bridge discovery_json() already passes announce info keys through, so the iOS side only needs the model field plus a UI row: - DiscoveredInterface: operatorLxmfAddress (lenient decode; absent/empty -> nil, mirroring the other optional string fields — pre-1.5.0 announces lack the key entirely and must still decode) - DiscoveredInterfacesScreen: compact card 'Contact:' row (envelope icon, monospaced, accent) shown only when present + detail 'Contact' field row - Localizable: 'Contact' / 'Contact:' (en) - RNSAPITests: decode regression (present/absent/empty) Part of the RNS 1.5.2 bump; publishes nothing — we emit no discoverable interface, this only DISPLAYS contacts other operators announce.
Owner
Author
|
@greptile review |
Contributor
The PR appears safe to merge, with a non-blocking compact-card layout issue for long operator contact values.
|
Comment on lines
+702
to
+704
| Text(verbatim: contact) | ||
| .font(.caption.monospaced()) | ||
| .foregroundStyle(Theme.accentColor) |
Contributor
There was a problem hiding this comment.
Contact Wraps in Compact Cards
The compact card renders the full 64-character operator contact without a line limit or truncation. On narrow screens, this wraps across several lines and makes each card significantly taller. The nearby transport ID is already shortened for the same layout; shorten this value here while keeping the full address in the detail section.
Suggested change
| Text(verbatim: contact) | |
| .font(.caption.monospaced()) | |
| .foregroundStyle(Theme.accentColor) | |
| Text(verbatim: String(contact.prefix(12)) + "…") | |
| .font(.caption.monospaced()) | |
| .foregroundStyle(Theme.accentColor) |
Prompt To Fix With AI
This is a comment left during a code review.
Path: Sources/ColumbaApp/Views/Settings/DiscoveredInterfacesScreen.swift
Line: 702-704
Comment:
**Contact Wraps in Compact Cards**
The compact card renders the full 64-character operator contact without a line limit or truncation. On narrow screens, this wraps across several lines and makes each card significantly taller. The nearby transport ID is already shortened for the same layout; shorten this value here while keeping the full address in the detail section.
```suggestion
Text(verbatim: String(contact.prefix(12)) + "…")
.font(.caption.monospaced())
.foregroundStyle(Theme.accentColor)
```
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
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.
Bumps the RNS wheel pin to the 1.5.2-based fork branch and surfaces the new
operator LXMF contact field in interface discovery.
What changed
support/fetch-wheels.sh:RETICULUM_REF→754654fe…(branchpatches/columba-ios-1.5.2= upstream 1.5.2 tag + the six embedded-runtimehardening patches rebased cleanly on top).
PythonRNSBackend.swift: advertised RNS version label1.3.1→1.5.2(cosmetic, no in-app reader).
Tests/static/test_ios_stamp_runtime_hardening.py: SHA pin updated to thenew head.
DiscoveredInterface.operatorLxmfAddress(lenient decode; absent/empty → nil), a compact-card "Contact:" row and a
detail "Contact" field row in
DiscoveredInterfacesScreen,Localizableentries, and a decode regression in
RNSAPITests/DiscoveredInterfaceTests.This is display-only — the app emits no discoverable interface, so it only
shows contacts other operators announce.
The bridge
discovery_json()already passes announce info keys through, so norns_bridge.pychange is needed for the contact field.Verification (real execution)
fetch-wheels.sh: producedrns-1.5.2@754654fe,lxmf-1.1.0@8912186e,ble_reticulum-0.2.2@07d94130; provenance validatorpassed; 0 symlinks.
rns-1.5.2.dist-info,__version__ = "1.5.2", deployedDiscovery.pyhas theoperator_lxmf_addressfield.ColumbaAppTestson iPhone 17 sim: 512/512, 0 failures (was 511 beforethe LXMf decode test).
RNSAPITests.DiscoveredInterfaceTestsviaswift test: 23/23 (incl. newLXMf present/absent/empty decode).
config written → in-process restart complete, stack back up(
interfaces=rnsd-interop-intero:1, Delivery/Telephony announces),discover_interfaces = yestook effect, no errors/Traceback. This exercisesthe 1.5.2 singleton stop→start cycle — the main regression risk of the bump.
RuntimeFlavorTests398–402) andshort-circuits before RNS teardown, so it adds no RNS-bump coverage.
Notes
.requiresRelaunchguard (added in feat(ios): interface discovery + Network Status discovery UX (issue #193) #196 /8085fca9) still refusesin-process restart when an AutoInterface is configured. Its premise —
"AutoInterface.detach() doesn't release multicast sockets" — no longer holds
on this 1.5.2 wheel (detach() now closes sockets and joins threads). Removing
that guard is a separate behavior change and is deliberately out of scope
here (kept to the minimum bump). Tracked as follow-up.