- Shipped
- August 26, 2026 at 2:26 AM UTC
- Author
- kamo
- Commit
- 6cb488b
CommunicationsTimeline and EmailEntry take an optional endpointBase and keep the lead path as the default, so every existing call site is byte-for- does not care what the timeline is ABOUT — the owner keying is entirely server-side, exactly as MediaStream takes a feedEndpoint and the DocManager takes an (assocType, assocObjectId). A patient's messages are drawn by the The contact-point strip above the timeline is the part that would otherwise be missing. A timeline is a view; inbound calls and messages only ever LAND on an owner the matcher can resolve, so a patient with no registered number has an empty timeline for a reason nothing else on the screen would explain. Its empty state says exactly that, rather than implying nothing ever happened. 3149 tests green, typecheck clean.