Restore full meeting flow with backend creation, invites, and OTK window opening
Simplify useMeeting to generate OTK and open meeting window directly
Backend meeting API endpoints don't exist yet - skip meeting record creation for now. Add error handling to all click handlers to prevent client-side crashes.
Add MEET to FeaturesManager icon/category maps and guard ChatBox Meet button with isMeet check
Add Start Meeting button to Interaction Center and per-member meeting icon
Add Meet button to chat toolbar and MeetingCard rendering in messages
Add MeetingDialog for creating meetings with room name and member selection
Add useMeeting hook for meeting creation, OTK launch, and invite sending
Remove Janus-based WebRTC integration (useWebRTC, VideoCallPanel, call API routes)
Remove old Janus WebRTC voice/video/screen share code in preparation for KamoMeet (Meet-based) replacement. Deletes useWebRTC hook, VideoCallPanel, CallInitiati...
Make visibility checkboxes and Train AI toggle independent controls
Visibility (Members, Team Members, Public) controls who can access the article in the KB UI. Train AI is a separate toggle for RAG indexing, not a parent of the...
Replace Chat Now member count with real-time unread message indicator
- NavTop badge now shows total unread messages instead of online member count - Chat button icon color derived from --color-primary theme variable - MemberItem ...
Add Train AI toggle and audience visibility checkboxes to KB article editor
Add aiEnabled master toggle with collapsible visibility checkboxes for Members, Team Members, and Public using org-customized labels from behavior-labeling sett...
Use internal K8s URL for API routing to fix avatar upload for non-KamoCRM orgs
The API proxy was computing external URLs (https://api.{domain}) for every org, which only resolved for KamoCRM. Now uses API_SERVICE_URL env var for direct int...
Re-fetch notes after create/update to show decrypted content in preview
The backend returns encrypted content/contentPlain in POST/PUT responses, causing NoteCard previews to display ciphertext until page refresh. Now re-fetches via...
Disable all auto-link behaviors in KB editor to prevent paste-as-hyperlink bug
The linkExtension singleton from @lexkit/editor retains internal paste handler state across component remounts. Disabling autoLinkUrls, autoLinkText, and linkSe...
Prevent KB editor link extension state leaking between article creates
Move Lexical extensions from module-level singletons into a factory function called via useMemo per component mount, so each new article gets fresh extension in...
Add infinite scroll pagination to classic email view
Classic mode only loaded the first 50 messages with no way to see older ones. Wire up the existing VirtualMessageList onLoadMore/hasMore/loadingMore props so pa...
Accept large CockroachDB IDs in org Zod schema
The org ID from unique_rowid() exceeds JS MAX_SAFE_INTEGER, causing z.coerce.number().int() to fail with "too_big". Now accepts number, bigint, or string to han...
Accept UUID strings for feature IDs in org Zod schema
The OrgFeature schema required id to be a coercible integer, but the backend returns UUIDs. This caused a ZodError on every layout fetch, falling back to the ha...
Always refresh org context after any app toggle, not just completed-stage
POS and other non-completed apps also affect the UI (e.g. Pipeline in NavPri). The stage check was preventing the refresh for these apps.
Update all fallback feature lists and gate Pipeline/Chat/LeadStatus
Root cause: layout.tsx and org API route had hardcoded fallback feature lists with only 6 old apps (missing VOIP, AI_SUPPORT, SUPPORT, KB, NOTES, DOCS). When th...
Show CC and BCC in sent item email previews
Add bcc field to EmailMessage type. ThreadDetailView now displays BCC recipients when present (typically in sent folder copies).
Remove legacy /email iframe page
This page only embedded mail.kamocrm.com in an iframe. The built-in email client at /messages replaces it entirely.
Email nav icon now links to /messages instead of legacy /email iframe
The /email page embeds mail.kamocrm.com in an iframe (legacy webmail). The actual built-in email client is at /messages. Updated NavPri to point to the correct ...
Surface actual backend error message on feature toggle failure
Enable/disable now parses the error response body and shows the real error in the toast instead of a generic message. Helps diagnose what's actually failing on ...
Restore org context refresh after toggling completed-stage apps
Without router.refresh(), the org context stayed stale after enabling apps — NavPri, homepage, and settings never showed the newly enabled features. Now refresh...
Gate all feature cards and settings sections by org feature flags
Homepage: Documents card now uses isDocs (not deprecated isStorage/isDocManager), Calendar gated by isEmail, Notes gated by isNotes. Settings page: Commerce se...
Remove router.refresh() from feature toggle to prevent page reset
router.refresh() was causing the page to re-render and reset the active tab back to "Available" on every toggle. The cache invalidation and loadFeatures() call ...
Invalidate org cache after feature toggle to reflect changes immediately
The org API route caches organization data in Redis for 24h. After enabling or disabling an app, the stale cache caused feature flags to remain false, making se...
Add settings pages for HRS, Docs, Support, KB, Notes, and Chat
Create ComingSoonTab shared component and 6 new feature settings pages with coming soon placeholders, feature flag guards, and help tips. Links from FeaturesMan...
Auto-refresh UI after feature toggle and role changes
FeaturesManager and SecurityRoleManager now call router.refresh() after mutations to re-fetch org context and user session data, reflecting permission and app c...
Gate all nav links and settings pages by org feature flags
NavTop: hide AI chat, softphone, SMS, credits, notes, calendar, and contacts links when their corresponding app is disabled. Settings pages for CRM, Email, Phon...
Implement app management UI with backend integration and dynamic permissions
Rewrite FeaturesManager to use backend API for app enable/disable with root-org gating for in-dev apps. Update NavPri to gate all nav items by org feature flags...
Sync settings nav with actual tab definitions across all pages
Add missing Mailboxes and CalDav/CardDav entries to email section in both the settings main page and the NavPri slide-out drawer. Fix Account section card linki...
Split mailboxes tab into sub-tabs for primary, aliases, shared
Primary Mailboxes, Email Aliases, and Shared Mailboxes are now each under their own sub-tab within the Mailboxes settings page, matching the existing sub-tab pa...
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.