简化使用会议直接生成OTK和开放会话窗口
后端会话 API 端点尚不存在 - 跳过会话记录 创建现在。 将错误处理添加到所有点击处理器中以防止 客户端崩溃 .
制作能见度复选框和列车AI来切换独立控件
能够访问文章的能见度(成员、小组成员、公众)控制 在KB UI中。 Train AI是用于RAG索引的单独切换工具,不是父程序 可见的复选框.
保存上游 X 前置 Host 而不是用自己的主机覆盖
当上游代理( Next.js) 设置 X- Forwarded- Host 到浏览器时 原主机, APIService 现在保存它而不是用它覆盖 拥有主机头. 当请求通过 内部 K8s 服务 URL.
使用内部 K8s URL 用于 API 路由, 为非 KamoCRM orgs 修复可视化上传
API 代理正在计算每个矿石的外部 URL (https://api.{domain}), 它只解决了 KamoCRM。 现在直接使用 API SERVICE URL env var 内部出行. 并在APIService 和 APIService 中保留了上层的 X-Forwarded-Host 传播实际后端错误而不是...
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...
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...
Auto-provision completed-stage app features in org domain endpoint
Moves auto-provisioning from the FeatureController (only hit from the apps settings page) to the SecurityController org domain endpoint (hit on every page load ...
Auto-provision missing completed-stage app features for existing orgs
When listing features, the controller now checks for missing OrgFeature rows for COMPLETED-stage apps and creates them. This ensures orgs created before new app...
Auto-enable all completed-stage apps for new orgs instead of hardcoded list
Replaces hardcoded feature list (which had duplicates and deprecated types) with a loop over all COMPLETED-stage, non-core, non-deprecated ServiceTypes. New app...
Catch all exceptions in FeatureController enable/disable endpoints
Prevents uncaught RuntimeExceptions from becoming opaque 500 errors. Now returns structured error messages for any failure.
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).
Extract BCC recipients from IMAP messages
BCC header is retained on sent folder copies. Now extracted alongside To and CC so the frontend can display it in sent item previews.
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 ...
运行完成的阶段应用程序后恢复上下文刷新
没有路由器.refresh (), 启用后, org 上下文会保持静止 应用程序 — NavPri, 主页和设置从未显示新启用 特性。 现在刷新已完成阶段应用程序切换的 org 上下文 因此,UI立即更新。 开发中的应用程序跳过刷新 以避免重置“ 不可用” 标签 .
以 Org 特性旗关闭所有特性卡和设置区域
主页:现在使用的文档卡是Docs(不贬值为storage/isDocManager), 日历门由"Email","Note"门由"Notes". 设置页面:商务区段由isPos门,电话区段由isVoip门, 由支持部、AI部和Ai支持部组成。 全体 相应的卡片阵列现在通过条件标记过滤.
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 ...
Prevent duplicate apps in features list by excluding all existing types
The available list was only excluding features with enabled=true, so a disabled feature (isActive=false) appeared in both the features array AND the available a...
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...
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...
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...
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 GET returns both type and providerType, PUT accepts both
GET /api/email/provider now includes both 'type' and 'providerType' fields in the response for frontend compatibility. PUT now accepts 'type' as a fallback when...
决心记住 登录会话中没有持续使用用户名
Re***召回捕捉到一个 stale 表演 Login关闭 记得我总是假的(初始状态). 用一个参考读取 活的复选框值。 还固定了清空的Cookies登录处理器 无条件擦去被记住的用户名 .
