Add esign repos to JPA repository scan so ESignTemplateRepository bean is found
DocsService was crashing on startup because ESignTemplateRepository lives in com.kamo.z.shared.esign.repos which wasn't included in the @EnableJpaRepositories s...
今日の変更ログカウントのためにUTC日付の代わりに24時間ウィンドウを使用する
サーバは UTC で実行されるので、米国のタイムゾーンで toISOString() が返される 明日の日付とコミットなしのマッチ。 代わりに24hロールウィンドウを使用します.
Changelog API の強制動的で、 stale の日付キャッシュを防ぐ
Next.js はビルド時にこれらの GET ルート ハンドラを静的にキャッシュしました。 ビルド日付に新しい Date() を凍結するため、今日の changelog は更新されません.
System Docs タブの systemDocsOnly フラグを使用して、元の Docs のすべてのドキュメントを表示
元の Docs タブは、この org/assocType の全てのドキュメントを なし 示します。 assocObjectId によるフィルタリング システム Docs タブが systemDocsOnly: true を送信します。 null/empty assocObjectId でドキュメントのみを取得する.
Use **************** for hasDesignVersion, add systemDocsOnly filter
hasDesignVersion now checks if an esign template exists with current_design_version > 0, instead of using isSigTemplate which is true for all uploads through th...
デフォルト assocObjectId は、適切な doc タブのフィルタリングの現在のメンバー ID に
Oid URL パラメータが提供されていない場合、元の Docs と変更された Docs タブ システム Docs は、現在のメンバー ID で問い合わせます。 blank assocObjectId for org-wide ドキュメント.
Add @JsonIgnoreProperties to UploadTemplateRequest to prevent hash null on unknown fields
The frontend sends accessLevel, description, folderId, docTypeId in the metadata JSON. Jackson was failing to parse the entire metadata object when encountering...
ゴーストの正確な視覚的な位置でフィールドをドロップする
代わりにactive.rect.current.translated(DragOverlay ghostのクライアントのrect)を使用してください 翻訳された rect にマッチするので、フィールドはユーザがどこにいるかを正確に埋めます リリースしました.
ForwardToApi() を介してすべての esig API 呼び出しをルートして、保存の失敗を修正
Esig の 10 個のエスイグのルート ハンドラが ESIG SERVICE URL を指していました。 非既存のkamowsesigサービスプロキシへ。 すべてのハンドラを置換する ForwardToApi() では、標準 API ゲートウェイを介したリクエストが流れます。 (APIService → ESigSe...
Replace upsertSigners with full delete+insert to handle frontend temp UUIDs
The frontend assigns temporary crypto.randomUUID() values to newly-added signers before any backend call. The previous upsert-by-uid logic would throw 404 for t...
正しい回転サムネイル位置決めと復元回転変換
ThumbnailCanvasの2つのバグ: 1. 高さを置き換える:\${displayAspect * 100}%\`(absのパーセンテージの高さ) 配置された要素 — ブロックの高さを含むときの信頼できない `aspectRatio: String(baseAspect)` でパディングトップ) なので、ブラ...
Move scroll ownership from PdfCanvas to canvasContainerRef
PdfCanvas root Box previously had overflow-auto + h-full, making it its own scroll container. This meant: - scrollbarGutter: stable on canvasContainerRef had no...
Fit to Width calculates actual container width instead of resetting to zoom 1
Reads **************** (which accounts for the stable scrollbar gutter) and the page's natural width via **************** then computes fitZoom = (availableWidt...
Replace all hardcoded purple with var(--color-primary) on Settings & Signers page
Signers icon, icon background, count badge, Add Signer buttons, Add First Signer button, empty-state illustration tint, add-another hover, and the ALL_OF_TYPE s...
Remove fixed height and scroll bars from field properties panel
The panel had two vertical scrollbars: 1. DesignTab wrapper had height: 200 + overflowY: auto 2. FieldPropertiesPanel root had height: 200 + overflow: hidden, ...
PDF.js のワーカーの飽和を防止するために PDF ダイム ループの後に setTotalPage をディーファーします
50ページ PDF では、getPage() 次元ループマウントの前に setTotalPages を呼び出す 50 個の ThumbnailCanvas コンポーネントをすぐに使用できます。 それぞれがPDF.js(サーバー)に戻ります thumbnails はテンプレートでは生成されません)、共有中の 50 個の同...
Expand component scan and add full datasource/JPA/Redis/MinIO config
ConversionServiceApplication was only scanning com.kamo.ConversionService, missing all shared library beans (ImageService, MinIOStorageService, MemberRepository...
Add kamo-shared-library build stage to resolve missing dependency
The Dockerfile was trying to fetch kamo-shared-library from Maven Central, which doesn't exist there. Mirror the SecurityService pattern: clone the shared libra...
ページの積み重ねを防ぎ、サムネイルのスライバーを固定し、PDF.jsフォールバックでサーバーサイドのサムネイルを追加します
- flexShrinkを追加する: 0 から PdfCanvas 内のページ divs へページ flex カラムで圧縮しない - flexShrink: 0 を PageThumbnailSidebar に同じ理由でサムネイル項目に追加する - ThumbnailCanvasの自然なスケールを修理して下さい従ってサ...
Eager PDFレンダリング、自然スケールの正規化、水平スクロールなし
- PdfCanvas: IntersectionObserverをエイジャーレンダーオールページで置き換えます。 デザインタブが始まると、オブザーバーベースのアプローチは信頼できませんでした display:none — ブラウザは確実に交差点イベントを直火しない ancestor が display:none から...
PDFのサムネイルレンダリングでremoideChild DOMの競合を排除
ThumbnailCanvasでcontainer.innerHTML + appendChildパターンを置き換える React マネージド <canvas> ref を使って。 古いアプローチはReact-ownedをクリアしました DOM ノードは直接、React の調整を試みたときに失敗させる 今従ったTypo...
ApplicationIds と applicationBillingCycle を文字列配列として扱う
これらのフィールドは string[] とタイプされますが、 .split(",") はそれらに対して呼び出します。 TypeScript ビルドの失敗を引き起こします.
Add CockroachDB transaction retry for template init endpoint
CockroachDB serializable isolation can trigger RETRY_SERIALIZABLE on the read-then-write pattern in initTemplate. Retries up to 3 times with backoff when detect...
プロキシ ルートを OTK auth に変換し、未使用の esigProxy ヘルパーを削除
OTKは正しいauthのメカニズムです。セッション前のアプローチ 確立されたセキュリティパターンをバイパスしました。 すべての esig プロキシ ルート 今使用 apiProxy.ts から apiProxy.ts を再び生成します.
Correct OTK Redis key format and add imaging template list endpoint
OTK keys use OTK<id> and ***<id> (no colon) matching the Next.js proxy. Added POST /api/esig/templates/list to query imaging templates via shared library ImgRep...
OTK の代わりに、ESigService プロキシ ルートの直接セッション ヘッダーを使用する
Next.js で Redis のセッションを読んで、 orgId/memberId を信頼できるものにします。 内部のK8s DNS経由でESigServiceにヘッダします。 OTKの依存性を削除します.
Replace OTK auth with trusted session headers for internal K8s calls
ESigService is internal — the Next.js backend reads the session from Redis and passes orgId/memberId/userId as X-Org-Id, X-Member-Id, X-User-Id headers. No OTK ...
エディタのロードで imgId によるテンプレートの検索や作成に init エンドポイントを使用する
作成ページは URL で imgId を渡します。 編集ページがコールされました ESignTemplate を見つけるか、または作成する init エンドポイントは、 設計操作とバージョン履歴のUUIDを返します.
Scan all shared library repository packages to resolve bean dependencies
ComponentScan picks up shared library services which depend on repos in donotmodify.dao.repos and commerce packages — must scan those too.
Remove .mvn/ copy from Dockerfile — directory does not exist in this project
アクセスレベルの API のバックエンドとフロントエンド間の正しいフィールド名マッピング
バックエンドのセキュリティレベルId→accessLevel、isOrganizationOwner→isOwner、API ルートのmemberType→isTeamMemberをマップします。 MANAGE MEMBER SECURITY の代わりに EDIT MEMBER ACCESS LEVEL を使用するよう...
サブスクリプション API が利用できなくなったときにオファーページ用の静的なフォールバックを追加します
**************** テーブルはまだ生産に存在しません, API はエラーを返します。 難易度の高いプロモーションと計画データに戻る 従って提供ページはバックエンドの状態に関係なく働きます。 終了日を 4/20/20/2026 に設定します.
ApiPromotionタイプを更新して、新しいList<String>バックエンドのレスポンスにマッチする
applicationBillingCycles は、JSON 文字列ではなく配列です.
Extend 18DOFF promotion end date to 2026-12-31
The April 14 end date was causing the offer page to show as expired.
Validate Forgejo HMAC-SHA256 signature instead of plain secret header
Forgejo sends webhook secret as X-Gitea-Signature / X-Forgejo-Signature HMAC-SHA256 hash, not as a plain header value. Read body, verify HMAC, then forward to S...