- Shipped
- October 15, 2026 at 5:45 AM UTC
- Author
- Kamo
- Commit
- 35421d4
Owner 2026-10-15: one company-wide do-not-contact list per organization, scoped per channel. - Settings → Phone → Do not contact (MANAGE_VOIP_SETTINGS, settingsMenu sub entry, no admin-bar link): the call mode (warn and dial on confirm, the default, or block), channel filter, search, add, import (paste or .csv/.txt, up to 1000), remove with a required reason, and the history (every add and removal, by whom, why). - The softphone: SoftphoneContext hands every consumer a guarded dial, so every person's call (the Softphone window's Call, and every Call elsewhere, which opens it prefilled; the JustCall external dialer too) asks GET /api/voip/do-not-contact/check first. A listed number shows "{number} asked not to be called on {date}" with Cancel / Call anyway, or, when the organization blocks, OK only. Only the CALL entry counts. A check that fails dials (an SI's call fails closed in kamoai-service). - Keys: kamo-translation-dictionary 7b74200b (pushed first). Tests: DoNotContactTab.test.tsx, DoNotContactDialGuard.test.tsx, doNotContactDial.test.ts (RED on origin/main, GREEN here), settings menu coverage; the 20 source guards and check-i18n-keys --require-messages against the pushed dictionary.
