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...
Provider save field name and mailboxes tab member list endpoint
Provider save for non-configurable types now sends correct field name. Mailboxes tab now uses **************** endpoint which actually exists, instead of non-ex...
Provider save for non-configurable types and mailbox member email mapping
**************** selections now immediately persist via saveProvider API instead of only updating local state. Mailboxes tab now correctly extracts emailAddress...
Add email alias and shared mailbox UI support
Composer "From:" dropdown for switching between primary, alias, and shared mailbox addresses. New "Mailboxes" 6th tab in email settings for org-wide admin manag...
PRE TICKET DB 제약 + 재설계 작성 양식
- ordinal 14을 허용하기 위해 support ticket.status에 고정된 CHECK 제약 - 현대 카드 기반 UI를 가진 Redesigned TicketCreationForm: - "어떻게 도와드릴까요?" - "Chat with Support" 카드 (기본, 강조) - 사...
Add PRE_TICKET status with Start Chat option
- TicketCreationForm: two buttons — "Start Chat" (pre-ticket, no title required, just topic) and "Submit Ticket" (full ticket with title) - TicketHeader: "Con...
{ 화제: [...]에서 주제 배열 추출 API 응답
GET /api/support/topics endpoint 반환 { 주제: [...] }, 아니 원료 배열. 모든 소비자는 이제 배열을 사용하기 전에 data.topics를 추출합니다.
오류 및 404 페이지의 지원 도구 창 열기
이전 /help/ticket/new 탐색을 도구로 바꾸기:Open CustomEvent 지원 팝업 창을 직접 엽니 다.
과립 역할 편집, 라벨 스왑 및 팀 구성원 지원
- add isAllowEditTitle 과 isAllowEditSecurity 에 SecurityRole 인터페이스 - 회원/팀 회원 역할에 보안 설정을 편집할 수 있습니다 (이전 완전히 잠겨) - "Members"와 "Team 회원"모직 org 행동 라벨과 제목을 교환 - 보호된 역...
TopicManager에서 부서 로딩
X-***-Token 헤더(matching DepartmentManager pattern) 및 data.departments 응답 모양에서 부를 추출하십시오.
.map 오류를 방지하기 위해 API 응답에 Array.isArray 가드 추가
API는 backend table 대신 배열 대신 오류 객체를 반환할 수 있습니다. 아직 없습니다. Array.isArray 체크와 모든 배열 작업을 감시합니다.
Add Support section to settings page
Adds Topics, Notifications, and Status & Response Times cards that link to /support?tab=settings.
Allow 6 settings cards per row on xl screens and hide Club House nav item
Settings page grids now scale to 6 columns at xl breakpoint. Club House menu item commented out in NavPri.
Update ticket popup tool window to use light theme matching chatColors
Replace dark theme (dark backgrounds, white text, amber accents) with the light color scheme used by all other popup tool windows in the app.
Remove MANAGE_SUPPORT conditional from settings/analytics tabs, enable NavPri slide-out
All tabs now always visible. Removed disablePanel from NavPri Support entry so the slide-out panel works on hover.
Make description textarea fill remaining popup window height
Removed minRows/maxRows constraints and set flex layout on the input root so the textarea expands to fill all available vertical space.
Remove old help system, add support nav items
Delete app/help/ and app/components/help/ directories. Add SupportButton to NavTop toolbar and Support menu item to NavPri sidebar navigation.
Like what you see shipping?
All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.
