- Shipped
- August 26, 2026 at 9:30 AM UTC
- Author
- kamo
- Commit
- 1a2fdfc
Two whole-branch-review findings against this component: - ConversationRow always read **************** directly. Mounted inside the switcher column (a sibling of PresenceProvider/ AvailabilityProvider, not a descendant — see ToolProviders.tsx), both contexts fall back to their safe defaults, so isOnline() there always answers false. Every 1:1 row in the column read "OFFLINE" for a colleague who might well be online, and the group "anyone online" dot never lit. Adds `showPresence` (default true); when false, no status dot and no caption render at all — showing nothing is honest, showing Offline is not. The Interaction Center's own mount is unaffected (prop omitted, defaults true). The better long-term fix — hoisting the presence providers above ToolProviders — is a structural change to app chrome affecting every presence consumer and is deliberately not taken here. - VOIPService sets `lastMessage.senderName` to the raw counterpart E.164 number for an inbound text. The row's title already ran a TEXT row's number through formatPhoneDisplay; the preview prefix did not, so a text row read "+15555550123: on my way" instead of "(555) 555-0123: on my way". Scoped to TEXT only — every other type's senderName is already a display name. Adds this component's first dedicated test file (previously exercised only indirectly via ConversationsPane.test.tsx, which mocks it away) covering both.