The core now picks the KDF context with pickSessionContext: --url, else
the URL of the highest-priority transport, leaving out cupsonline (its
room list only exists once the exit is up) and the "http://#" placeholder,
else "http://#". The bridge still let cupsonline in, and a classic channel
without a document (oneme, direct) fell back to the transport's name, so
the phone and a CLI peer derived different keys.