- Remove bulk CommunicationsQuery from useContacts (was loading ALL
messages for ALL contacts on init)
- Rebuild commThreads from contacts + contactInboxes using the new
lastMessageText field from Phase 1
- Per-contact messages now load on-demand via getClientTimeline
- Remove commItems from useWorkspaceRouting, use clientTimelineItems
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Each composable now owns its types and exports them. Other composables
import types from the owning composable. Deleted centralized crm-types.ts.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Split the 6000+ line monolithic component into modular composables:
- crm-types.ts: shared types and utility functions
- useAuth, useContacts, useContactInboxes, useCalendar, useDeals,
useDocuments, useFeed, useTimeline, usePilotChat, useCallAudio,
usePins, useChangeReview, useCrmRealtime, useWorkspaceRouting
CrmWorkspaceApp.vue is now a thin orchestrator (~2500 lines) that
wires composables together with glue code, keeping template and
styles intact.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>