Changelog
Was ist neu?
Jede Verbesserung an der Plattform, wie sie geliefert wird.
· SecurityService
Theme-Bestimmung hinzufügen . NATS Publisher, Bereitstellung-Thema-Endpunkt, Logo-Upload
· ConversionService
Hinzufügen von Bild-Größe und Favicon-Generation Endpoints
· InitializerService
Migrationsläufer für logo_full_ext Spalte auf orgs hinzufügen
· kamo-shared-library
LogoFullExt-Feld zur Organisation hinzufügen; listObjects zu MinIOStorageService hinzufügen
· kamo-internal
Ersetzen Sie Emoji-Symbole mit soliden SVG-Symbolen auf erstellen Assistent Stepper
· kamo-shared-library
findBegrungsabfrage mit der abgeleiteten Anfrage von findByBranchType zu OrganizationRepository hinzufügen
Unterstützt den neuen /branch-types/{id'/usages Endpoint in SecurityService um zu überprüfen, ob ein Zweigtyp aktives Kind hat, bevor das Lösen gespeisten werden.
· SecurityService
GET /branch-Typen/schöpfbar hinzufügen und /{id'/usages Endpunkte
/creatable Rückrufe Zweigtypen, gefiltert durch den Herstellertyp des Anrufers (OWNERS/TEAM_MEMBERS/MEMBERS) via AppliedModelEnforcementService. /{id"/usages gibt die Anzahl und Zusammenfassung der unter einem erstellten Orgs zurück gegebene Zweig-Typ, von der Frontend verwendet, um harte Löschung zu blockieren.
· kamo-internal
Wache Zweigtyp Löschung gegen aktive Org-Nutzungen
Vor dem Entfernen eines Zweigtyp-Chip, das Frontend ruft jetzt **************** Wenn irgendwelche orgs existieren, zeigt es ein Informationsdialog, der sie auflistet und den Admin anweist, den Typ deaktivieren, anstatt ihn zu löschen.
· kamo-internal
Live Support Ticket-Plassing auf NavTop - SupportCountContext abonniert NATS via STOMP, Abzeichen-Shows anhängig
· MediaService
Live pending support ticket count via NATS — notify org owner on new tickets, add pending-count REST endpoint
· kamo-shared-library
Zusätzliche Anzahl Feld zu SupportAgentNotificationDTO hinzufügen und Abfrage zu SupportTicketRepository zählen
· kamo-internal
Domain Name Feld zu org Erstellungsassistent hinzufügen
Fügt dem Basics-Sritt ein benötigtes Domain-Feld mit automatischem www.-Streifung hinzu. Validiert, in API-Nläge enthalten und im Review-Sritt gezeigt.
· kamo-marketing
API-Modifikations-Callout zu Kamo-api-Referenz-Seite hinzufügen
Gezeigt nur auf /kamo-api-Referenz, fordert Benutzer auf, API-Änderung einzureichen Anfragen über /Anfragen oder erreichen über /Kontakt.
· SecurityService
GET /branch-types/cretablen Endpunkt mit schöpfertypischer Filterung hinzufügen
Gibt nur die Zweige, die das aufrufende Mitglied einrichten darf Kind org unter, basierend auf deren OWNERS/TEAM_MEMBERS/MEMBERS/MEMBERS-Klassifizierung gegen die aktuellen org's angewandten Sicherheitsmodelle. Spiegel genau gleich getBranchTypesCreatableBy Durchsetzung der POST /org Endpunkt gilt bei Einreichungszeit, damit das Frontend die Auswahlliste vorfiltern und vermeiden kann zeigt Optionen, die eine 403 produzieren würde. Antwort beinhaltet erlaubtMemberAgeRanges und allowedTeamMitgliedAgeRanges von jedem Zweig Typ Sicherheitsmodell, so dass die Benutzeroberfläche kann Gate AgeReqType Optionen in der gleichen Anfrage, ohne eine zweite Hin-und Rückfahrt.
· kamo-internal
Ersetzen Sie den OrganizationType-Zeischlag mit branchType/SecurityModel-Auswahl
- OrgTypeStep (OrganizationType + Configuration Dropdowns) durch BranchTypeStep, der **************** holt neuer Endpunkt gibt nur Zweigtypen zurück, die der Anrufer erstellen darf ein Kind org unter, gefiltert durch ihre OWNERS/TEAM_MEMBERS/MEMBERS Klassifizierung gegen die angewandten Sicherheitsmodelle der Org - Entfernen Sie OrganizationType vollständig aus der Nutzlast; configType ist jetzt auto-abgeleitet von der Sicherheitsmodell erlaubt MitgliedschaftRanges (KIDS_ONLY - KIDS_CLUB, Teen-range - CLUB, anderes ENTERPRISE) - AgeRestrictionsStep filtert jetzt verfügbare AgeReqType-Optionen auf diese erlaubt durch das gewählte Sicherheitsmodell, mit einem Banner beim Gating aktiv; Nullalter (nicht angegeben) bleibt ein sicheres No-Op pro Backend - Nach erfolgreicher Erstellung zurückverweisen zu /setup/dns?orgId=&orgName= von die CURRENT org (nicht das neue Kind org) - DNS muss vor die neue org ist zugänglich - ************ hinzufügen Next.js Proxy Route - ReviewStep zeigt Zweigtyp Name + erlaubt Alterumfang statt alt org Typ / Konfiguration Typ Abzeichen
· kamo-internal
/Netzwerk schaffende Erm ungance ist nach Mitgliedstyp + rechts
- BranchSetupManager: Neues "Wer kann Kinder-Orgs unter diesem Modell erstellen" Karte mit drei Toggles (Mitglieder / Teammitglieder / Eigentümer). Werte Rundreise durch mapBackendModel und beide sparen fließt (Kindermodell + Mastermodell). Leerer Zustand standardmäßig alle drei zu false - ein Modell bietet niemandem die Erstellung an, bis der Admin sie einschaltet. - /Netzwerkseite: holt **************** mount und versteckt jede "Create New Organization" Bezahlung (Header Button, empty-state-Button, Bottom-Karte) es sei denn, der Server endgültig zurückgegeben kannCreateChildOrg=true. Während der Check ist im Flug (null) die Erschwinglichkeit bleibt versteckt, so dass wir nie blinken an ein Mitglied, das es nicht sehen sollte. - Neue ************ Proxy Route vorwärts bis zum neuen Endpunkt von SecurityService.
· SecurityService
Gate /network kind-org-Erstellung durch rechts + Member-Typ Anwendbarkeit
Wires die Anwendungs-Sicherheit-Modell Kind-Orgie-Kreation-Gate Ende-zu-Ende: - SecurityModelController + MasterModelController Hin- und Rückfahrt der drei neuen Anwendung-auf-Flagge (betrifft Mitglieder / applyToTeamMitglieder / applytoBesitzers) durch Erstellung und Aktualisierung von Nutzlasten. - Neue GET ************ löst für Caller-Sitzung - der Schöpfer-Typ Eimer sie fallen in, ob ihre Rolle trägt CREATE_CHILD_ORG, die Liste der Zweigtypen, die ihnen zur Verfügung stehen, und eine kombinierte canCreateChildOrg boolean die /network-Seite verwendet, um sich zu verstecken die Schaffung von Bezahlung, wenn falsch. - **************** lehnt jetzt mit 403 ab Caller fehlt CREATE_CHILD_ORG oder wählt einen Zweigtyp, der nicht unter die ihr Schöpfer-Typ angeboten wird - Verteidigung in der Tiefe gegen einen Kunden dass das UI-Gate umgeht.
· kamo-shared-library
Mitgliedstyp-Gate + CREATE_CHILD_ORG richtig für Kinder-Ort-Erstellung
Fügt die Datenschicht für gating /network child-org-Erstellung nach Mitgliedstyp hinzu: - Neu CREATE_CHILD_ORG rechts auf RoleRightType (id 131). - Drei neue boolesche Spalten über ChildOrgSecurityModel: applyToMembers / applyToTeamMembers / applyToOwners Wenn das stimmt, werden die Zweigtypen des Modells diesem Mitglieds-Typ-Eimer angeboten. auf /network. Ein Modell mit allen drei Falsch ist nie als Schöpfung aufgetaucht Option für jedermann - es regelt nur bestehende orgs. - ChildOrgSecurityModelService erhält 13-arg erstellen/update Überlastungen, die neuen Flaggen akzeptieren; die alten 10-arg-Signaturen delegieren sich durch. - ChildOrgSecurityModelDTO rund umrundet die drei Flaggen. - AppliedModelEnforcementService entlarvt die Gate-Logik, dass jeder Anrufer Aktien: enum ChildOrgCreatorType { MEMBERS, TEAM_MEMBERS, OWNERS getBranchTypesCreatableBy(org, creatorType) - die Liste der Zweigtypen die zu Modellen gehören, die für diesen Schöpfertyp gelten und haben bei mindestens ein Zweigtyp. ************ creatorType) - boolean predicate. Creator-Typ-Klassifizierung: OWNERS = Team-Mitglieder mit istOrganisationOwner=true, TEAM_MEMBERS = andere Teammitglieder, MEMBERS = alle anderen. Rechtsprüfung (CREATE_CHILD_ORG) wird absichtlich NICHT gebacken in diese Helfer - Anrufer kombinieren beide Kontrollen, so dass der Helfer auch zurück read-only Abfragen.
· InitializerService
Master-Modell gilt für alle drei Mitgliedstypen auf init
vorbestelltMaxedOutMasterModel gilt jetzt für Mitglieder, gilt fürTeammitglieder, und giltToOwner alle wahr, so dass jeder Mitgliedstyp sieht das Master-Modell Zweigtypen als Erstellungsoptionen auf /network. Die Vorlage des Administrators weiterhin alle RollenRightType einschließlich der neuen CREATE_CHILD_ORG rechts (id 131) durch iterierende RolleRightType.values().
· kamo-marketing
Fügen Sie Millisekunden zum Start Countdown, tick alle 50ms
· kamo-marketing
Ersetzen statische Starttermin mit Live-Countdown zu 2PM PST 20.2026
Zecken jede Sekunde zeigt Xd XXh XXm XXs; fällt zurück auf statisches Datum bis der Kunde Hydrate, zeigt "Jetzt", wenn Ziel erreicht wird.
· InitializerService
Administrator Standard-Rollenvorlage beginnt mit allen Rechten GRANTED
vorbehaltlichMaxedOutMasterModel pulsiert nun die Administrator-Vorlage mit jeder RoleRightType-Set auf GRANTED. Die anderen drei Vorlagen (Teammitglied, Mitglied, DEFAULT) materialisiert sich immer noch mit Null-Rechten (NOT_SPECIFIED für alles, passend zur vorgesehenen leeren Grundlinie für Nicht-Admin-Rollen. Warum GRANTED (nicht FORCE_GRANTED): bei Child-Orig-Erstellungszeit ChildOrgTemplateSeedingService kopiert nicht-force-Template-Werte in die neue org's OrgRoleRight Reihen, so dass eine GRANTED Admin-Vorlage jedes neue Kind gibt org eine funktionsfertige Admin-Rolle mit vollen Berechtigungen, die der Besitzer noch kann bearbeiten. FORCE_GRANTED würde Rechte bei der Laufzeit sperren und sie vor der Sicherheits-Rollen-Editor, die wir nicht für die Admin-Vorlage Basislinie wollen.
· InitializerService
Bereitstellung eines maxed-out Master-Sicherheitsmodells für KamoCRM auf init
DataLoader erstellt und weist nun ein Master ChildOrgSecurityModel zu KamoCRM unmittelbar nach der Erstellung der Org, mit jeder Einstellung maxed Aus auf den freizügigsten / Kraft-fähigen Wert: - allowOwnersViewOtherOrgs / allowOwnersPrivateOrgs / allowSubChildOrgs = true - identityProviderSetting = ENABLED - teamMemberPayFeesSetting = FORCE_ENABLE - erlaubtMemberAgeRanges / allowedTeamMitgliedAngeänder = jeder AgeReqType - appConfigs = jeder nicht-veralte ServiceType bei FORCE_ENABLED, mit CRM's erlaubteCommerceTypes mit jedem CommerceType - Organisation.masterModelID auf das neue Modell eingestellt Die vier Standard-Rollenvorlagen (Administrator / Teammitglied / Mitglied / DEFAULT) sind mit Null-Rechten materialisiert, so dass die UI macht Tabs für jeder - jedes Recht bleibt NOT_SPECIFIED zur Laufzeit, dem vorgesehenen Leerzeichen Basislinie. Admins können bestimmte Kraftregeln später über die Zweigtypen bearbeiten tab. Auch Beulen Kamo-Shared-Bibliothek auf 1.5.0 so die neue ChildOrgSecurityModelService / AppConfigService / DefaultRoleService und verwandte Typen lösen sich beim Kompilieren auf.
· kamo-internal
FeaturesManager ehrt angewandtes Modell force-fähigen Zustand
Akzeptiert das neue ModellAvailability + gesperrte Felder von FeatureController und stellt sie in der Benutzeroberfläche auf: - Features, deren ModellVerfügbarkeit ist FORCE_ENABLED machen das Einschalten die auf Zustand, deaktiviert, mit einem erklärenden Tooltip - Admins sehen können sie sind an, können sie aber nicht abklappen. - Ein modelForced Feature-Short-Circuuits mit klarem Toast statt als ein allgemeiner Fehler aus dem Backend 403. - NOT_AVAILABLE-Funktionen erreichen nie den Client (gefilterte Server-Seite) so ist die UI-Liste bereits die gated view.
· SecurityService
Applied-Modell ist die Lesezeit Quelle der Wahrheit für Feature-Verfügbarkeit
Schließt die "stale DB Leicht eine deaktivierte Funktion" Lücke durch Gating jede Oberfläche dass OrgFeature / ServiceType durch das angewandte Sicherheitsmodell berührt. - ************ (der Hauptzubringer des Frontends OrgContext): ersetzt die Rohfeatures Serialisierung mit ************ org.getFeatures()). Die Auto- Bereitstellungsschleife überspringt jetzt auch Apps die Modellmarken NOT_AVAILABLE so Wir erstellen nie DB-Reihen für blockierte Apps. - FeatureController.list: gibt jedes Feature mit modelVerfügbarkeit zurück + gesperrte Metadaten. NOT_AVAILABLE Zeilen werden herausgefiltert, FORCE_ENABLED Zeilen werden als aktiviert=true + gesperrt=true gemeldet, unabhängig von ihrem DB-Zustand. Die verfügbare Liste wird auch auf Apps heruntergefiltert, die das Modell erlaubt. - Neue AppAvailabilityInterceptor + WebMvcConfig: installiert eine HandlerInterceptor auf jedem service-scoped URL-Präfix (/api/security/pos, /api/security/commerce-markets, /api/security/leads*, /api/security/lead- Importe, /api/security/Lead-markets, /api/security/Lead-Viglings, **************************************** **************** Jede Anfrage ist auf eine ServiceType, gegen das angewandte Modell des Anrufers gelöst und abgelehnt mit HTTP 403, wenn die App effektiv ausgeschaltet ist. Dies ist die letzte Zeile von Verteidigung: auch mit abgestandenen Klientenzustand, einem vergessenen Kontrollposten oder eine blockierte App, die per Post zurück 403. Nettoeffekt: Das angewandte Sicherheitsmodell gewinnt jetzt überall bei der Lesezeit die Funktionen oder Apps der Org sind freigelegt - Navigation, Startseite, Einstellungen slide-out, FeaturesManager, pro Betrieb Endpunkte. Wenn der Admin umdreht CRM zu NOT_AVAILABLE auf dem Modell, die CRM-UI verschwindet vom Frontend und CRM-Endpunkte beginnen 403'ing - unabhängig davon, ob die DB noch OrgFeature.isActive=true für CRM.
· kamo-shared-library
Effektive-Feature-Resemiter für angewandte Modell Lesezeit-Gating
Fügt das Lese-Zeit-Gate hinzu, das das angewandte Sicherheitsmodell zum letzten macht Quelle der Wahrheit für Feature-Verfügbarkeit, so abgestandene DB-Zustand kann nicht undicht deaktiviert durch und eine kraftfähige Funktion ist immer sichtbar auch wenn die DB nicht aufgeholt hat. Neue Methoden auf AppliedModelEnforcementService: - computeAvailabilitiesMap(org) - One-Pass-Auflösung für jeden ServiceType Verfügbarkeit für eine Org in einer einzigen Suche. Dient als die Charge primitive die anderen neuen Methoden aufbauen. - isAppffectivelyEnabled(org, serviceType, features) - der kanonische "ist diese App on" überprüfen. Kernleistungen immer an, immer abgehoben, FORCE_ENABLED immer an, NOT_AVAILABLE immer off; OPTIONAL_* vertagt zu der isActive Zustand der OrgFeature Reihe. - ************-Features) - das Set<ServiceType Begleiter für Anrufer, die "alle effektiv auf Apps" als Set benötigen. - computeEffectiveFeatures(org, features) - gibt eine frische ArrayList von OrgFeature-Reihen durch das Tor projiziert: NOT_AVAILABLE fallen gelassen, FORCE_ENABLED zum Aktiven gezwungen (auch bei deaktivierten DB-Reihen) und FORCE_ENABLED Apps ohne DB-Reihe, die noch von transienten Zeilen dargestellt werden (organisatorisch - nie bestanden). Anrufer serialisieren die Funktionen eines Orgs an Clients jetzt durch berechnenEffectiveFeatures anstatt das Lesen der rohen Sammlung, so dass die frontend sieht die anwendbare Modell-gated Ansicht standardmäßig.
· kamo-internal
Fügen Sie pro-assocType-Doc-Einstellungen mit doc-Typen, Stacking-Aufträge und Konfigurations-Panels
Ersetzen Sie ComingSoonTab auf /settings/features/docs durch eine vollständige Einstellungsschnittstelle: - Übersichtskarte + ein Tab pro ImageAssocType (Account, Service Application, Service Order, Call Recording, My Docs, Meet Recording, System-Wide) - Jeder AssocType-Tab hat 3 Sub-Tabs: Konfiguration (folder/docType-Funktions-Tebel), Doc-Typen (voller CRUD), Stacking Orders (CRUD mit visueller Pipeline-Schiebestelle) - Next.js API Proxy-Routen für alle Bildeinstellungen Endpunkte - AssocConfigPanel, DocTypesManager, StackingOrdersManager, StackingOrderDrawer, AssocTypeSettings Komponenten
· DocsService
ImagingSettingsController mit doc type, Stacking Order und assoc config CRUD hinzufügen
· kamo-shared-library
ImgAssocConfig Entität, Repository und sortOrder to ImgStackingOrderDt hinzufügen
· InitializerService
FEATURE_REQUESTS zur Support-Kategorie und alle Plan-Feature-Mappings hinzufügen
Frei: Gemeinschaftsabstimmung, Starter: Abstimmung & Antrag, Business: Priority-Anfragen, Enterprise: Custom dev enthalten

Euer Universum wartet.
Fügen Sie Produkte hinzu, wann immer Sie möchten – keine Migration, keine neuen Anmeldungen.
Für immer kostenlos – keine Kreditkarte erforderlich