Kb の記事で contentJson/contentPlainText の空の文字列の代わりに null を送信
空の文字列は、JSONB 列タイプでは無効で、コンテンツなしで記事を作成する際に DB エラーを引き起こします.
段階的な移行にCapchaイベントリスナーを適切にクリーンアップ
RemoveEventListener 呼び出しは setTimeout コールバックの内側にありました JavaScript が無視する値を返します。 この原因のハンドラに すべての user→pass のステップ遷移に蓄積し、実行するLogin を作る Capcha が検証したときに何度も火災します。 追跡によって...
UPSERT SYSTEM email template rows on every run
Previously the seed runner only inserted rows that didn't exist, so canonical HTML changes never propagated to the DB. Now existing SYSTEM rows have their bodyH...
Preview uses same auto-vars as sendToUser (org logo + name)
The preview endpoint now injects logoUrl, logoSimpleUrl, and orgName from the org's domain before applying sample content variables, matching the exact variable...
{{logoUrl}}プレースホルダーを使用して、メールマッチプレビューを送信
serializeFullEmailHtml が保存されました メニュー ローカルパスを解決する代わりにbodyHtmlのプレースホルダー。 メールテンプレートサービス 既に送信時に絶対ロゴ URL を注入します( org ドメインから)。 ザ・オブ・ザ・ クライアント・サイド・プレビューは、表示用のローカル・テーマ・...
完全なブランドのデザインですべてのcanonicalテンプレートを書き換える
5つのテンプレートは、一貫したテーブル構造(600px、丸め)を使用します。 カード、ブロックエディタのシリアライズFullEmailHtml を一致させる灰色のヘッダー/フッター) 出力。 ヘッダーとフッターには、 {{logoUrl}} / {{logoSimpleUrl}} が含まれます。 送信時に電子メールTe...
Add org-scoping, password length validation, and code quality improvements to PasswordChangeController
プレビューとエディタを単一のコヒーレントシステムに統一
- コンテンツ <td> セルをターゲティングする DOMParser によるシステムテンプレートコンテンツを抽出します。 メールフレームがブロックを再シリアライズしたときに重複を防ぐ - バックエンドプレビューのラウンドトリップをクライアント側から生成されたプレビューで置き換える SerializeFullEmail...
Add @Transactional to DataLoader.run to fix LazyInitializationException on startup
Use JPA entity traversal for grant-all detection (covers dept/job roles)
Filter null rights in buildAppliedRightsWithSources; upgrade shared-lib to 1.5.0
登録後にAvatar Creator avatarをサーバーにアップロード
Avatar Creator avatars は、ローカルフォーム州の SVG データ URL としてのみ保存されました。 サーバに送信されず、アバターセット無しで新しいユーザーを残します。 SVG を PNG blobs に送信時間に変換し、アップロードする 既存の登録写真エンドポイントでアバターがマイアカウントに表...
Use core NATS pub/sub for email-verified SSE fan-out
Replaces in-memory ConcurrentHashMap broadcast with NATS core pub/sub so all pods receive verification events regardless of which pod handled the token. Falls b...
Fix センタースクロールとシステムテンプレートブロックロード
- Eメールフレームからの高さ:100% を削除して、コンテンツを自然に成長させ、作品をスクロールします - 完全なHTMLシステムテンプレートから編集可能なブロックに<body>コンテンツを抽出
ブロックエディタにロードするときにcanonical HTMLから内部コンテンツを抽出
BodyBlocks が null と bodyHtml が <!DOCTYPE から始まるとき、 メインコンテンツ <td> を初期の HTML ブロックとして表示するため、ユーザーは既存のものを見る 空のエディタの代わりにコンテンツ.
Use avatarType field + JDBC for photo URL generation to handle Hibernate proxies
**************** previously used instanceof AvatarPhoto to determine avatar type and cast to read fileExtension. When Hibernate returns a base-class proxy (e.g....
Update EMAIL_VERIFICATION sample vars to match current template
Use expiryText instead of expiryMinutes (renamed variable), and update verifyLink to point to the register subdomain (correct send path).
ブロックデザイナーのフルドキュメントボディHtmlのダブルラップを防止
BodyBlocks が null で、bodyHtml が完全な <!DOCTYPE html> ドキュメントの場合 (例:canonical シードテンプレート)、単一のブロックとしてインポート serializeFullEmailHtml を 2 番目の <!DOCTYPE html> シェルにラップします。 電...
隠し入力寸法をゼロにすることで検証ページレイアウトを復元
MUI Boxは数値幅/高さ値0〜1をパーセンテージとして解釈するので、 幅:1は隠された入力カバー完全なカードをしました。 0 へ変更 入力は見えないがレイアウトに干渉しない.
Preserve DB domain case in NoReply from address
Removed toLowerCase() — the domain already comes from resolvePrimaryDomain which reads org_domains from the database, so case is canonical from DB.
トークンリンクの自動検証とログインへのリダイレクト; コードフォーカスインジケータを追加
- /verification?token=xxx は、マウント時に checkEmailByToken を呼び出すようになりました。 成功へのログインをリダイレクトします。失敗時にコードエントリに戻ります - アクティブコードボックスは青いリングを示していますので、ユーザーが入力している場所を知っている - 初期エラ...
Lift *** ウィジェット 上記 クリックツーフォーカスオーバーレイ (z-index)
オーバーレイ (position:absolute, z-index:0) は Capcha を覆いました DOM 注文で後で登場するのでウィジェット。 z-index:1 を追加する *** コンテナは、ポインタイベントが到達できるようにします.
Remove nonexistent postfix-lmdb package, install lmdb library instead
postfix-lmdb is not a valid Alpine package; lmdb support is built into the base postfix package. The pod was CrashLoopBackOff due to apk failure.
Fix Docs image registry, add Recreate strategy to coturn/postfix, increase qdrant memory
- Docs: fix wrong image registry (redis.kamo.svc... → **************** add Recreate strategy - coturn: add Recreate strategy to prevent rolling update port conf...
Switch Postfix sasl_passwd from hash to lmdb format
Alpine postfix build does not include hash support — postmap and smtp_sasl_password_maps were silently failing, deferring every outbound relay attempt through s...
インラインをレンダリングする代わりに登録後の/verificationにリダイレクト
URL を正確に保ちます。ブラウザは /verification ではなく /member を表示します.
Resolve root domain for NoReply from-address instead of bare subdomain
resolvePrimaryDomain() was returning the first domain entry (e.g. "www") which produced NoReply@www. Now prefers root domains (parent == null) so transactional ...
Populate all EMAIL_VERIFICATION template variables
Was sending only {token, code} — template also needs orgName, firstName, verifyLink, and expiryMinutes. Load org and user to build the full vars map, and resolv...
Add internal.auth.secret to EmailService configmap
InternalAuthFilter was rejecting all service-to-service calls (send, seed-org) with 503 because internal.auth.secret was unconfigured. Matches the same INTERNAL...
Allow transactional send on port-25 relay and auto-seed missing templates
Port-25 SMTP (postfix) requires no auth — transactionalCredentials() was throwing ProviderUnavailableException when user/pass were unconfigured, blocking all ve...
Use subdomain-aware SQL to match findByDomain JPQL logic
Org domain lookup in resendVerification was doing an exact-match query that failed for subdomains stored as child records (e.g. 'api' with parent 'kamocrm.com')...
Host/X-Forwarded-Hostを設定すると、APIServiceは正しいorgを解決します
APIServiceは、X-Forwarded-Hostをrequest.getServerName()で上書きします。 Host ヘッダーから。 明示的なホストヘッダがなければ、K8s内部サービス hostname は SecurityService に転送され、org が何も返さないようになっている。 ログインプロ...
Correct EmailService URL port in configmap (4203 -> 80)
EmailService K8s service exposes port 80, not 4203. Verification emails were timing out on every registration attempt.
Bypass JPA org lookup to avoid Hibernate cascade flush error
**************** triggers **************** which causes a Hibernate auto-flush. That flush fails because Organization.features was previously replaced with a pl...
Mutate は、カスケードの orphanRemoval エラーを回避するために、場所内のコレクションを提供しています
Org.setFeatures(newList) を呼び出すと、Hibernate-tracked persistent を置き換えます。 クエリが自動フラッシュをトリガーしたときに、JpaSystemException を引き起こしたコレクション 開いた EntityManager セッション (OpenEntity...
Use getReferenceById to avoid cascade orphanRemoval flush error on registration
Loading Organization via findById inside @Transactional caused Hibernate to detect the features collection was de-referenced during auto-flush, throwing JpaSyst...
