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...
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 ...
Delta 翻译引擎 + 将所有硬码的 UI 字符串接入 i18n
翻译系统: - 翻译.ts现在以三角洲模式运作——只有缺失的密钥或 仍然与英语完全相同的密钥发送到 API; 已有的已翻译密钥 保存完好无损 在典型运行中将CI翻译时间缩短了80-95%. - 添加 --force旗以重新翻译所有密钥(对质量通行证有用)。 - CI 工作流程增益力 在工作流程中再翻译输入 发送,这样你...
禁用 Chrome 自动翻译弹出到 locale- switched 页面
将翻译="否"添加到<html>和<meta name="google"内容="notranslate". 因此Chrome不提供用户已有意翻译的页面 切换到另一种语言.
Bound translation concurrency to 3 threads to prevent DB pool exhaustion
Unbounded @Async (SimpleAsyncTaskExecutor) created 50 threads simultaneously when the retry scheduler fired, each opening a DB transaction and draining HikariCP...
Three bugs preventing changelog translations from being saved
1. **************** was discarding events because handleWebhook() had no @Transactional — save + publishEvent() ran outside any transaction. Add @Transact...
使用 LEFT JOIN 查询 CommissionLogs , 所以零翻译记录被重试捕获
从 CotitLog Translation 中选择的旧查询 – 输入日志, 无 它完全看不到翻译。 使用来自提交日志的 LEFT JOIN 因此, HAVING COUNT < 预期条款包含有0个翻译的记录。 同时去除大全ID IN 条款并接受一个可页码, 所以 呼叫者可以限制每个调度器运行的批量大小.
Apply word replacement at translation time, not ingestion
Original text is preserved in the DB so that adding a new rule and re-triggering translation is all that is needed to update existing records. Changes: - Chang...
在计费标签上处理空的 API 回复和优雅的退化
- 计费Api 获得/输出帮助者现在安全处理空响应机构 而不是用空输入在 res.json () 上崩溃 - PlantsBillingTab loadData 将每个计费API呼叫用.catch()包起来 因此,单个端点的出错不会打破整个页面—— 选项卡随任何可用数据制作
Check TeamMember.isOrganizationOwner flag for owner detection in my-networks endpoint
The previous check only looked at org.getOwner() (user_id_owner column) which can be null for existing orgs. The authoritative owner flag lives on the TeamMembe...
从*** 会话中解析 org/ 成员背景, 用于计费代理
计费服务控制器需要X-Org-Id和X-Member-Id头. 直接打电话(通过APIService)时,这些没有被设定. 现在 Next.js 代理读取 *** cookie, 查看会话在 Redis,取出OrgID和成员ID,并把它们作为标题来转发.
添加 /api/ billing/ * 的 Next.js API 代理路由
计费API客户端称/api/billing/*是一个相对的URL, 点击 Next.js 服务器而不是 APIService 网关。 已添加 前进的包罗万象代理路线(与商业市场模式相同) 通过extToApi 发账单请求 APIService 发账单服务.
Include parent org in /org/domain response
The getOrganizationByDomain endpoint manually builds a response map but never included the parent organization reference. This prevented the frontend from knowi...
将父文件夹和父文件夹添加到 OrgProviderProps 类型
组织道具接口缺少父文件夹和父字段, 使其在 TypeScript 编译时被丢弃,即使 后端发送他们。 这阻止了组织。 真实的,它隐藏了计划和帐单标签,用于所有的孩子.
Purge incomplete model directories in init container
The service crashes on startup if it finds a directory in /models that has missing or partial model files. Add a sweep at init start that removes any directory ...
Remove GitHub LFS downloads, use only data.statmt.org models
GitHub raw URLs return LFS pointer files, not actual binaries. Drop enru/enar downloads entirely — LibreTranslate handles those locales. Only download the 4 pai...
Narrow bergamot to es/fr/de/pl, restore bergamot-first order
GitHub LFS files can't be downloaded with plain curl (raw URL returns the pointer not the content). Removing enru/enar from bergamot scope; those locales fall t...
Narrow BergamotProvider targets to 6 pairs with available models
pt, it, uk, tr, ro, id, vi have no bergamot model source — LibreTranslate handles them. bergamot now claims: es, fr, de, pl, ru, ar.
将 bergamot 缩放到 0, 将图像更新到 mozilla/ 翻译服务
谷歌云存储模式下载桶(bergamot-models-sandbox) 返回所有文件的 404, Firefox- translations-models 重出炉 存档于2025年12月, 没有所需的语言对 。 贝加莫特不能 开始直到找到工作模型来源。 关键更改 : - 复制品:0(与集群现实同步) - 图像:moz...
Route all translations through LibreTranslate while bergamot is offline
BergamotProvider is moved to fallback position. LibreTranslate supports all 13 locales bergamot was handling **************** so this eliminates the flood of "C...
代理 *** 通过登录服务器对多域支持的挑战
将直接的跨源获取替换为 capcha.{domain}/ api/ 挑战 同源代理在/api/capcha/质疑。 需要采用以前的做法 在部件装入前在 capcha.* 子域上有效的 TLS 证书, 导致“ 验证失败 ” 。 代理服务器 通过内部 k8s 服务的路径,使 *** 在任意域上工作 已登录。 * 配置时未添...
缩放 bergamot 返回到 1 个复制件—— 丢失的 pock 导致翻译失败
Bergamot在0号复制品,其服务仍在注册。 提供者鲁特 在TranslateService中,没有断路器,所以每个请求es/fr/de/pt/it/ pl/ru/uk/tr/ro/id/vi/ar用反复连接敲击已死亡的集群IP 尝试,将 CI 翻译步骤和背景翻译任务定出时间 。 节点有 97+ GB 免费,所以资源...
Don't let null translated description hide the English original in changelog
The translation lookup for non-en locales was unconditionally overwriting description with **************** which is null when: - the translation was saved befo...
Resolve 23 compilation errors from controller-service signature mismatches
Controllers were built by a separate agent from services, causing method name and parameter type mismatches. Fixed all controllers to match actual service signa...
Update kamo-shared-library version from 1.0.0 to 1.1.0
Needed to resolve the new billing entities in the commerce.billing package added to shared library 1.1.0.
将 kamo- share- library 版本从 1. 0. 0 更新到 1. 1.0
共享库发布为1.1.0,而非1.0. 这导致 由于 Maven 无法找到“ 艺术” , Docker 构建失败 不解决依赖.
Add -U flag to maven build steps to resolve shared library from local repo
The dependency:go-offline step was trying Maven Central first, getting a cached failure for kamo-shared-library (which is local-only), and that poisoned the sub...
将翻译块大小缩小到50个键,并进行指数后退
150个密钥对于一些提供者来说仍然太大(长段落值: (原始内容存档于2018-10-21) (中文(中国大陆) ). Priversity/terms/ GDPR. 现在: 每块50个键, 4个有指数重试 后备(2s→4s→8s→15s),3分钟的超时,包括全部请求+答复, 每块更好的错误记录 .
防止获取大型有效载荷超时的断开翻译请求
单批请求的有效载荷使用1500+键导致连接 一些翻译提供者的超时 。 现在分成150个键块 每块3个复试和2分钟的暂停.