Changelog
Ce qui est nouveau.
Chaque amélioration apportée à la plateforme, à mesure qu'elle est livrée.
· SecurityService
Ajouter la provisionnement de thèmes - Éditeur NATS, point d'extrémité de fourniture-thème, téléchargement de logo
· ConversionService
Ajouter des critères d'évaluation de la redimensionner et de la génération de favicon
· InitializerService
Ajouter un glaqueur de migration pour logo-full-ext column on orgs
· kamo-shared-library
Ajouter le logoFullExt champ à l'entité de l'organisation; ajouter listeObjects à MinIOStorageService
· kamo-internal
Remplacer les icônes emoji par des icônes SVG solides sur le créateur d'ordinateur à pas
· kamo-shared-library
Ajouter findBranchTypeEID requête dérivée à OrganizationRepository
Soutient le nouveau critère d'évaluation / sous-types/-id/-sid-/usages dans SecurityService pour vérifier si un type de branche a des orgs d'enfants actifs avant la suppression.
· SecurityService
Ajouter GET/types de branche/créable et /-id/série d'utilisation
/ types de branche de retours créables filtrés par le créateur de l'appelant (OWNERS/TEAM-MEMBERS/MEMBERS) via AppliedModelEnforcementService. /-id-/usages renvoie le dénombrement et le résumé des orges créés sous un un type de branche donné, utilisé par le frontend pour bloquer la suppression dure.
· kamo-internal
Suppression de type branche de garde contre les usages d'orges actifs
Avant de supprimer une puce de type branche, le frontend appelle maintenant Si des orgs existent, il montre un dialogue d'information les énumérant et ordonne à l'administrateur de désactiver le type au lieu de le supprimer.
· kamo-internal
Insigne de billet d'assistance en direct sur NavTop et SupportCountContext s'abonne à NATS via STOMP, le badge montre en attente le nombre
· MediaService
Live pending support ticket count via NATS — notify org owner on new tickets, add pending-count REST endpoint
· kamo-shared-library
Ajouter le champ de comptage en attente à SupportAgentNotificationDTO et la requête de comptage à SupportTicketRepository
· kamo-internal
Ajouter un champ de nom de domaine à l'assistant de création d'une orge
Ajoute un champ de domaine requis à l'étape Basics avec www. stripping automatique. Validé, inclus dans la charge utile API, et montré dans l'étape de révision.
· kamo-marketing
Ajouter l'appel à la modification de l'API à la page kamo-api-reference
Montré uniquement sur /kamo-api-reference, invite les utilisateurs à soumettre un changement d'API demandes par /demande ou contact par /contact.
· SecurityService
Ajouter GET/types de branche/critère créatable avec filtrage de type créateur
Retourne uniquement les types de branche que le membre appelant est autorisé à créer un Ensemble d'enfants sous, sur la base de leur classification de PROPRIÉTAIRES/ÉMIEMBRES/MEMBRES contre les modèles de sécurité appliqués de l'organisation actuelle. Les miroirs exactement les mêmes getBranchTypesCretablePar application du critère d'évaluation POST /org s'applique à temps de soumission, de sorte que le frontend peut pré-filtrer la liste de sélection et éviter montrant des options qui produiraient un 403. La réponse comprend les gammes autorisées de l'AgeAge et les gammes autorisées du modèle de sécurité de chaque type de branche afin que l'interface utilisateur puisse gate AgeReqType les options dans la même demande, sans deuxième aller-retour.
· kamo-internal
Remplacer OrganizationType wizard step with branchType/SecurityModel selection
- Remplacer OrgTypeStep (OrganisationType et configuration) par BranchTypeStep qui fâtse - le le nouveau critère d'évaluation ne renvoie que les types de branche que l'appelant est autorisé à créer un enfant en charge sous, filtré par son OWNERS/ÉMINU-MEMBRES/MEMBRES Classification par rapport aux modèles de sécurité appliqués de l'organisation - Supprimer OrganizationType de la charge utile entièrement; configType est maintenant Dérivé automatiquement du modèle de sécurité autorisé MemberAgeRanges (KIDS-ONLY - KIDS-CLUB, teen-range - CLUB, sinon ENTREPRISE) - AgeRestrictionsStep maintenant filtres disponibles AgeReqType Options à celles permis par le modèle de sécurité sélectionné, avec une bannière lorsque le port est actif; âge nul (non spécifié) reste un produit sans émission par backend - Après la création réussie rediriger vers /setup/dns?orgId-orgName de l'organisation CURRENT (et non l'orgg de nouveau enfant) et le DNS doivent être configurés avant la nouvelle genre est accessible - Ajouter la route par procuration suivante.js - ReviewStep indique le nom du type de branche et la portée de l'âge autorisée au lieu de vie badges de type org/congestion
· kamo-internal
/ la capacité de création de réseau est fermée par le type de membre
- BranchSetupManager: nouveau "Qui peut créer des organisations d'enfants sous ce modèle" Carte à trois bascules (membres/membres de l'équipe/propriétaires). Valeurs Voyage aller-retour à la carteBackendModel et les deux flux de sauvegarde (modèle enfant) - modèle maître). L'état vide défaut tous les trois à faux - un modèle n'offre la création à personne jusqu'à ce que l'administrateur les opt. - /page de réseau: fetches Monter et cacher chaque « Créer une nouvelle organisation » (en en-tête) bouton, bouton de l'état vide, carte inférieure) à moins que le serveur ne retours définitifs canCreateChildOrg-true. Alors que le contrôle est en vol (noyau) la prime reste cachée afin que nous ne le clignons jamais à un membre qui ne devrait pas le voir. - Nouvelles voies de transit et indirectes jusqu'au nouveau point d'extrémité de SecurityService.
· SecurityService
Création de porte/réseau en or d'enfants par droit et applicabilité de type membre
Fil de fin de ligne de départ de la création enfant-modèle de sécurité appliquée: - SecurityModelContrôleur et MasterModelContrôleur aller-retour dans les trois nouveaux appliquer aux drapeaux (appliesToMembers / appliesToTeamMembers / applyToToOwners) par la création et la mise à jour des charges utiles. - Nouveau GET - se décide - pour le la session de l'appelant - le seau de type créateur dans lequel ils tombent, si leur le rôle est associé à CREATE-CHILD-ORG, la liste des types de succursales dont ils disposent, et un canreCreateChildOrg booléen utilisé sur la page /network pour se cacher la création de l'aléance quand elle est fausse. - est maintenant rejeté avec 403 quand le l'appelant manque de CREATE-CHILD-ORG ou choisit un type de branche qui n'est pas parmi Ceux de leur type créateur sont offerts - la défense en profondeur contre un client qui contourne la porte de l'UI.
· kamo-shared-library
Porte de type membre - CREATE-CHILD-ORG droite pour la création d'or enfants
Ajout la couche de données pour la création d'un portage/réseau par type d'enfant de réseau: - Nouveaux CREATE-CHILD-ORG de droite sur le thème "RctorType" (id 131). - Trois nouvelles colonnes booléennes sur ChildOrgSecurityModel : Appartiers à des membres/s'apposant à l'ÉquipemMembres / s'applique Lorsque c'est vrai, les types de branche du modèle sont proposés à ce seau de type membre sur/réseau. Un modèle avec les trois faux n'est jamais apparu comme une création l'option à qui que ce soit - elle ne régit que les questions existantes. ChildOrgSecurityModelService gagne 13 tranches de coûts de création/mise à jour de 13 charges accepter les nouveaux drapeaux; les signatures héritées de 10 tranches de 10 degrés sont déléguées. - ChildOrgSecurityModelDTO contourne les trois drapeaux. - AppliedModelEnforcementService expose la logique de la porte que chaque appelant parts: Enum ChildOrgCreatorType et MEMBRES, TEAM-MEMBRES, PROPRIÉTAIRES getBranchTypesCretableBy(org, creatorType) - la liste des types de branches qui appartiennent à des modèles qui s'appliquent à ce type de créateur et qui ont à au moins un type de branche. CréateurType) - prédicat booléen. Classification de type créateur: PROPRIÉTAIRES et membres d'équipe avec is OrganisationOwner-true, TEAM-MEMBERS et autres membres d'équipe, MEMBRES Tout le monde. Le contrôle de droite (CREATE-CHILD-ORG) n'est PAS cuit intentionnellement dans ces assistants - les appelants combinent les deux contrôles afin que l'assistant puisse également renvoie à des questions en lecture seule.
· InitializerService
Le modèle principal s'applique aux trois types de membres sur init
provisionMaxedOutMasterModel sets désormais s'applique aux membres, s'applique à ToTeramMembers, et s'appliqueToToWwners tout est vrai de chaque type de membre voit le modèle maître types de succursales en tant qu'options de création sur/réseau. Modèle d'administrateur continue à GRANT chaque type de rôle, y compris le nouveau CREATE-CHILD-ORG droit (id 131) en vertu de l'itération de RoleRightType.values().
· kamo-marketing
Ajouter des millisecondes au compte à rebours de lancement, cocher toutes les 50 ms
· kamo-marketing
Remplacer la date de lancement statique par le compte à rebours en direct à 2 heures PST Apr 20 2026
Coeurs toutes les secondes montrant Xd XXh XXm XXs; retombe à la date statique jusqu'à ce que le client s'hydrate, montre "Maintenant" quand la cible est atteinte.
· InitializerService
Le modèle de rôle par défaut de l'administrateur commence par tous les droits
provisionMaxedOutMasterModel remplit désormais le modèle de l'administrateur avec chaque type de rôle à stratagème. Les trois autres modèles (membre de l'équipe, Membre de DEFAULT) se matérialise toujours avec zéro droit (NOT-SPECIFIED pour tout), en faisant correspondre la ligne de base en blanc prévue pour les rôles non adminis. Pourquoi GRANDE (non FORCE-GRANT) : au moment de la création d'enfantsorg ChildOrgTemplateSeedingService copie les valeurs de modèle de non-force dans le nouveau modèle OrgRoleRight rows, donc un modèle d'administration GANDTED donne à chaque nouvel enfant ug un rôle d'administrateur prêt à l'emploi avec des autorisations complètes que le propriétaire peut encore éditer. FORCE-GRANTED verrouillerait les droits à l'heure des opérations et les dissimulerait de la éditeur de forces de sécurité, ce que nous ne voulons pas pour la base de base du modèle d'administration.
· InitializerService
Fournir un modèle de sécurité principal maxed-out pour KamoCRM sur init
DataLoader crée et affecte désormais un maître ChildOrgSecurityModel à KamoCRM immédiatement après la création de l'orge, avec chaque réglage max. à la valeur la plus permissive/à force: - permisOwnersViewOtherOrgs / allowOwnersPrivateOrgs / allowSubChildOrgs - true - IdentifierProviderSetting - ENABLED - équipeMembrePayFeesSetting et FORCE-ENABLE - autorisés MemberAgeRanges / allowedTeamMemberAgeRanges et chaque AgeReqType - appConfigs - chaque type de service non déprécié à FORCE-ENABLED, avec CRM'SimatiserTypes contenant chaque type de commerce - Organisation.masterModelID mis au nouveau modèle Les quatre modèles de rôle par défaut (administrateur/membre de l'équipe / membre / DEFAULT) sont matérialisés avec des droits nuls de sorte que l'UI rende des onglets pour chaque droit reste non-SPECIFI au moment de l'exécution, le blanc prévu valeur initiale. Les administrateurs peuvent modifier des règles de force spécifiques plus tard via les types de branchement onglet. bumps également kamo-shared-library à 1.5.0 donc le nouveau ChildOrgSecurityModelService / AppConfigService / DefaultRoleService et les types associés se résolvent au moment de la compilation.
· kamo-internal
CaractéristiquesManager honore l'état de force du modèle appliqué
Accepte le nouveau modèleAvailability et les champs verrouillés de FeatureController et les fait surface dans l'UI: - Caractéristiques dont le modèleDisponibilité est FORCE-ENABLED l'état, désactivé, avec une infobulle explicative et les administrateurs peuvent voir Ils sont en train de s'en aller, mais ils ne peuvent pas les renverser. - Todeling a modelForced dispose de courts-circuits avec un toast clair plutôt que plutôt qu'une erreur générique du backend 403. - Les fonctionnalités NEUVES PAS DISPONIBLES n'atteignent jamais le client (côté serveur filtré) donc la liste de l'UI est déjà la vue fermée.
· SecurityService
Le modèle appliqué est la source de vérité en lecture-temps pour la disponibilité des caractéristiques
Ferme l'intervalle "stale DB fuit une caractéristique désactivée" en portant chaque surface qui touche OrgFeature / ServiceType à travers le modèle de sécurité appliqué. (l'alimenteur primaire du frontal) OrgContext): remplace les caractéristiques brutes de la sérialisation par org.getFeatures()). L'auto- La boucle de provisionnement saute maintenant aussi apps le modèle ne brevete pas Nous ne créons jamais de lignes DB pour les applications bloquées. - FeatureController.list: retourne chaque fonctionnalité avec le modèleDisponibilité métadonnées verrouillées. Les lignes NON DISPONIBLES sont filtrées, lignes FORCE-ENABLED sont signalés comme activés - vrais - verrouillés - vrais quel que soit leur état DB. La liste disponible est également filtrée en applications que le modèle permet. - Nouvelle AppAvailabilityInterceptor et WebMvcConfig: installe un HandlerInterceptor sur chaque préfixe URL à portée de service (/api/security/pos, /api/sécurité/commerce-marchés, /api/sécurité/chefs-, /api/sécurité/lead- importations, /api/sécurité/marchés principaux, /api/sécurité/fournisseurs, :: Chaque demande est adaptée à un ServiceType, résolu par rapport au modèle appliqué de l'appelant, et rejeté avec HTTP 403 si l'application est effectivement éteinte. C'est la dernière ligne de défense: même avec un état client périmé, un contrôleur oublié, ou un appel API direct, une application bloquée retourne 403. Effet net: le modèle de sécurité appliqué gagne maintenant à l'heure de lecture partout les fonctionnalités ou les applications de l'org sont exposées - navigation, page d'accueil, paramètres Critères de décapage, FeaturesManager, par service. Quand l'administrateur bascule CRM à NON DISPONIBLE sur le modèle, l'UI CRM disparaît du frontend et les critères d'évaluation du CRM commencent 403's'''ing, que la DB ait encore ou non OrgFeature.isActive-vrai pour CRM.
· kamo-shared-library
Résolveur de caractéristiques efficace pour le portage en lecture-temps du modèle appliqué
Ajoute la porte-temps en lecture qui fait du modèle de sécurité appliqué le modèle de sécurité final source de vérité pour la disponibilité des caractéristiques, donc l'état DB raréfié ne peut pas fuir a Une fonction désactivée et une caractéristique activée par la force est toujours visible même quand la DB n'a pas rattrapé. Nouvelles méthodes de service d'application de l'application: - calculAvailabilitiesMap(org) - résolution à un passage unique de chaque type de service disponibilité pour une gisure en une seule consultation. Sert la primitive du lot les autres nouvelles méthodes s'appuient. - isAppEnableively (org, serviceType, caractéristiques) - le canonique "est vérifier cette application sur ". Les services de base sont toujours, dépréciés toujours, FORCE-ENABLET toujours, NON DISPONIBLE (p. . . . . . . . . . . . . . . . . . . l'état actif de la ligne OrgFeature. - Caractéristiques) - l'ensemble de services compagnon pour les appelants qui ont besoin de "toutes les applications effectivement en place" comme ensemble. - calculEffectiveFeatures (org, caractéristiques) et retourne une nouvelle liste d'enregistrement OrgFeature lignes projetées à travers la porte: NON DISPONIBLE Largué, FORCE-ENABLED forcé à active (même sur les rangs DB handicapés), et APPS FORCE-ENABLED sans ligne DB mais représentées par des lignes transitoires (l'organisation a été portée, n'a jamais persisté). Les appelants sérialisant les fonctionnalités d'une organisation aux clients Caractéristiques de calculEffective plutôt que de lire la collection brute, de sorte que frontend voit la vue appliquée-modèle-réglée par défaut.
· kamo-internal
Ajouter des onglets de réglages de docs par assocec avec des types de doc, des ordres de gerbage et des panneaux de configuration
Remplace ComingSoonTab sur /settings/spectals/docs par une interface de réglages complète: - Onglet d'aperçu général et un onglet par ImageAssocType (Compte, Service Application, Commande de service, Enregistrement d'appel, Mes documents, Enregistrement de la remise en forme, Largeur du système) - Chaque onglet assocType comporte 3 sous-onglets: Configuration (bassichoir/code de type panneau), Doc Types (plein CRUD), Commandes d'empilement (CRUD avec tiroir visuel de pipeline) - Voies de proxy de l'API de Next.js pour tous les critères d'évaluation des paramètres d'imagerie AssocConfigPanel, DocTypesManager, empilementOrdersManager, Pièceaux de gisement, composants AssocTypeSettings
· DocsService
Ajouter ImagingSettingsContrôleur avec type doc, ordre d'empilement, et assoc config CRUD
· kamo-shared-library
Ajouter ImgAssocConfig entité, référentiel et triOrder à ImgStackingOrderDt
· InitializerService
Ajouter FEATURE-REQUESTS à la catégorie d'appui et toutes les cartographies de plan-carratures
Libre: Vote communautaire, Démarreur: Vote et demande, Entreprises: Demandes prioritaires, Entreprise: Custom dev inclus

Votre univers vous attend.
Commencez gratuitement en quelques minutes. Ajoutez des produits quand vous êtes prêt. Pas de migration, pas de nouvelles connexions.
Gratuit pour toujours — aucune carte de crédit requise