Load org logos from MinIO theme public path like dashboard
Use getThemePublicBaseForDomain so logo URLs match getThemePath()/img/logo.svg instead of legacy /domain/.../kamosite paths that 404 and fell back to initials.
Add missing nav-top strings and scope translations
English messages listed components.navtop.* keys for Mail/Docs/Voip buttons but never defined hi/welcome, branches, account, credits, calendar, chat, etc., so n...
Resolve nav-pri labels showing raw i18n keys
Use namespaced next-intl translators for nav and components.nav.navPri so lookups resolve against the merged message trees; add panel aria strings under navPri;...
Add MessageBrowser i18n strings and restore load error copy
next-intl threw MISSING_MESSAGE for components.messages.browser.* keys missing from en.json, breaking /messages render. Add English strings, use loadMessagesFai...
构建像成像流那样记录 MinIO 对象密钥
FILE EXT 无效/ 空时关闭扩展名, 因此对象名称匹配 记录成像服务 和成像控制。 Java 字符串为空 已生产出 {datId}. null 并打破了在软手机媒体播放器中的回放 .
如果在 sdk.invite 解析前挂起电话, 请取消拨号
种族条件: 连接时挂起( ) 尚未结束会话 (sdk.invite在电话会议前等待),所以电话无论如何连接。 已添加已取消的 DindualDial Ref —— 由挂起( ) 设置, 之后用拨号检查 等待立即杀死 迟到的会议.
创建后自动进入新矿石 成员拥有自己的作用和权利
Org 创建后,会话仍保留在父上下文(无管理权)中, 离开新类所有者无法查看设置。 现在创建向导抓取 并重新通过/验证 成员 *** 为新矿石所铸造。 返回到父 DNS 设置 当还没有域时(海关域名).
连接时允许结束呼叫, 禁用 AI 助手, 删除队列标签
- 结束呼叫按钮在连接状态下已激活并被红色, 因此在连接之前可以取消呼叫 - 禁用AI助理导航按钮(灰心出局,不可点击) - 删除了队列导航按钮及其相关的模拟 UI(代理状态+队列统计面板)
从成员 voip config而不是电话 扩展解析历史扩展名
QQ是一些扩展的 NULL, 即使当 成员 voip config 正确绘制了成员的扩展名 。 使用 成员 voip config(与 CallFeatures Captain 相同的源码) 当成员配置了VOIP时,总是找到扩展名.
Full touch support for softphone popup on tablets
- Add touch-action: manipulation + WebkitTapHighlightColor to iconBtnStyle so window control buttons (minimize/maximize/close) respond instantly on touch - Ad...
Add go-sql-driver/mysql v1.7.1 checksum to go.sum
go mod tidy without source files is a no-op, so the mysql checksum was never added. Generated the correct h1 hashes via a throwaway golang:1.22-alpine container...
通过属性控制器处理国家Type的遗存正弦
DB 行将国家存储为正数整数( 如 UNION STATES 的 “ 186 ” ) 而不是 enum 名称, 导致在 findAll () 上出现非法参数例外 。 当值失败时, Country Type Converter 返回到平面检索,以及 总是用名字写下去.
通过在背景中运行 tsx 立即取消翻译任务
当 Forgejo 取消工作流程时, shash 等待任何前瞻孩子 在处理信号之前完成 。 将屏蔽取消几分钟, 保持跑道位置。 修正: 使用 & 运行 tsx 并等待 $CHILD PID. shash exits wait () 在SIGTERM上, 陷阱点火一次 和SIGKILLL - 既TSX,又TSX 左转...
将 ASTERISK CDR DSN 移动到本地配置中, 而不是 CI/CD 机密
CDR 证书是每个 FreePBX 服务器的本地端,没有业务 在CI/CD管道中。 运算符直接在其上添加 ASTERISK CDR DSN 配置.json 与 API KEY 和 电话 SERVER ID 并列. 配置. go 字段 而所有运行时间的行为都是不变的.
允许在 geetDomainById 和 校验 -dns 端点上增加访问
顶级的Org 拥有者和系统成员在 GetDomainBy 上获得了 403 个 编号 和校验 -dns , 因为检查的终点是 User MemberOf 奥尔克直接。 添加 ElivatedCrossOrgAccess 帮助器, 并同时应用成员检查 .
Show existing org domain instead of entry form when no custom domain
Fall back to the org's platform subdomain as the display domain so DnsProgressView renders rather than DomainEntryForm when no custom external domain exists. Al...
Surface imaging fallback when provider has no call history
KamoPBXProvider.getCallHistory now returns null instead of throwing **************** so the 501 response no longer bypasses the imaging fallback. The provider c...
Correct account list member/teamMember fallback labels and trigger redeploy
Restore NavPri panel labels and LeadHistory column headers
NavPri: salvage-keys grabbed href URLs as label values and swapped label/description pairs for Accounts, KB, and Notes nav panels. LeadHistoryPanel: MUI bgcolo...
Show platform domain context when no custom domain is set
Surface the active *.kamocrm.com hostname in the domain entry form so users can see their current platform domain instead of a blank entry screen. Also fixes ve...
Checkpoint translations per chunk and per locale on main
Persist locale JSON after each API chunk so cancellation loses at most one batch. CI translates one locale per process and commits/pushes after each so finished...
Checkpoint translations per chunk and per locale on main
Persist locale JSON after each API chunk so cancellation loses at most one batch. CI translates one locale per process and commits/pushes after each so finished...
Disable Docker BuildKit cache so every pipeline run does a full rebuild
Sets no-cache on both image build steps so npm ci and npm run build always run, even when the source tree is unchanged.
Bust Docker 构建 奇特缓存/ 每一次任务, npm 运行 构建运行每个推
同樣取出樹(例如空入)再用被缓存的地层和 跳过了真正的下一个建筑。 从工作流程和标签通过 GIT COMMIT 图像修正,所以每个SHA都会使构建阶段失效.
指定、更改或删除主邮箱时同步成员. email
当一个邮箱在 KAMO Mail org 中被指派给一个成员时, 成员. email 从未更新, 导致 EmailCreditience Service 无法解决 IMAP 这些成员的全权证书.
防止重复的根域并固定主域显示
One DOMAIN PER ORG 请检查date=中的日期值 (帮助) .kamocrm.com web-alias 域,允许一个 org 累积多个根域(和 10) 每一个别名),通过用不同的别名来重试. 现在数到齐 顶级域(parent IS NULL),而不论后缀. 网络端点使用活动Domains.get( ...
将成员安全与PUT的电话序列化以避免CockroachDB冲突
两篇同时写给同一 " 成员 " 一行,造成一连串 孤立冲突——成员安全在成员阅读时读取行 端点写信给它( 总是通过日期更新), 中止一项交易 错误40001。 接连电话就能消除重叠.
减少org创建延迟,并纠正翻译级联故障
- 组织主计长:替换确保团队成员ForallOrgs(完整组) 表格扫描),包含确保Team MemberForOrg(单人)——去掉 ~400ms×N 使/network/create 提交文本被卡住的 DB 回合 - 组织控制器:将电子邮件TemplateSeedClient.seedOrg移动到一个 承诺后可完成...
Widen 承诺 log translations. title to TEXT 匹配 DB 列
该栏在注释和DB中均为VARCHAR(512),导致 插入对长译标题的翻译失败。 DB 栏是 现在STRING( 直接应用); 此注释更改保留实体 一致.
从后端响应信封解开目录并进行计算
获取订阅Catalog 返回 {目录 :{...}}} 但被直接投放 作为订阅Catalog, 将目录. plans 和计划未定义 选择步骤为空白。 计算订阅的同一期 价格谁 {计算: {.}}} 包装没有被打开 .
添加 @ JsonProperty 到 * - 前置布尔 DTO 字段
Lombok 生成为 Xxx () 为布尔字段命名为 Xxx 的 getters 。 Jackson把领先的"是"从s -geters剥去 并序列化他们 作为"xx"而不是"xxx",账户管理者也成为了"账户管理者". 在JSON中,是Licensee成为了"licensee",是OrgOwner成为了"orgOwne...
使用 ss 而不是用起火器来杀死 stale port- forward (fuser not on k0m1)
引信和Isof没有安装在跑道主机上。 使用 ss -tlnp 与 (帮助) grep来取出PID持有18080端口并直接将其杀死. 还有 切换 pkill 到 SIGKILLL(-KILL) 使其不依赖 Stale 进程 尊重一个优雅的信号.
清理已过时的端口, 因此取消的翻译工作不会阻碍下次运行
巴什不会向背景进程传送信号,所以 kubectl 端口前向已取消的工作流程运行并持有端口 18080, 屏蔽随后的每个翻译 并重建任务。 固定 : 在 18080 上, 在装订前先杀死任何已有的端口( pkill +) 保险人/倒置者),然后陷阱 EXIT/TERM/INT/HUP 背景 PF PID 无论步骤如何结...
跨页恢复所有已损坏的占位符值
救世主的脚本 抓住了CSS的类名、内线风格和JS 114 条消息的英文正文的模板文字 横跨笔记、 kb、 商业、 账户、 报告、 线索、 设置 和仪表板页.
从 git 历史中恢复页面主角标题和字幕
英雄标题是"英雄标题"(占位符) 英雄标题是"flex ship-2" (救生钥匙意外地抓住相邻的CSS类名). 从承诺10f4e4b中收回的正确值.
通过投票部件. getState () 启用完成按钮并切换到自动=上载
状态变化事件收听器无法可靠地启用“ 完成” 按钮 *** 核查之后。 两个根源: 1. 排水逻辑读取部件。 在部件上不存在的状态 - 部件会显示 GetState () 不是. state 属性, 所以排水口总是 当收听者在核实后附着时,则不开放。 2. 自动="对焦" 没有父 <form> 元素则无所作为;部件 ...
在 Org 列表中包含订阅目标账户
listForOrg 现在还返回订阅目标为 - 不只是它直接拥有的账户。 在多层楼 建模支付账户在 KamoCRM 顶级 org 中存在 订阅目标子org;没有此功能, KamoClub 或 org 拥有者将 查看零账户并获得"不计费账户"消息.
添加状态窗口标签命名空间并修正所有设置的占位符
- 添加QQ( 50 个密钥) 设置 导航侧边栏显示真实文本而不是密钥路径 - 修复分支 TypesLabel ICU 格式 :\${branchLabel}} {{branch} - Fix tr () 后退后后卫: 下一步返回密钥路径字符串而不是 投出, 请检查结果中的“ 组件. 设置 ” 而不是 依靠尝试/渔获物...
匹配其他工具窗口的大小 + 颜色方案
- 默认大小和分数, 现为 320x650, 可重现: 假( sultches Softphone, Chat, Calculator, SMS, AI Chat) - 从深层梯度切换到SoftphonePanel使用的标准光梯度(#fafbfc- > #f5f7fa) - 标题带现在在白文本上使用 var(- col...
Forward Range header so audio playback can scrub
Without this the VOIPService recording-streaming endpoint always returns the full file (Range header is dropped by buildForwardHeaders), which works for play-fr...
Rewrite /etc/odbc.ini to point at $MARIADB_HOST on every boot
The escomputers/freepbx:17 image bakes /etc/odbc.ini with Server=db (the docker-compose link target). On this Kubernetes deployment MariaDB lives at \$MARIADB_H...
Resolve member→extension before VM/CDR provider lookup
CallController was passing memberId where FreePBX (and other PBX-style providers) expect an extension number — voicemail listing returned empty because no PBX e...
自动指定第一个座位, 免费为地板, 宽度为无效
BillingSetupService 现在启用创建者的第一个开放许可槽 当植入一个子-org订阅器时(对促销至充电的所有人也是这样), 否则,一个新鲜的子org所有者只看到自由基线,尽管是一个 在种子计划中的许可证。 应享权利服务: - 通过合并应用自由计划基线PlanFeatures(不是工会变体) 因此,即使已...
