Use Next.js middleware for CSP so frame-ancestors works at runtime
The standalone build bakes next.config.ts headers at build time, so ALLOWED_FRAME_URLS was always empty. Move CSP to a Next.js middleware that reads the env var...
Strip X-Frame-Options header in iframe-compatible middleware
Set X-Frame-Options to empty string to remove the SAMEORIGIN value that was being inherited, allowing CSP frame-ancestors to control iframe embedding instead.
Read ALLOWED_FRAME_URLS at runtime so CSP frame-ancestors works in standalone mode
The env var was being read at module scope during build, baking an empty value into the standalone server. Move CSP and all header construction into functions c...
Add iframe-compatible middleware chain for kamo-analytics
Add security-headers-allow-iframe (no X-Frame-Options) and kamo-middlewares-allow-iframe chain so analytics can be embedded in iframes from internal.kamocrm.com...
Remove logout, move nav to right, tie session to kamo-internal ***
Remove logout option from UserButton since auth is managed by kamo-internal. Move SideNav from left to right side. Store the *** ID in analytics auth data durin...
Replace login with OTK auth, force light mode, hide theme toggle
Remove direct login — authentication now handled exclusively via one-time keys from kamo-internal. New /api/auth/otk route validates OTK against shared Redis, s...
将分析图标添加到带有 OTK 认证的 Iframe 的导航上
将一个BarChart 图标添加到顶级 Org 的团队成员 NavTop 中 (无父母. 点击导航到生成OTK和 装入分析器。{域} 在一个整页的 Iframe 中。 现在生成- otk 路由 支持60s TTL 更长的用途=分析.
Add analytics → analytics text replacement in changelog sanitization
Initial Kamo Analytics — forked from analytics with Kamo branding
- Replace analytics logo SVG with Kamo logo (theme.kamocrm.com) - Replace analytics favicons with Kamo favicon - Replace "analytics" heading/nav text with "Kamo...
Move kamo-analytics to own repo, keep only postgres in KlusterServices
- Remove analytics deployment, service, and nginx-configmap (now owned by kamo-analytics project with its own CI/CD pipeline) - Remove analytics-ingressroute ...
Reset document.title in rebrand() when React overwrites it
React re-applies RSC payload after hydration, resetting the title to "analytics". Add a title check inside the MutationObserver callback so it gets corrected ev...
Redact tokens ≥32 chars in changelog sanitization
Any word (run of non-whitespace) that is 32 characters or longer is replaced with **************** before titles and descriptions are sent to the translation se...
Replace "analytics" text nodes with "Kamo Analytics" instead of clearing
Use TreeWalker to remove all "analytics" text nodes from rendered DOM
The workspace nav title "analytics" comes from JS bundles loaded after auth, rendered as a text node next to the logo SVG. Uses TreeWalker to find and clear all...
Add guarded MutationObserver for client-side rendered logo/text
Login page and dashboard content is rendered by Next.js JS bundles, not in the HTML body, so sub_filter can't reach it. Adds a script with a busy-flag-guarded M...
在 nginx 级别重新定向外观, 修复 RSC 有效载荷出逃
- 通过nginx 302重定向服务favicon,而不是试图重写 HTML/RSC 有效载荷href字符串(清除器,总是工作) - 将RSC标题替换为文字的正则双逃道 在 nginx 配置中反斜向引用 - 增加代理缓冲器,以处理完整的应对机构
使用纯子过滤器替换而非突变观察员
突变观察员造成无限循环(DOM变化 -- -- > 观察者火灾 -- -- > (DOM更改). 切换到直接的 nginx 子 filter 字符串替换 瞄准静态 HTML 和 Next.js RSC 有效载荷字符串作为标题, 法维孔和标志 只有CSS注射器仍用于仪表板头.
默认情况下装入分析器, 在允许的域中包含 www subdomain
- 默认跟踪所有访客,因为分析是无饼干/方便GDPR的 - 只有在用户明确否认饼干偏好的分析时才禁用 - 在数据域中添加www.kamocrm.com(主机名必须准确匹配)
Comprehensive analytics rebranding for login page and dashboard
- Replace title dynamically (handles "Login | analytics", "Dashboard | analytics" etc.) - Replace "analytics" h2 text on login page with Kamo logo image - Repla...
Use MutationObserver to rebrand analytics client-side rendered UI
analytics is a Next.js app that sets title/logo via JavaScript after initial HTML load. Replaces static sub_filter approach with injected script that uses Mutat...
Rebrand analytics analytics UI with Kamo logo, title, and favicon
Adds nginx sidecar proxy that injects CSS to replace the analytics logo with KamoCRM logo, changes the page title to "Kamo Analytics", and overrides the favicon...
将 Google 分析器替换为分析器, 添加跨站点的事件跟踪
- 从布局中删除谷歌分析(gtag.js) - 添加分析分析组件:通过cookie加载同意的脚本 首选项, 数据- do- not- track, 域名限制到 kamocrm.com - Cookie ConceptBanner: 发送 cookie - 同意更改的保存事件 因此分析 分析负载/卸载反应 - 导航:轨道...
Add analytics analytics deployment and analytics.kamocrm.com routing
- New analytics/ directory: PostgreSQL StatefulSet + analytics deployment, services, and secret template - **************** routes analytics.kamocrm.com → analy...
在所有地方的页脚中添加法律精细打印
在覆盖的每一页底部添加保护性法律免责声明 (a) 平台责任,AI/e-签名免责声明,翻译当局, 条款协议和商标通知。 用英文打印的精细 所有22个地方作为权威的法律文本.
修复翻译 – 手动覆盖 + 完整的三角形再翻译
导航/UI两个引擎的手动超载持续失效: -nav.home,nav.company,nav.roadmap,nav.changeLog,nav.legal,,,,,,, (原始内容存档于2013-10-12). Nav.login, Nav.documentation, foller等同, cookieBanner.m...
在 DNS 设置 UI 中显示 TXT 域名所有者记录
- domainData/DnsStatus:添加校验Token,所有者验证,类型字段 - 异位状态表:在CNAME表格上方显示TxtOwnershipCard,并带有复制按钮, Indigo 等待/ 绿色验证的样式; 过滤来自 CNAME 的 TXT 验证的计数 - 手册指南:接受核查 托肯道具; 将 TXT 记录显...
Fall through to next provider when translation equals source text
Bergamot was returning the source text unchanged for single-word nav items, acronym phrases (API, CRM), and compound words (Change Log) while reporting success ...
Generate TXT verification token on domain create, check in verify-dns
- createDomain: generate 32-char UUID token and store via setVerificationToken - verifyDns: check _kamo-verify TXT record for kamo-site-verification=<token> - T...
Add verification_token and ownership_verified columns to org_domains
通过 DNS TXT 记录添加域所有权验证
- OrgDomain: 添加校验脚本和所有权验证字段 - 域服务:添加设置 VerificToken()和设置 Ownership 验证() - 域名DTO:在API回复中披露验证对象和所有权 - DnsstatusDTO: 添加类型字段以区分 TXT 和 CNAME 状态
Update required aliases — add app, capcha, docs, sign; remove legacy
翻译所有剩余硬码的用户界面字符串
- PreviewBanner, PublicChatWidget, AiChatPanel, LivePanforcePannel, 互联网档案馆的存檔,存档日期2014-12-02. 退出intent Modal, 浮动支持Widget 现在使用翻译( ) - 添加预览 Banner, 聊天, 退出 Modal, ...