チェンジログ
何が新しいの?
プラットフォームのすべての改良 それが出荷される
· SecurityService
Add theme provisioning — NATS publisher, provision-theme endpoint, logo upload
· ConversionService
Add image resize and favicon generation endpoints
· InitializerService
Add migration runner for logo_full_ext column on orgs
· kamo-shared-library
組織にロゴFullExt フィールドを追加します。リストオブジェクトを MinIOStorageService に追加します
· kamo-internal
Emoji アイコンをソリッド SVG アイコンに置き換えてウィザードのステップパーを作成します
· kamo-shared-library
組織リポジトリにfindByBranchTypeID のクエリを追加
セキュリティサービスの新しい/branch-types/{id}/usagesエンドポイントをサポート ブランチタイプが削除前にアクティブな子のorgsを持っているかどうかを確認するため.
· SecurityService
Add GET /branch-types/creatable and /{id}/usages endpoints
/creatable returns branch types filtered by the caller's creator-type (OWNERS/TEAM_MEMBERS/MEMBERS) via AppliedModelEnforcementService. /{id}/usages returns the count and summary of orgs created under a given branch type, used by the frontend to block hard deletion.
· kamo-internal
アクティブなorgの使用に対するブランチタイプの削除を監視する
ブランチタイプのチップを削除する前に、フロントエンドは呼び出します メニュー どの組織が存在しても、 それらをリストし、管理者を指示する情報ダイアログ 削除の代わりにタイプを無効にします.
· kamo-internal
NavTop のライブサポートチケットバッジ — SupportCountContext は STOMP 経由で NATS を購読します。バッジは保留カウントです
· MediaService
Live pending support ticket count via NATS — notify org owner on new tickets, add pending-count REST endpoint
· kamo-shared-library
SupportAgentNotificationDTOに保留数フィールドを追加し、サポートTicketRepositoryにクエリをカウント
· kamo-internal
ドメイン名フィールドをorg作成ウィザードに追加
必要なドメインフィールドを、自動 www で Basics ステップに追加します。 ストリッピング。 API のペイロードに含まれている検証済みで、レビュー手順で示します.
· kamo-marketing
API変更コールアウトをkamo-api-referenceページに追加
/kamo-api-reference でのみ表示され、ユーザーは API 変更を提出するよう促します。 /request 経由でのリクエストや /contact 経由でのリクエスト.
· SecurityService
Add GET /branch-types/creatable endpoint with creator-type filtering
Returns only the branch types the calling member is permitted to create a child org under, based on their OWNERS/TEAM_MEMBERS/MEMBERS classification against the current org's applied security models. Mirrors the exact same getBranchTypesCreatableBy enforcement the POST /org endpoint applies at submission time, so the frontend can pre-filter the pick list and avoid showing options that would produce a 403. Response includes allowedMemberAgeRanges and allowedTeamMemberAgeRanges from each branch type's security model so the UI can gate AgeReqType options in the same request, without a second round-trip.
· kamo-internal
組織変更 型 wizard ステップ with ブランチタイプ/Securityモデル選択
- OrgTypeStep(組織変更) タイプ+構成のドロップダウン)と BranchTypeStep はフェッチ ******************** — 新しいエンドポイントは、呼び出し元が作成できるブランチタイプのみを返します。 OWNERS/TEAM MEMBERS/MEMBERS/MEMBERS によるフィルタリング orgのセキュリティモデルに対する分類 - ペイロードから組織タイプを完全に削除します。 configType は現在 セキュリティモデルの許可から自動生成されたMemberAgeRanges (KIDS ONLY → KIDS CLUB、ティーン・レンジ → CLUB、その他 - AgeRestrictionsStep では、EarageReqType のオプションをフィルタリングできるようになりました。 選択されたセキュリティモデルで許可され、ゲート時にバナーが アクティブ; null 年齢 (未指定) は、バックエンドごとに安全な no op を保存します。 - 成功した作成が /setup/dns?orgId=&orgName= にリダイレクトした後 CURRENT org (新しい子 org ではなく) — DNS は前に設定する必要があります 新しいorgはアクセス可能です メニュー Next.jsプロキシルート - ReviewStep はブランチ名 + 許可された年齢のスコープではなく、 org型 / config型バッジ
· kamo-internal
/network は、メンバータイプ + 右
- BranchSetupManager:新しい「このモデルの下で子供オラグを作成することができます」 3つのトグル付きのカード(メンバー/チームメンバー/所有者)。 バリュー mapBackendModel と save flows (子モデル) による往復 +マスターモデル。 空の state のデフォルトは 3 つから false までです。 管理者がそれらをオプトアウトするまで、誰にも作成を提供していません。 - /networkページ:フェッチ******************** マウントし、すべての "新しい組織を作成する" 手頃な価格を隠す (ヘッダー) サーバーがなければボタン、空のステート ボタン、最下のカード) 決定的にcanCreateChildOrg=trueを返す。 チェックイン中 フライト(null)では、空室状況が隠されているため、フラッシュはしません。 見ないメンバーに。 メニュー proxy ルート転送 SecurityService の新しいエンドポイント.
· SecurityService
Gate /network child-org creation by right + member-type applicability
Wires the applied-security-model child-org creation gate end-to-end: - SecurityModelController + MasterModelController round-trip the three new apply-to flags (appliesToMembers / appliesToTeamMembers / appliesToOwners) through create and update payloads. - New GET **************** resolves — for the caller's session — the creator-type bucket they fall into, whether their role carries CREATE_CHILD_ORG, the list of branch types available to them, and a combined canCreateChildOrg boolean the /network page uses to hide the create affordance when false. - **************** now rejects with 403 when the caller lacks CREATE_CHILD_ORG or picks a branch type that isn't among those their creator-type is offered — defense in depth against a client that bypasses the UI gate.
· kamo-shared-library
会員型ゲート+ CREATE CHILD ORG は、お子様の制作に適しています
会員型で/networkの子組織を作成するためにデータレイヤーを追加します。 - 新規 CREATE CHILD ORG をロールレイトタイプ (id 131) で右上に移動します。 - ChildOrgSecurityModel の 3 つの新しいブールカラム: applicationToMembers/applicationToTeamMembers/applicationToOwners チームメンバー 真の場合、モデルのブランチタイプは、そのメンバータイプのバケットに提供されます。 に /network. 偽りの3つすべてを持つモデルは、創造物として解釈されることはありません 誰にでもオプション — 既存の orgs のみを管理します。 - ChildOrgSecurityModelService は、13 arg create/update のオーバーロードを付与します。 新しいフラグを受け付けます。レガシー10argの署名が引き受けます。 - ChildOrgSecurityModelDTOは3つのフラグを往復します。 - AppliedModelEnforcementService は、すべての呼び出し主のゲートロジックを公開します。 株式: enum ChildOrgCreatorType { MEMBERS, TEAM MEMBERS, OWNERS チームメンバー チームメンバー getBranchTypesCreatableBy(org、createType) → ブランチタイプのリスト そのクリエイタータイプに適用するモデルに属し、 少なくとも1つの分岐タイプ。 ******************** クリエイタータイプ → ボオランの述語. クリエイター型分類:OWNERS = チームメンバー 組織図 owner=true, TEAM MEMBERS = 他のチームメンバー, MEMBERS = みんな、 右チェック(CREATE CHILD ORG)は、故意に焼却されない これらのヘルパーに — 呼び出し主は両方のチェックを組み合わせて、ヘルパーもできます バック読み取り専用クエリ.
· InitializerService
Master model applies to all three member types on init
provisionMaxedOutMasterModel now sets appliesToMembers, appliesToTeamMembers, and appliesToOwners all true so every member type sees the master model's branch types as creation options on /network. The Administrator template continues to GRANT every RoleRightType including the new CREATE_CHILD_ORG right (id 131) by virtue of iterating RoleRightType.values().
· kamo-marketing
ミリ秒を追加してカウントダウンを立ち上げ、50msごとにチェック
· kamo-marketing
ライブカウントダウンで静的な起動日を2PM PST 4月 2026に置き換えます
XD XXXM XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX クライアントの水分補給まで、ターゲットが到達したときに「今」を表示します.
· InitializerService
Administrator default role template starts with all rights GRANTED
provisionMaxedOutMasterModel now populates the Administrator template with every RoleRightType set to GRANTED. The other three templates (Team Member, Member, DEFAULT) still materialize with zero rights (NOT_SPECIFIED for everything), matching the intended blank baseline for non-admin roles. Why GRANTED (not FORCE_GRANTED): at child-org creation time ChildOrgTemplateSeedingService copies non-force template values into the new org's OrgRoleRight rows, so a GRANTED admin template gives every new child org a ready-to-use admin role with full permissions that the owner can still edit. FORCE_GRANTED would lock rights at runtime and hide them from the security-roles editor, which we don't want for the admin template baseline.
· InitializerService
Provision a maxed-out master security model for KamoCRM on init
DataLoader now creates and assigns a master ChildOrgSecurityModel to KamoCRM immediately after the org is created, with every setting maxed out to the most permissive / force-enabled value: - allowOwnersViewOtherOrgs / allowOwnersPrivateOrgs / allowSubChildOrgs = true - identityProviderSetting = ENABLED - teamMemberPayFeesSetting = FORCE_ENABLE - allowedMemberAgeRanges / allowedTeamMemberAgeRanges = every AgeReqType - appConfigs = every non-deprecated ServiceType at FORCE_ENABLED, with CRM's allowedCommerceTypes containing every CommerceType - Organization.masterModelID set to the new model The four default role templates (Administrator / Team Member / Member / DEFAULT) are materialized with zero rights so the UI renders tabs for each — every right stays NOT_SPECIFIED at runtime, the intended blank baseline. Admins can edit specific force rules later via the branch-types tab. Also bumps kamo-shared-library to 1.5.0 so the new ChildOrgSecurityModelService / AppConfigService / DefaultRoleService and related types resolve at compile time.
· kamo-internal
特徴Manager は適用されたモデル力-enabled 州を名誉を託します
FeatureController から新しい modelAvailability + ロックされたフィールドを受け入れる そしてUIでそれらを表面します: - モデルが FORCE ENABLED がトグルをレンダリングする機能 状態上, 無効, 説明ツールチップ付き — 管理者は見ることができます しかし、それらを反転することはできません。 - modelForced 機能の短絡を、むしろ明確なトーストとトグルリング バックエンドの 403 からの一般的なエラーよりも。 - NOT AVAILABLE はクライアント(フィルタリングされたサーバー側)に達しません。 そのため、UIリストは既にゲートされたビューです.
· SecurityService
Applied-model is the read-time source of truth for feature availability
Closes the "stale DB leaks a disabled feature" gap by gating every surface that touches OrgFeature / ServiceType through the applied security model. - **************** (the primary feeder of the frontend OrgContext): replaces the raw features serialization with **************** org.getFeatures()). The auto- provisioning loop now also skips apps the model marks NOT_AVAILABLE so we never create DB rows for blocked apps. - FeatureController.list: returns each feature with modelAvailability + locked metadata. NOT_AVAILABLE rows are filtered out, FORCE_ENABLED rows are reported as enabled=true + locked=true regardless of their DB state. The available list is also filtered down to apps the model permits. - New AppAvailabilityInterceptor + WebMvcConfig: installs a HandlerInterceptor on every service-scoped URL prefix (/api/security/pos, /api/security/commerce-markets, /api/security/leads*, /api/security/lead- imports, /api/security/lead-markets, /api/security/lead-vendors, **************** **************** **************** Each request is matched to a ServiceType, resolved against the caller's applied model, and rejected with HTTP 403 if the app is effectively off. This is the final line of defense: even with stale client state, a forgotten controller guard, or a direct API call, a blocked app returns 403. Net effect: the applied security model now wins at read time everywhere the org's features or apps are exposed — navigation, home page, settings slide-out, FeaturesManager, per-service endpoints. When the admin flips CRM to NOT_AVAILABLE on the model, the CRM UI disappears from the frontend and CRM endpoints start 403'ing — regardless of whether the DB still has OrgFeature.isActive=true for CRM.
· kamo-shared-library
応用モデル読込み時間gatingのための有効なfeatureの解決装置
適用されるセキュリティモデルを最終的なものにするリードタイムゲートを追加します。 機能の可用性のための真実のソース, ので、DBの状態をStaleは漏れません 無効な機能と不可抗力機能は常に表示 DBが巻き込まれていない場合でも。 AppliedModelEnforcementService の新しいメソッド: - computeAvailabilitiesMap(org) — すべてのServiceTypeの1パス解像度 単一のルックアップでorgの可用性。 バッチプリミティブとしてのサーブ 他の新しいメソッドはビルドします。 - isAppEffectivelyEnabled(org、serviceType、機能) — 正式な "is このアプリをオンにします。 コアサービスは常にオン、非推奨、常にオフ FORCE ENABLED 常にオン、NOT AVAILABLE 常にオフ; OPTIONAL * defers へ OrgFeature 行の isActive 状態。 -******************** の機能 — Set<ServiceType> "すべての効果的なアプリ"をセットとして必要とする呼び出し者のための仲間。 - computeEffectiveFeatures(org, feature) — 新鮮なArrayListを返す OrgFeature はゲートを通した行: NOT AVAILABLE は、 FORCE ENABLEDは、アクティブに強制される(無効なDB行でも)、および FORCE ENABLED は、DB 行がなくても、一時的な行で表現されていないアプリです。 (組織スコープ、主張しない) Callers がクライアントに org の機能をシリアライズできるようになりました。 computeEffective 生のコレクションを読むのではなく、 frontend は、デフォルトで application-model-gated ビューを参照します.
· kamo-internal
Per-assocType docs 設定タブを doc タイプで追加し、注文を積み重ね、パネルの設定
ComingSoonTab を /settings/features/docs にフル設定インターフェイスに置き換えます。 - 概要タブ+ ImageAssocType(アカウント、サービスアプリケーション、サービス注文、コール録音、マイドキュメント、ミート録画、システムワイド)ごとの1タブ - 各assocTypeタブには3つのサブタブがあります:構成(フォルダ/ドキュメントタイプ機能トグル)、Docタイプ(フルCRUD)、Stacking Order(ビジュアルパイプラインドローダ付きCRUD) - すべての画像設定エンドポイントのNext.js APIプロキシルート - AssocConfigPanel、DocTypesManager、StackingOrdersManager、StackingOrderDrawer、AssocTypeSettingsコンポーネント
· DocsService
Add ImagingSettingsController with doc type, stacking order, and assoc config CRUD
· kamo-shared-library
ImgAssocConfig 組織、リポジトリ、およびソート順を ImgStacking に追加する オーダードット
· InitializerService
Add FEATURE_REQUESTS to Support category and all plan-feature mappings
Free: Community vote, Starter: Vote & request, Business: Priority requests, Enterprise: Custom dev included
