コンテンツへ移動
KAMOUniverse

チェンジログ

何が新しいの?

プラットフォームのすべての改良 それが出荷される

  1. · kamo-internal

    Kamo-signer 署名コアをkamo-internalに移植

    @kamo/* パッケージはすべて、エクスポート:./src/index.ts とビルドなしのプライベート:true です。 ステップ, ので、公開可能なアーティファクトはありません — ファイルがコピーされ、上に再配線されます 相対的な輸入。 Behaviourは変更されていません。 インポートとi18nの移動のみ。 pdfjs-dist 4.10.38 ビルド前のステップでコピーされた SELF-HOSTED ワーカー。 お知らせ pdf.js 4.4.168 を cdnjs からロードする************************ 法的拘束力のある表面と2つのエンジンが異なる GlobalWorkerOptions オブジェクトはモジュールのインスタンスだけを中断しないまま 決して会いません。 FieldElement.tsx ではなく、フィールドコントロールのレンダリング pointerEvents:'none' のプレビューは、値のバインディングなしで、デザイナープレビューではなく、 入力。 useTranslations は 4 つの署名コンポーネントから出てくる: kamo-signer's を呼び出す 独自のメッセージキー、kamo-internalの辞書はそれらを持っていません、そして新しいキー 発明できません。 文字列は props として到着します。 SIGNATURE FONTS は prop です。 4 つ以上の次の/font/google は 1 つのモジュールにロードします。タイプされたフォント ID はまだ乗ります CapturedSignature.typedFont では平坦化し、証明書は影響を受けません。 両方の記号ストアで、動詞のコピーから2つのマークされた逸脱: - readOnly フィールドをスキップします。 kamo-signer はそれらをカウントしました。ESigService の FieldCompletion — 出荷されたサーバー側の執行 — ない (f ==null | f.readOnly() | !f.required() が続く場合) 維持する サイダーは、サーバーよりも厳格にコピーします。 彼らがいないギャップにメンバーを駐車します サーバが envelope を完全に検討している間閉じる制御。 - ウィンドウの代わりに永続ガード localStorage をドラフトします。 ウィンドウが間違っている 質問: localStorage は absent (server レンダー) か、アクセスを投げることができます (プライベートモード、分割されたストレージ)、およびドラフトはウィザードを服用してはならない とりあえず.

  2. · DocsService

    /api/docs/legal/member/** でメンバーの表面をマウントする

    別の漏斗が付いている別のコントローラーはここに承認がここにありますので、 アイデンティティと人事の権利ではありません。 Guarded() を介してこれらをルーティングすると、 自分の書類から従業員をロックするか、または幅広い法的パッケージアクセス テンプレートグリッドとオーディエンスプレビューのロスターが全体に開くまで org; クラスは、LegalPackageAccess への参照を保持しないので、ショートカット 利用できません。 マッピングは、メンバー ID または org id を要しません。 サービス responseStatusExceptions はステータスを維持します: 404 の非利用者、409 は既に終了しました、 422 未認識および 503 の esign-unavailable は 4 つの異なった指示です、 そして、そのうちの1つは、すでに成功したメンバーを意味します。 予期しない例外は 固定弦 500: e.getMessage() を e.getMessage() を HR 表面に許容するが、これは 社員一人ひとりが到達できる。 KToken抽出物は、セキュリティ/SessionKTokenに移行しましたので、これは3分の1ではありません 動詞のコピー.

  3. · DocsService

    終了時のパッケージの検証、およびEXECUTED/AWAITING OTHERSの分割

    WORM LegalPackageAttestation: FROZENから認証TextSha256 バージョン(パッケージのドラフトワーディングはミュータブルであり、既に存在している可能性があります) reworded), manifestSha256 以上のご注文 [{documentUid, contentSha256, orderIndex}] 実際に提示された、atestedAt アプリケーション・セット、sourceIp から 右から左へ X-Forwarded-For ウォーク、ProofBlob の動詞ので、消化は 後悔した。 クライアントは完了のために信頼できません。 何も書かれている前に、それぞれ 署名可能な文書の封筒はESigServiceから再読まれます; 私の受取人は 署名、およびPARTIALLY SIGNEDは、DiscoverEnvelopeSyncServiceの仕組みを崩壊させない 崩壊するので、保留カウンターの利回りはAWAITING OTHERSではなく クレームを実行するパッケージ。 失敗した読み込みが終了を拒否 — a タイムアウトコールは、誰もが署名した証拠ではありません。 署名なしの文書を持つパッケージは、封筒を作成せず、ESigServiceを呼び出しません。 全体で、検証は唯一の実行証拠です。 第二の仕上げ 既存の行を返す: 実体の @PreUpdate は、デザインと migration の UNIQUE インデックスを代入する uid は実際のシリアライズです.

  4. · DocsService

    Identity-authorizedのメンバーは割り当てのための表面を読みました

    LegalAssignmentOwnership は LegalPackageAccess の SEPARATE ガードです。 独自の合意を遂行するメンバーは、人事の権利を保有し、人事の拡大 これらを認めるためにセットを読んで、テンプレートグリッドとすべてのメンバーに渡します 聴衆のプレビューのメールとフルロスター。 発信者ではないものすべて 独自の割り当ては、同じ404に応答します - 403はuidが本物であることを確認します。 Details() は、HR 行 (firstViewedAt) での最初のビューの記帳を行います。 ESigService ではなく PENDING -> IN PROGRESS から、受信者ステータス マシンは無接触であり、バッジは正直にとどまります。 証明の単語が来る FROZENバージョンでは、パッケージのミュータブルドラフトから決してありません。 ドキュメント Pdf は ACKNOWLEDGE-ONLY の文書を扱い、提供された ImgDat's を検証します コンテンツアドレスは、バイトを提供する前に凍結した contentSha256 に対して消化します。 saveImgContent は img.setDat をすべての Docs に保存しますので、ドリフトはライブです。 署名可能な文書は、署名されたルートを命名する409で拒否されます。 それらを平らにするサービスから来なければなりません。 KToken の orgID/memberID はプリミティブな長さなので、プランの "= null" アイデンティティ check は 0 の代わりに、extractKToken は absent セッションフィールドの背後にある 0 を残します.

  5. · DocsService

    マニフェストの正式な形態およびspof抵抗力があるクライアントIP

    manifestSha256 hashes 順序 [{documentUid, contentSha256, orderIndex}] メンバーは実際に示されていましたが、長プレフィックスしたので、細工されたuidは模倣しませんでした フィールド境界と2つの異なるドキュメントセットを同じようにします。 証拠刑務所はあります 保存された動詞と往復は同じ消化に戻ります - 証拠の空白 自分のハッシュを再現することはできません。 LegalClientIp は X-Forwarded-For RIGHT-to-LEFT を歩いて、最初のパブリックホップを取ります。 DocumentAccessAuditor はクライアント制御である左から右へ読みます。 既存の欠陥はここに固定されていませんが、それはのソースではありません 明白なsourceIp.

  6. · ESigService

    /api/esig/member/** のスタッフ認証メンバーサイン面

    OTKAuthFilterは/actuator、/api/esig/public、/api/esig/internalだけをバイパスします、 そのため、このプレフィックスは、すでにorgId/memberIdとスタッフOTKのauthの後ろにあります。 リクエスト 受信者はパス変数ではありません: マッチングによって解決されます EsignEnvelopeRecipient.memberId を OTK 会員 ID に移行するので、パラメータは存在しない メンバーは同僚の行に到達するために変更することができます。 設立されていない、非ユール・オルグ、 not-on-this-envelope は、同じ 404 にすべて答えます。 No /delegate — 任意の外部メールにコンプライアンス文書を渡します 承認なし、無効なフラグなし。フラグではなく、省略によって除外されます。 なし /decoder と no /stepup のいずれか: 受信スコープド デコーダーは、HR の void に属します パス、ステップアップは、Redis のサイネージャーセッションでキー化され、この表面は持っていません。 SignerIpAddressは、RIGHT-to-LEFT X-Forwarded-For walkから来ています。 EsignPublicController.clientIp はクライアント制御である左から右へ読みます。 したがって、自発性であり、その価値は明らかな分野に土地を与えます.

  7. · kamo-internal

    パッケージのサブタブを割り当て、/redeliver/void アクション

    MUI-paginated fetch を上回る AG Grid コミュニティ — コミュニティにはサーバサイドの行モデルはありません。 そのため、サーバーページとグリッドは、それが何であるかを正確にレンダリングします。 実行された カラムは、チップのレンダーが同じステータスからサーバーサイドに派生するので、2つは 同意し、封筒なしで署名可能な文書は、座るのではなく警告を上げます "pending" として永遠に。 右側のフィルタ列は、org 独自の複数のチームメンバーの用語で、 データ, スタンドアローン "All" 行 — 意図的に 1 つを補わない "All {Team" メンバー}" 文字列, 辞書のそのようなメッセージだけが壊れているので ローカルの12個と、新しいキーはここに発明できません。 ロースターは、既存の聴衆プレビューのエンドポイントを書いているのではなく再利用します メンバー登録者 + チームメンバー - コントラクター デュアルフェッチの第13コピー PROSPECT、CANDIDATE、TERMINATED、RESIGNEDメンバーを返します。 paginator の "1-25/100" は、common.table.of ではなく、データから作られています。 value は pl.json の EMPTY STRING です。キーガードは en に存在するキーだけを証明します。 Void は固定 VOID チャレンジ ワードを使用します: ライブ 法的機器 org-wide をキャンセルします。.

  8. · kamo-internal

    法的パッケージは/配達者/退役軍人/退役軍人および代入クライアントを渡す

    OTKAuthFilter が行うため、1:1 ForwardToApi のルートを 1 つ上流リクエストします。 getAndDelete と 1 人のメンバーごとに 1 つの OTK が必要です。 ザ・オブ・ザ・ リストはPATHだけを渡します; ForwardToApiはブラウザのクエリ文字列自体をマージします。 status-to-i18n マッピングは、 check-i18n-keys.mjs ではなく、実際のガードです。 en にキーが存在することを証明し、メッセージ/ は gitignored なので、ローカルにキーパスを追加する その後、Docker ビルドに失敗します。 ここにすべてのキーがすべての22ローカルで検証されています プレゼンスとプレースホルダーセットの平等と、知られる4つのどれものテストピン 破損したキーが返されます。 空の void 選択は、TeamMemberIds キーをまったく送信しません。 org-wide ブランチ。空の配列は何も無効になり、何も報告しません。 RedeliverResult は、TransportResult を継承しません。RedeliverResultDto はバージョン番号がありません。 メニュー 継承すると宣言されます プロパティ バックエンドが送信されないので、SummaryParts は newVersionNumber を読み込みます v0 を報告する代わりに redelivery .

  9. · DocsService

    Org-scoped、paged、濾過可能な法的パッケージの割り当てのリスト

    EntityManager ではなく、共有lib リポジトリメソッドで構築された: フィルタセット 動的であり、kamo-shared-library に追加すると、共有アーティファクトの再ビルドが強制されます。 クエリは DocsService の問題だけのため、すべての消費者に。 組織の述語は無条件であり、まず第一に、それが生き残ることを証明します すべてのフィルタの組み合わせ — エンドポイントは org パラメータをとらないため、 ドロップされた句 別のテナントの割り当てをリストします。 Paging は uid tie-break を実行します。 200名分の納品書を1ミリ秒以内にお届けいたします。 ドキュメントのカウントは2 グループ クエリで, ない 25 の 1 列のルックアップ. 未知の状態は400で、無声に コンプライアンスグリッド上で無視されたフィルタ.

  10. · DocsService

    Voidの法的パッケージの割り当て、org-wideまたは名前付きメンバー

    パーアサイン結果 — 無効に、スキップされた実行されていない、非組み込み — 管理者 6名の人々のためのパッケージが既に実行されているかを知りたい 証拠は立ちます)、決して割り当てられなかった(屋台ロスターID)。 ベア200は不可 と言う。 割り当ての移行は同期です: 割り当ての行は、電子署名のステータスではなく、 会員をゲートしてバッジを運転する。 封筒 voids はオフスレッドに行くと、 SIGNED/VOIDED で事前フィルタリング, voidEnvelope 409s が完成した封筒と 承認のみの文書は、まったく封筒を持っていません。 複数の行を保持できるメンバー 再配達後、すべての行が独自の決定を得る.

  11. · DocsService

    変更されたパッケージをRedeliver、開いた割り当てを監督

    生の指紋が公開されたものと異なる場合を除き、拒否。 Binder.date更新 死者であり、 Img はリビジョン カウンターがないので、指紋は唯一の変更信号です ゲートなしのRedeliverは、誰もが静かに無効にするボタンです 進行中の作業と同一の機器を再発行します。 既存の公開パス(バージョン列の1つの作家)を通した公開 すべての OPEN の割り当て SUPERSEDEDED は、無効化のための非ターミナル封筒をキューに入れ、 スーパーシードメンバーセットに再発行するほか、新しくマッチングした方へ再発行 FindAudienceは最初の配達が取り替えを得ないので、メンバーが終了しました。 実行された課題は無接触であり、証拠です.

  12. · DocsService

    リクエストスレッドをオフに、そのオーディエンスに法的パッケージを提供

    リクエストスレッド(安価な2つのクエリ)を計画するので、その応答は誰であるかについて正確です 含まれ、誰がスキップされ、なぜか)、それを書き留める:200のメンバーx 8文書は 1,600行以上のESigServiceコールとDocsServiceはWOPIを提供しています。 プールは Spring Executor ではありません。 applicationTaskExecutor は **************** と DocsService は既に bare @Async を持っています KSessionService と DocumentService -- Executor bean の公開は静かに動く WOPI セッションは、この小さな境界プールに触れます。 Envelopes は、任意のトランザクションの外で作成されます。 20 秒の読み込みタイムアウトは、保持中に ヒカリコネクションは、10人の星のプールです。 封筒の署名可能な文書 null の envelope uid を保ち、グリッドが持つ唯一のシグナルです。 ここでのredeliver/void/assignment-grid マッピングの土地もあるので、コントローラーは 1 つを持っています 承認の漏斗は後でボルトで固定される秒の1つよりむしろ一度書かれ、証明しました; タスクが 4-6 体を埋めるまで、彼らのサービスは 501 に答えます.

  13. · DocsService

    配送プランナー — 増分対象、メール事前フィルタ、期限

    配信は新進路であり、再走する意味で、既に保有しているメンバー 代入は、同じ楽器の秒単位のコピーではなく引き算されます。 EsignEnvelopeService でメールがカウントされ、スキップされることはありません。 400sは、すでに初期のメンバーがすでに持っている後、ループの内側から1つなしで署名者を ライブ封筒。 オーディエンスのクエリORs 3述語なので、重複は崩壊します。 著名な文書は意図的に全く封筒を得ません.

  14. · DocsService

    ESigService 法的パッケージの配達のための内部クライアント

    DocsServiceのファースト・アウトバウンド・サービス・ツー・サービス・クライアント。 投稿へ メニュー (開始マニュアル、決してメーターで計られる)と skipInvite=true — HR は 1 つの通知を 1 つ送信し、1 人の文書につき 1 つだけ送信します。 タイムアウトは明示的です。: EsignEmailClient は、 なし でバーの RestTemplate をビルドし、 untimed は、ワーカースレッドを Wedged Pod ピンで読み込み、 ワーカースレッドを再起動します。 何も投げません 上流のエラー, ファンアウトは、メンバーごとの署名可能な文書ごとの呼び出しを発行するので、 バッチを1つの悪いテンプレートの上に捨ててはいけません。 Voidは409をレポート可能にマップ エラーではなく省略された。 応答レコードは未知のフィールドを無視 — コンテキスト ObjectMapper はまだ FAIL ON UNKNOWN PROPERTIES を持っています.

  15. · kamo-internal

    パッケージテンプレート 法的およびコンプライアンスのためのサブタブ

    HrTabPlaceholderボディだけを取り替えて下さい —ルート、タブの記入項目およびゲート すでに hrTabs.ts に存在します。 AG Gridコミュニティリストと作成/編集 ダイアログ 注文されたバインダーピッカーは、HR RESOURCE(またはID 15ではなく13)、アップ/ダウンリオーダー、 そして、全チームメンバーが無効に切り替えるという、部署/Jobタイプを複数選択します。 ザ・オブ・ザ・ toggle のラベルは org 独自の複数のチームメンバーの用語で、ハードコードされた文字列ではありません。 新しいi18nキーなし:すべてのラベルは、辞書が既に定義されているキーを再使用し、カウントします データからレンダリングします.

  16. · kamo-internal

    法的パッケージプロキシルート、クライアントAPIと純粋なヘルパー

    /api/docs/legal の下の 1:1 ForwardToApi のルートを薄くして下さい — 1 つの上流の要求それぞれ、 OTKAuthFilter が getAndDelete とファンアウトのループを次のルートで実行するので、 会員1名につきOTKが必要です。 Ids は終端に終端 (unique rowid) を保持します。 注文は ラップではなくクランプされ、すべてのチームで聴衆リストが空に送られます 会員様は、客席が狭くなってしまったため、退場できません.

  17. · DocsService

    オーディエンスの解像度プレビュー

    TeamMemberRepo.findAudience を通して保存されたか、または聴衆を起草させます。 必須のACTIVE + recordStateの適格性述書を運ぶ読者だけ — チームメンバー・コントラクターのエンドポイントは、PROSPECT、CANDIDATE、TERMINATED、RESIGNEDを返します。 電子メール(EsignEnvelopeService hard-400s なし)とメンバーのフラグ TEAM MEMBER のセキュリティ (ImagingController はファイルされたコピーをサイレントにスキップします) ログイン 誰も解決しないようにターゲットを絞る聴衆, 空のIDリストが送信されるので、 OR'd IN句は有効なSQLを保持します.

  18. · DocsService

    公開は、バイトピン化された文書でバージョンを凍結します

    Pins img dat id とコンテンツハッシュと、img id ではなく、saveImgContent は同じことをリスペクトします。 Img は、すべての Docs に保存された新しいバイトで、dt のライブに resolveSource が歩く セッションビルドとフラットテン 解放された設計を聞かせるのではなくスナップショット resolveDesignJson は最新のものに戻り、変換されていないドキュメントを拒否します。 PDF は、指紋が動かされていない公開を拒否します.

  19. · DocsService

    /api/docs/legal/packagesの法的パッケージCRUD

    リスト、作成、取得、更新、削除、注文バインダーの修正とオーディエンスの行 セットとして置換します。 Org は、すべてのパスでセッションから来る — DocsService は allowAll と OTKPreAuthFilter はトークンなしでチェーンを継続するので、 コントローラーの ExtractKToken は認証です。 所属部署、役職、 会員とバインダーのID 400は、黙って何も記述するのではなく、明示的に.

  20. · DocsService

    法的パッケージ ワイヤー契約および要求の正規化

    Ids は文字列 (unique rowid は MAX SAFE INTEGER を超える) としてクロスします。 バインダーの発注はあります リストの注文、重複解除、および非数値エントリ400sをスキップするのではなく、 サイレントスキッピングは、注文がバインダーを失う方法です。 オーディエンスリストを空にする sendinel では、findAudience の OR'd IN 句が有効な SQL に留まっています.

  21. · DocsService

    法的パッケージのためのコンテンツ指紋

    Binder.dateUpdated は INSERT の後に動きませんので、パッケージのコンテンツは変更はありません 比較する信号。 正規注文バインダー/itemのタプルにSHA-256を追加 — imgDatId を含む。なぜなら、saveImgContent は新しいバイトで同じ Img をリポイントするからです。 すべての Docs が保存します。 - 認証テキストハッシュ。 エンコーディングは長さのプレフィックスです そのため、ビルドされた configJson は異なるレイアウトを強制できません。 また、リポジトリスキャンにcom.kamo.z.shared.hr.legalを追加します.

  22. · SecurityService

    Push platform-admin state changes instead of being polled for them

    Every platform screen backed by this service refreshed on a timer, because this service has no WebSocket and therefore no way to tell anyone anything: the closed-loan trainer tab re-read every 4 seconds while a run was live, DNS provisioning every 15, commerce sync logs and VOIP recording stats every 30, and the domain setup page asked verify-dns once a minute per open tab. PlatformEventPublisher sends these to core NATS and MediaService's new PlatformStompRelayController puts them on STOMP. Core NATS rather than JetStream, matching ThemeProvisionPublisher: this service's stream is CHAT_MESSAGES/chat.>, so a JetStream publish to security.* would fail expected-stream validation and be dropped. At-most-once is the right trade — every consumer also loads over REST when it mounts, so a lost event costs a refresh, never correctness. Wired at the points where the state actually moves: - ClosedLoanTrainerService on each progress write, on claim, and on every terminal state, so the monitor advances exactly when the walk does. - DnsProvisioningService as each record settles, rather than the panel re-reading the whole log hoping something landed. - RetailSyncLogBroadcaster on each sync-log row, via the new shared-lib listener seam, keyed by provider config so an org syncing several providers does not redraw all of them because one moved. Two counters have no such moment, and are handled honestly rather than pretended into events: - The VOIP recording backlog is written by another service entirely, so PlatformStatsWatcher samples it — but on the server, once, and it publishes only when the numbers actually change, so a quiet backlog produces no traffic where the old arrangement re-sent an identical payload to every viewer twice a minute forever. trigger-sync publishes immediately, since it knows the backlog is about to move. - Diagnostics is live JVM/host/database readings where essentially every field differs second to second, so there is nothing discrete to push. It gets a bare tick: one server timer deciding when "now" is worth re-reading, instead of one per open tab each pulling the full snapshot. DomainVerificationWatcher replaces the setup page's polling. DNS propagation and certificate issuance are genuinely external state with no event to subscribe to, so the checking has to happen somewhere — but not in every browser. One sweep covers every waiting domain, takes the 25 least-recently-checked so a backlog of misconfigured domains rotates instead of being re-queried in full, only probes HTTPS once DNS resolves, and publishes only when a domain actually advances. Two existing tests construct these classes directly and were updated for the new constructor parameters. Note: **************** fails on main already (unset EntityManager in the test's hand-built service) and is untouched by this change — verified against a clean HEAD worktree.

  23. · EmailService

    メールボックス変更イベントを公開して、メールビューがポーリングを停止

    フォルダツリー、会話リスト、メッセージリストはそれぞれ30秒で実行されます。 何かが動かされたチャンスにリロードするタイマー。 WebSocketは既に メールが到着した時に伝えましたが、メールボックスの変更方法の1つです。 — Roundcubeまたは電話でメッセージを読み込み、それを移動、削除、または 次のチェックが終わるまで、UI を左折します。 emailMailboxChanged は、表示されているフォルダーがなくなったこと、および、 そのため、消費者は気にしない種類を無視することができます。 掲載記事 email.changed.<addr> と、************************ に中継 IDLEリスナー(arrival、expunge、フラグ変更)、マーク読み取り、フラグ、 エンドポイントの移動、削除、スパム、送信、およびドラフト。 意図的に電子メールUnreadPublisherに折りたまれていない: 1つは数を所有しているので、 提供者および石炭は、手頃な価格を維持するために破裂します。 これは、 カウントなし、何も読みませんので、すべての変更に送信するのに十分安いです カウントのニーズをウィンドウの後ろに待つ必要はありません。 2つに触れ、ソースが常にないため、レポートを移動 発信者に知られる消費者は、「表示されているものをリロード」として扱います.

  24. · MediaService

    リレーセキュリティサービスプラットフォームイベントをSTOMPへ

    SecurityService は、プラットフォーム admin 表面 — システム構成、DNS を所有しています。 暫定, コマースの同期 — しかし、WebSocketエンドポイントがないため、すべての画面 何も言い、タイマーでリフレッシュする方法はなかった。 クローズドローンのトレーナータブは4秒ごとに、DNSは15秒ごとにプロビジョニング ログと VOIP の記録ステータスを 30 ごとに同期します。 それはNATSをコアに公開します。これは同じSTOMPにそれらのメッセージを置きます アレンジサポートStompRelayControllerと**************************** すでに使用しています。 目的地の対象は機械的であり、主要な「セキュリティ」をドロップし、スワップ slashes のドットなので、security.dns.log.42 は /topic/dns/log/42 に着きます。 つまり、新しいイベントタイプは、パブリッシャーと購読者を必要とし、ここでは何もありません。 プレフィックスはセキュリティではなく明示的にバインドされます。>: キャッチオールは テーマProvisionStompRelay の二重deliver Security.theme.provision.*、 すでに同じトピック形状に中継します.

  25. · kamo-shared-library

    Polled ではなく、進捗とドメインの状態を同期させる

    複数のプラットフォームであるSecurityServiceのプッシュ変換のための2つのホック 何も言う方法がなかったので、タイマーに更新された画面。 RetailSyncLogListenerは、RetailSyncOrchestratorでオプションの通知シームです。 sync run が IN PROGRESS の行を書いているときに呼び出されます。 ターミナル1。 オーケストラは、通知がどのように旅行するのか、そして 実装が登録されていないと、以前のように正確に動作します。 プロバイダの同期 ダッシュボードは30秒ごとに全ログリストを再読み込みし、実行を監視しました。 始まりました。 メニュー ないトップレベルのドメインをリスト 終了の到来 — DNS の未確認、または証明書が確認されていないことを確認します。 サーバ側検証用監視装置: ドメイン設定ページ polled パブリックDNSの伝搬を待っている間、オープンタブごとに1分1回検証-dns 証明書の発行。 最小限に再確認し、Pageable で取得 限界なので、一掃は永続化ドメインの数で成長することはできません.

  26. · ESigService

    送信者を1封筒の招待メールを抑制できるようにする

    エンベロープを無条件に電子メールで送信するので、多くの呼び出し主が 1つの通知の背後にある封筒は、静かに滞在する方法はありませんでした。 Null は、 既存の振る舞い;アクセストークンは、どちらの方法でも発行されます.

  27. · EmailService

    Push INBOX unread counts over NATS/WebSocket instead of polling

    The nav-top mail badge in kamo-internal refreshed itself by calling /api/email/folders every 30 seconds, per browser tab. That endpoint walks the entire folder tree and opens every folder read-only to answer, so the cost of one integer was a full mailbox summary, repeated indefinitely. The WebSocket that already existed only announced that mail had arrived and carried no count, so its one job was to trigger another poll. Publish the count itself: - EmailUnreadSnapshot on NATS email.unread.<addr>, relayed to STOMP /topic/email/unread/<memberId>. NATS is in the path because the pod that observes a change is routinely not the pod holding the member's WebSocket. - EmailUnreadPublisher coalesces per mailbox, so a ten-message IDLE delivery or a page of mail marked read is one IMAP round trip and one publish, off the caller's thread. - MailReader.getUnreadCount reads one folder. Graph answers it from the folder list it already returns; IMAP-backed providers override it with a single STATUS (UNSEEN). - A snapshot is published on subscribe, on IDLE messagesAdded/messagesRemoved, on IMAP flag changes, and from the mark-read / flags / move / delete / spam endpoints. Three gaps this also closes: - Flag changes were invisible. Reading mail in Roundcube or on a phone sets \Seen without adding or removing a message, so the badge only ever fell when the browser next polled. IDLE now carries a MessageChangedListener. - Cloud mailboxes got no push at all. EmailWebSocketController resolved credentials through the KamoMail virtual_users table, which has no row for a member on Microsoft 365 or Google Workspace, so subscribe() logged a warning and returned. It now resolves through MailProviderResolver, and IDLE connects with the credential spec (host/port/TLS/XOAUTH2) via a shared ImapStoreFactory.connect rather than assuming the KamoMail host and a password. - Sessions leaked. A closed tab never sends /email/unsubscribe, so mailboxes are now reference counted per STOMP session and released on SessionDisconnectEvent. Mailboxes with no live IDLE listener — Graph, past the 50-connection cap, or a dead IDLE thread — are swept server-side every 60s and published to the same topic. That replaces per-tab polling rather than push: one sweep serves every tab a member has open, membership is re-tested each pass so a dead listener is picked up, and the browser still receives the count over the WebSocket. MessageIndexer binds email.> and deserialized everything on it as a message, so it now skips subjects outside email.inbox. — filtered in the handler rather than by narrowing the subscription, because email-metadata-indexer is a durable consumer and changing its filter subject would reject the subscribe on every pod until the durable was deleted by hand.

  28. · InitializerService

    法的パッケージのスキーマを上陸させる

    リポジトリのスキャンリストにcom.kamo.z.shared.hr.legalを追加し、確実に 独自性とルックアップは、エンティティティティティティティティのマッピングを安全に表現することはできません.

  29. · kamo-shared-library

    唯一の証拠としてパッケージの検証を録音

    パッケージレベルの「私は読んで同意しています」とは、さまざまな法的手段です。 E-SIGNは、あらゆる文書の署名から、トランスアクティベーションを承諾し、 署名可能な文書のないパッケージの唯一の証拠。 ガードは更新を拒否します PhiAccessLog の使い方を削除.

  30. · kamo-shared-library

    パーメンバーの割り当てとパードキュメントの進捗を追加

    ドキュメントの行は、N e-sign エンベロープが1つのパッケージとして読み込まれる結合です。 バッジのカウントは、割り当てのステータスがオフになります。 e-sign ステータス: 受信者 ステータスは VOIDED や EXPIRED はありません。 受信行に触れることはありません。 承認のみのパッケージには、まったく封筒はありません.

君の宇宙は待ってる

数分で無料で開始できます。準備ができたらいつでも製品を追加できます。移行も新しいログインも不要です。

クレジットカード不要