使用内部 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...
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 ...
运行完成的阶段应用程序后恢复上下文刷新
没有路由器.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 ...
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...
添加电子邮件别名和共享邮箱UI支持
作曲家 “ from:” 下拉, 用于在主名、 化名和共享邮箱之间切换 地址 电话地址 在电子邮件设置中新建“ 邮件箱” 第 6 个选项卡, 用于全局管理员管理 化名和共享邮箱。 在成员上插入别名/共享邮箱管理 设置页面。 用于共享邮箱上下文切换的文件夹侧边栏中的邮箱切换器 。 浏览共享邮箱时,信件浏览器的路由会通往共...
修复 PRE TIKET DB 约束 + 重新设计创建格式
- 固定的CHECK对支持的制约 ticket.status允许正数 14 - 重新设计基于现代卡片的出票模式: - "我们能帮上什么忙?" - “有支持的聊天”卡(主打,突出显示)——开始预选 - "签票"卡片——以标题/说明形式全开 - 后键返回票单选择者 - 两种路径都允许与指定代理人聊天
添加 Pre TICKET 状态与启动聊天选项
- 票房创建格式:两个按钮——"开始聊天"(预选,无标题) 需要,只是话题)和"提交票"(有标题的全票) - 票头:状态为PRE TICKET时的"转出票"按钮, 打开需要标题的对话框,调用 PUT/tickets/{id}/convert - 状态包:以蓝灰色徽章显示的 PRE TIKET - 新的代理路线: ...
从{主题: [...]} 中提取话题数组 API 反应
GET / api/ 支持/ 专题终点返回{主题: [...]},而不是 a 原始阵列 。 现在所有消费者在使用数组之前先提取数据.
Granular 角色编辑,标签互换,团队成员支持
- 添加 AllowEditTitle 和 AllowEdit Security 到 SecurityRole 接口 - 允许编辑成员/团队成员角色的安全设置(以前全锁) - 交换“ 成员” 和“ 团队成员” , 显示带有父类行为标签的标题 - 通过发送受保护角色的原始 DB 标题来防止意外标题覆盖 - 在编辑系统角色...
在 API 响应上添加 Array.is 守护以预防.map 出错
API 在后端表格中返回错误对象而不是数组 还不存在 使用 Array.is Array 检查守护所有阵列操作 .
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.
