DEFAULT false を email verified カラム定義に追加
HibernateのスキーママイグレータはデフォルトなしでALTER TABLEを生成します。 既存の行でテーブルに失敗します。 columnDefinition はそれを強制します DEFAULT false を含むので、既存の行が正しく入力されます.
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*** SITE KEY を使う 符号化されたプレースホルダーの代わりに env var C2:レジスタResponse.userIdとすべてのAPIパラメータを数値から文字列に変更(CockroachDBユニーク rowid精度) C3: クリアなストール *** トークン (set...
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.
MailboxId→id と ProviderStatus→status をメールボックスリストの応答で名前変更する
メンバーのメールボックスのリストに対するフロントエンドの期待を持つフィールド名を一直線化します.
すべてのCSS-filterロゴインスタンスをWhite SVGに置き換える
運行、SubNavigation、Footer、SubFooterおよびPreloaderはすべて使用しました 同じ壊れたフィルタの明るさ-0 の反転パターン。 交換する ボード全体にロゴフルホワイト.svg.
CSS フィルターの代わりにフッターでホワイトSVGロゴを使用する
Nav と同じ修正 — バックドロップフィルタ内の img の CSS フィルターは、iOS Safari では信頼できません.
テーマCSSのオーバーライドに対する!importantでカラースキームを監視する
DynamicMetaLoaderは、カスケードに勝つリモートCSSを注入することができます。 追加する !importantはカラースキームを保証します。ダークはテーマのスタイルシートで上書きすることはできません.
TouchOptimized min-heightの執行からフッターとnvのリンクを除外
TouchOptimized は minHeight:44px を全ての <a> 要素の短い値に設定しました。 フットナフリンク(〜20px)を含む44px。 水分補給時のこのラン 硬いリフレッシュ、各<li>の屈曲項目を高さ44pxにし、作り出す フッターリンク列のダブルスピアリング。 Footer/navリンクは...
CSSフィルタではなく、あらかじめレンダリングされたホワイトSVGロゴを使用する
バックドロップフィルタ内の img の CSS フィルターは、iOS Safari では信頼できません。 #ffffff にセットされているすべての塗りつぶしでロゴ-full-white.svg を生成し、それをロードします 直接 — フィルター無し、すべての装置で白く保証されるブラウザのquirks無し.
テイルウィンド ダーク モード バリアントをクラスベースにロックし、OS のメディア クエリは不要
Tailwind v4 デフォルトダーク: 優先色スキーム (OS 設定) に対応するユーティリティ。 @variant のオーバーライドにより、 .dark のクラスが .dark のときにのみ有効になります。 DOMに存在するOSは、任意のデバイス上の色をフリップすることはできません.
信頼できる白いレンダリングのためのロゴ リンクのインライン フィルター様式を使用して下さい
Img 要素の Tailwind フィルタクラスは、モバイルブラウザ全体で矛盾しています。 アンカー要素上のインラインスタイルは、いつでも明るさ(0) invert(1)を保証します.
ダークカラースキームを強制するので、ブラウザはライトモードレンダリングを適用しません
'light' から 'dark' まで、globals.css、generateViewport、および html 要素スタイル — これは、SVG とネイティブ UI のレンダリングからブラウザーを停止します。 暗い背景にロゴが黒く見えるようにしたライトモードで.
モバイル上のnav行の後ろのレンダリングからロゴを防止
CSSフィルタ付きのdiv wrapperは、競合する新しいスタックコンテキストを作成しました モバイルブラウザのヘッダーのバックドロップフィルタで、ロゴをペイントする ヘッダーの背景の後ろ。 Image 要素に直接フィルタークラスを適用します.
JumpToBarとPreviewBannerでスクロールバーとモバイルクリップを解決
- オーバーフローを追加する: 垂直スクロールバーを防ぐためにJumpToBar内部コンテナに隠される - PreviewBannerコンテンツをモバイルでラップできるようにするため、テキストがポートレート電話にクリップされていない
スペースY-4をフッターリンクリストにインラインフレックスギャップで置き換える
Tailwind スペース-y-4 は :where() (特異性 0) を使用して、CSS でレースします。 不連続な縦の間隔を引き起こしている堅い更新のローディング。 インライン スタイルは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キーを追加
「カスタムインテグレーションが必要?」の下の「リクエストの送信」ボタン ログイン ***************************************************** キーがどこにも定義されていないため。 全22ロケールにキーを追加 また、まだステープルカスタムCtaSubheadingコピーをク...
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) へのバックリンク対象
Apex https://kamocrm.com/ しかし、カモマーケティングホストはhttps://www.kamocrm.com/です。 すべての 3 つの変形の href を更新して、インバウンド SEO 信号が蓄積します。 apex と www を渡る分割ではなく、canonical ホストに対して.
*** 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...