Weekly Dev Update #154
This week the Session team focused primarily on bug fixes, and we also added some new features including ONS resolution on Desktop, and basic deep linking on iOS. The Lokinet team tracked down another bug which has been causing stability issues while investigating an issue related to network configuration. The Oxen core team added new Lokinet reachability tests and continued working on the Service Node reward batching PR.
Lokinet reachability tests https://github.com/oxen-io/oxen-core/pull/1459
Oxen Storage server
Make random message retrieval more efficient (the current approach scales poorly as the database grows)
Refactor how timestamps and TTLs are handled; we now store a timestamp and an expiry, but no longer the TTL value, instead the TTL value is simply a temporary value that can be given when storing a message to implicitly define the expiry.
Remove dead code/disused OMQ endpoints.
Fix SS not shutting down properly if it gets signalled while still trying to get the initial keys from oxend.
Change generated hash to be based on fundamental values rather than user-provided encodings.
Don't require timestamp and ttl to be passed as strings anymore.
Allow storing using timestamp+expiry (as an alternative to timestamp+ttl).
Expose storage rpc endpoints through a new public oxenmq rpc category storage.WHATEVER (e.g. storage.store). This allows clients that want to use zmq speak more efficiently to SS.
Add bt-encoded input/output support to the OMQ storage endpoints; this is noticeably more network efficient because it requires neither base64 encoding, nor establishing and handshaking new connections for every request. The OMQ storage endpoints take params either json or a bt-encoded dict, and reply in kind.
Clean up internals by moving transport encoding of internal values closer to the transport layer. (Aside from a cleaner design, this was also needed to get bt-encoded responses out cleanly).
Add delete/expiry API interfaces to delete all, delete selected, delete by timestamp, shorten all expiries, and shorten specific message expiries.
Oxen Mobile Wallet
Further fixes for crashes on startup and scanning https://github.com/oxen-io/oxen-mobile-wallet/pull/10
Work continued this week on Lokinet stability testing. One issue we identified were misconfigured Lokinet routers on the mainnet network, where at least one mainnet node was broadcasting the wrong IP/port. This led us to create a PR implementing basic Lokinet router connectivity testing, and while testing that we serendipitously discovered a bug with how Lokinet was (not) updating its list of service nodes from oxend; the longer Lokinet has been running, the more potentially out-of-date it becomes, and the more likely it is to refuse to connect to the next node on a path. We’re aiming to put out an update to Lokinet either later this week or early next week to address the various issues we’ve been focusing on over the past few weeks.
Updates for the experimental Android build https://github.com/oxen-io/loki-network/pull/1661
Fixes for Windows builds https://github.com/oxen-io/loki-network/pull/1660
Lokinet service node router testing for checking on Lokinet router reachability https://github.com/oxen-io/loki-network/pull/1659
More stability testing and tweaks https://github.com/oxen-io/loki-network/pull/1658
Fix submodule being listed twice in build system https://github.com/oxen-io/loki-network/pull/1657
Code of Conduct https://github.com/oxen-io/session-android/pull/594
Fix message deduplication https://github.com/oxen-io/session-desktop/pull/1686 , https://github.com/oxen-io/session-desktop/pull/1683
Rewrite Github actions order https://github.com/oxen-io/session-desktop/pull/1684
Notification settings for individual open groups https://github.com/oxen-io/session-desktop/pull/1682
Add push notification server fallback https://github.com/oxen-io/session-desktop/pull/1680
Fix zombie group members https://github.com/oxen-io/session-desktop/pull/1678
More logging on open groups and retrying when rebuilding paths https://github.com/oxen-io/session-desktop/pull/1677
ONS resolution https://github.com/oxen-io/session-desktop/pull/1676
Code of conduct https://github.com/oxen-io/session-desktop/pull/1673
Fix image gallery bug https://github.com/oxen-io/session-ios/pull/428
Fix closed group edge cases https://github.com/oxen-io/session-ios/pull/427
Auto scroll conversation if already at bottom https://github.com/oxen-io/session-ios/pull/425
Code of conduct https://github.com/oxen-io/session-ios/pull/422
Session Open Group Server
Return a 404 if a room in compactPoll was removed https://github.com/oxen-io/session-open-group-server/pull/8