- Drop FE normalizeStatus and BE STATUS_MAPPING
- Update bubbles/preview and store to use Twilio status values
- DRY ActionCable incoming-call payload builder
- Use server-provided conference_sid for client connect
- VoiceAPI: standardized returns, accept store, simplify disconnects
- Remove legacy/fallback comments introduced in this PR
- Add ContactCallButton component; icon variant for sidebar, text variant for details header
- Place Call between Block and Send Message on contact details header
- Use modal to select Voice inbox when multiple numbers exist
- Allow optional inbox_id on contact call API and service
- Revert Compose New Conversation voice changes to reduce scope
- Add missing i18n strings (CALL_CONTACT, SELECT_NUMBER)
- Add Voice::CallOrchestratorService to centralize flows
- Add Voice::CallMessageBuilder for consistent voice call messages
- Incoming/Outgoing services delegate to orchestrator; use CallStatus::Manager
- ConversationFinderService: phone optional; public call_sid lookup
feat(ui): simplify call widget + reliable incoming detection + ringtone
- Remove global widget toggling; rely on Vuex
- ActionCable: loosen created condition, backfill on updated
- Add ringtone on incoming via shared Audio helper
- Guard Twilio connect() to avoid duplicate active call errors
fix(voice): decline incoming ends call & updates status
- Reject call now completes Twilio call if in progress
- Update status via manager to no_answer with activity
- Fix outgoing call auto-join without manual button click
- Fix end call button to properly terminate calls on contact side
- Fix decline button to immediately disconnect customer calls
- Improve call state detection for outgoing vs incoming calls
- Add proper WebRTC disconnect handling when contact hangs up
- Enhanced error handling and state cleanup for all call scenarios
- Simplify voice.js API from 960+ to 133 lines with clean architecture
- Convert VoiceCall.vue to Composition API with script setup
- Remove complex diagnostics and use essential functionality only
- Fix initiateCall endpoint URL for outgoing calls
- Maintain original green colors for call status indicators
- Remove malformed console.log statements from voice.js API
- Fix variable shadowing in calls.js store module
- Clean up code formatting and add missing newline in MessagePreview.vue
- Resolve syntax errors that prevented application from loading