在电子邮件中添加错误的 DEFAULT 列定义
Hibernate的计程器 生成 ALTER TABLE,没有默认, 无法使用已有行的表格。 定义强迫它 包括 DEFAULT 假的, 这样现有的行会被正确配置 .
Resolve duplicate emailTemplateServiceClient bean conflict
**************** and **************** were identical @Components with the same default bean name, causing **************** at startup. Delete the duplicate in r...
Bump kamo-shared-library to 1.4.0
Docker Stage 1 builds kamo-shared-library main (now 1.4.0) and installs it to the local .m2; the service pom still referenced 1.0.0 which Maven could not find, ...
应用SP6正确性和执行质量修正
C1: 使用 NEXT PUBLIC H*** TE KEY env var 而不是硬码占位符 C2: 更改注册 Response.userId 和全部 API 参数从数字到字符串( CockroachDB 独有的 rowid 精度) C3: 手柄中清晰的 stale *** sord (set***Token (nu...
Address 4 code-review findings in registration and login paths
- Hide raw exception message in /register 500 path; log instead - Fail-closed (503) on email-verified DB check failure in login - verifyEmailToken throws if use...
Append Z to dateCommitted so JS parses it as UTC
LocalDateTime.toString() produces no timezone designator, causing JavaScript's new Date() to treat the UTC value as local time and display timestamps 7-8 hours ...
Convert PT midnight cutoff to UTC for today-count query
Commits are stored in UTC but the cutoff was a naive LocalDateTime in PT, causing yesterday-evening PT commits (00:00–06:59 UTC) to be counted as today.
用白色 SVG 替换所有 CSS- filter 标识例
导航、 SubNavigation、 脚印、 SubFooter 和预装器全部使用 相同的断裂滤镜亮度- 0倒数模式。 替换为 横跨全白.svg.
在页脚中使用白色的 SVG 标志而不是 CSS 过滤器
与"导航"相同的固定——IOS Safari上嵌入了背景-过滤器上的CSS过滤器不可靠.
护卫队的色彩设计与
DynamicMetaLoader可以给赢得级联的远程CSS注入. 添加中 ! 重要确保色彩策略: 黑暗永远不会被主题样式表所覆盖 .
从TouchOptimized 中排除页脚和导航链接
Touchoptimized 正在为所有 <a> 元素设置短于 44px,包括页脚导航链接(~20px高). 这在水合时运行 硬刷新,使每个 <li> 弹性项目高44px并产生 在页脚链接栏中显示双相距。 脚印/导航链接具有可访问上下文,不需要强制触摸目标.
使用预发白 SVG 标志, 而不是 CSS 过滤器
在iOS Safari上, 生成标志- full-white.svg 并设置所有填充到 #ffffff并加载 直接——没有过滤器,没有浏览器颤音,在所有设备上保证为白色.
锁定 Tailwind 暗模式变体到基于类, 绝不使用 OS 媒体查询
Tailwind v4 默认为暗: 用于响应偏好- color- scheme (OS 偏好) 的公用设施. @ variant 覆盖确保黑暗: 类只在 . dark 类时激活 显示在 DOM 中 —— OS 永远不能翻转任何设备上的颜色 .
在标识链接上使用内置过滤样式进行可靠的白色渲染
在img元素上的tailwind过滤类在移动浏览器之间不一致. 锚地元素上的内置样式保证亮度( 0)倒数(1) 适用于所有地方.
强制暗色化学, 浏览器从不应用光模式渲染
将 Global.cs 中的"光"改为"暗",生成Viewport 和 html 元素样式 – 这阻止了浏览器渲染 SVG 和本地 UI 在光线模式下,这导致标志在黑暗背景下出现黑色.
防止标志在移动行后渲染
带有 CSS 过滤器的 Div 包装器创建了相冲突的新堆叠上下文 在移动浏览器上带有页眉的背景过滤器,导致标志被画出 在标题后的背景。 直接在图像元素上应用过滤类.
在 JumpToBar 和 PreviewBanner 上解析滚动条和移动剪辑
- 添加溢出: 隐藏到 JumpToBar 内置容器以防止垂直滚动条 - 允许PreviewBanner内容在手机上包装,所以文本不剪接在肖像手机上
在页脚链接列表中将空格Y-4替换为内含的弹性空格
Tailwind space-y-4 使用: 与 CSS 相竞争的地方( ) (特异性 0) 装入硬刷新导致垂直间隔不一致。 内入 样式被嵌入 SSR HTML 并立即应用,独立于 外部 CSS 负载顺序 .
Set Traefik externalTrafficPolicy=Local to preserve client IP
With the default "Cluster" policy, kube-proxy SNATs external traffic to the node IP before forwarding to Traefik. That caused Traefik to see the node IP as the ...
在所有地方添加缺失的请求集成 i18n 密钥
在"需要自定义集成吗"下"提交请求"按钮? 反恐中心 在/整合中 掉回了原始的密钥 QQ 因为钥匙没有被定义 在所有22个地方添加了密钥 并清理了旧的定制 CtaSubheading 副本 仍然 引用 REST API / 企业级语言.
Use pg Pool options instead of connection string for geo DB
CockroachDB rejects insecure connections and node-pg can't verify self-signed certs via connection string alone. Parse the URL into Pool options and pass ssl:{r...
后链接目标到 www.kamocrm.com (canonical host)
PoweredByKamo组件运出指向顶端 https://kamocrm.com/ 但Canonical Kamo-marketing主机是https://www.kamocrm.com/. 更新所有三个变异的螺旋,使进站的SEO信号累积 而不是横跨最高点和www.
*** session check, loading spinner, rebrand analytics to Kamo Analytics
Use redis get instead of exists for more reliable *** validation on logout. Replace "Authenticating..." text with an animated spinner on the OTK auth page. Rena...
Copy GeoLite2 database to production image for country detection
The /geo/ directory containing GeoLite2-City.mmdb was built during the builder stage but never copied to the runner stage, so all country/region lookups returne...
Move CSP to proxy.ts instead of middleware.ts to avoid build conflict
Next.js 16 doesn't allow both middleware.ts and proxy.ts. The Docker build copies proxy.ts as the middleware, so add CSP frame-ancestors header there instead. T...
Clean up legacy analytics deployment on each CI run
Delete old analytics deployment, service, and ingressroute that conflict with the kamo-analytics deployment managed by its own CI/CD pipeline.
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...
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...