DeepLinkRouter
Deep-link router for KMP Navigation 3.
Maps an incoming OS intent URI to the back stack it should open, so a link into a detail view lands with its logical "up" hierarchy already populated. Every supported link is a UriDeepLinkMatcher pattern whose placeholders decode straight into the target route's fields, wrapped with withBackStack to synthesize the parents.
Path literals match case-insensitively. The scheme and host are not part of the contract: meshtastic://meshtastic and http(s)://meshtastic.org links are routed identically, because the OS intent-filter already decides which hosts reach the app.
Supports both legacy query-parameter URIs and modern RESTful path patterns:
/nodes-> List of all nodes/nodes/{destNum}-> Node details/nodes/{destNum}/{metric}-> Specific node metric (e.g.,/nodes/1234/device-metrics)/messages-> Conversation list/messages/{contactKey}-> Specific conversation/settings-> Settings root/settings/{destNum}/{page}-> Specific settings page for a node/wifi-provision-> WiFi provisioning screen/wifi-provision?address={mac}-> WiFi provisioning targeting a specific device MAC address/connections?address={prefixedAddress}-> Connections screen, auto-connecting to a prefixed device address (e.g.t192.168.1.1:4403for TCP,xAA:BB:CC:DD:EE:FFfor BLE) — lets external tooling trigger a connection.address=ndisconnects instead of connecting.
Properties
Canonical set of top-level path segments this router dispatches on. route refuses segments outside this set, so a new pattern stays dead (and its feature tests fail) until its segment is added here. Every entry must also be declared as an android:pathPrefix in the https App Links intent-filter in androidApp/src/main/AndroidManifest.xml — DeepLinkManifestConsistencyTest (androidApp unit tests) enforces that directly from this set.