Mergi la conținut
KAMOUniverse

Jurnal de schimbări

Ce e nou.

Fiecare îmbunătățire a platformei, pe măsură ce se livrează.

  1. · SecurityService

    Add theme provisioning — NATS publisher, provision-theme endpoint, logo upload

  2. · ConversionService

    Add image resize and favicon generation endpoints

  3. · InitializerService

    Add migration runner for logo_full_ext column on orgs

  4. · kamo-shared-library

    Adăugaţi logoFullExt la entitatea Organizaţiei; adăugaţi listaObiective la MiniOStorageService

  5. · kamo-internal

    Înlocuiți icoane emoji cu icoane SVG solide pe crea stepper vrăjitor

  6. · kamo-shared-library

    Adaugă căutareBranchTypeID interogare derivată la OrganizationRepository

    Sprijină noile/tipurile de ramuri/{id}/utilizare în serviciul de securitate pentru a verifica dacă un tip de ramură are orgi active pentru copii înainte de ștergere.

  7. · 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.

  8. · kamo-internal

    Ștergere tip ramură de pază împotriva utilizării org active

    Înainte de a elimina un cip de tip ramură, frontend acum apeluri - Nu. Dacă există vreo orgi ea arată un dialog informativ care le enumeră și instruiește administratorul dezactivaţi tipul în loc să-l ştergeţi.

  9. · kamo-internal

    Suport live bilet insigna pe NavTop

  10. · MediaService

    Live pending support ticket count via NATS — notify org owner on new tickets, add pending-count REST endpoint

  11. · kamo-shared-library

    Adăugați câmpul de numărare în așteptare pentru a SupportAgentNotificationDTO și numără interogarea pentru SuportTicketRepository

  12. · kamo-internal

    Adaugă domeniu nume domeniu la magician creație org

    Adaugă un domeniu necesar la etapa de bază cu www. automat. Dezbracă-te. Validată, inclusă în încărcătura utilă API și prezentată în etapa de revizuire.

  13. · kamo-marketing

    Adaugă apelare modificare API la pagina de referință kamo-api

    Afișat numai pe /kamo-api-reference, motivează utilizatorii să depună modificarea API cereri prin /cereri sau acces prin /contact.

  14. · 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.

  15. · kamo-internal

    Înlocuiește organizația Pasul vrăjitorului de tip cu selecție ramuraType/SecurityModel

    - Înlocuieşte OrgTypeStep (Organizare Dropdowns tip + configurare) cu BranchTypeStep care aduce ***************** noul obiectiv returnează doar tipurile de sucursale pe care apelantul le poate crea un copil org sub, filtrat de către proprietarii lor / TEAM MINTE/MINTE clasificarea împotriva modelelor de securitate aplicate ale org - Elimină OrganizationType din sarcina utilă în întregime; configType este acum Auto-derivat din modelul de securitate permis membreAgeRanges (KIDS ONLY → KIDS CLUB, teen-range → CLUB, other enwise) - AgeRestrictionsStep filtrează acum opțiunile disponibile AgeReqType pentru cei permis de modelul de securitate selectat, cu un banner atunci când gating este activă; vârsta nulă (nespecificată) rămâne un nu-op sigur per suport - După redirecţionarea cu succes a creaţiei către /setup/dns?orgId=&orgName=of org-ul CURRENT (nu org-ul nou-copil) noua org este accesibilă - Adăugaţi *************** Traseul proxy Next.js - ReviewStep arată numele tipului de sucursală + domeniul de aplicare permis de vârstă în loc de vechi insigne tip org / config

  16. · kamo-internal

    /reţeaua de creare a disponibilităţii este de tip membru + dreapta

    - BranchSetupManager: nou "Cine poate crea orgii pentru copii sub acest model" card cu trei comutații (membri / membrii echipei / proprietari). Valori călătorie rotundă prin hartăÎnapoiModel și ambele fluxuri de salvare (model copil + model master). Starea goală implicit toate cele trei la fals un model Nu oferă creaţie nimănui până când adminul nu-i va alege. - / pagina de rețea: aduce *** *** *** *** *** *** pe montați și ascundeți fiecare "Creați noua organizație" de oportunitate (header buton, buton-stat liber, card de jos) cu excepția cazului în server Final returns can CreateChildOrg=true. În timp ce verificarea este în zbor (null) prețul rămâne ascuns astfel încât să nu-l flash unui membru care nu ar trebui să-l vadă. - Nou *************** ruta proxy forwards până la noul obiectiv al Serviciului de Securitate.

  17. · 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.

  18. · kamo-shared-library

    Poarta de tip membru + CREATE CHILD ORG drept pentru crearea de copii-org

    Adaugă stratul de date pentru gating/rețea de creare a copiilor-org după tipul de membru: - Noua CREATE CHILD ORG dreapta pe RoleRightType (id 131). - Trei noi coloane booleane pe ChildOrgSecurityModel: Aplicare pentru membri/aplicări pentru membri/aplicări pentru membri Atunci când este adevărat, tipurile de sucursale ale modelului sunt oferite găleții de tip membru pe / rețea. Un model cu toate cele trei false nu este niciodată la suprafață ca o creație opţiune pentru oricine - ChildOrgSecurityModelService câștigă 13-arg creează/actualizează suprasarcină care acceptă noile steaguri; semnăturile moștenite de 10 arg deleagă prin intermediul. - ChildOrgSecurityModelDTO se plimbă prin cele trei steaguri. - AplicatModelEnforcementService expune logica poarta pe care fiecare apelant acțiuni: enum ChildOrgCreatorType {Members, TEAM members, detailers ] → lista tipurilor de sucursale care aparțin modelelor care se aplică tipului de creator respectiv și care au la cel puțin un tip de ramură. ************* CreatorType) → boolean predicate. Clasificarea de tip Creator: Proprietari = membrii echipei cu isOrganizare Proprietar=adevărat, TEAM MINTE = alți membri ai echipei, membri = Toţi ceilalţi. Verificarea la dreapta (CREA CHILD ORG) nu este în mod intenționat coaptă în aceste ajutoare întrebări doar de citire din spate.

  19. · 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().

  20. · kamo-marketing

    Adăugați milisecunde pentru a lansa numărătoarea inversă, bifați fiecare 50ms

  21. · kamo-marketing

    Înlocuiți data de lansare statică cu numărătoarea inversă live la 2PM PST Apr 20 2026

    Ticuri în fiecare secundă care arată Xd XXh XXm XXs; cade înapoi la data statică până când clientul se hidratează, arată "Acum" când ţinta este atinsă.

  22. · 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.

  23. · 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.

  24. · kamo-internal

    CaracteristiciManager onoruri aplicat-model de stare activate de forță

    Acceptă noul model Availabilitatea + câmpurile blocate de la FeatureController şi le suprafeţe în UI: - Caracteristici al căror model este Availability Force ENABLED face comutația de stat, cu handicap, cu un tip de instrument explicativ Sunt pornite, dar nu le pot întoarce. - Comutarea unui model Forced caracteristici scurtcircuite cu un toast clar mai degrabă decât o eroare generică de la 403. - Caracteristicile NOT AVAILE nu ajung niciodată la client (filtrate server-side) Deci, lista UI este deja vedere poarta.

  25. · 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.

  26. · kamo-shared-library

    Soluţionare eficientă a modului de citire

    Adaugă poarta de citire care face modelul de securitate aplicat finala sursa de adevar pentru disponibilitatea caracteristicilor, astfel încât statul vechi DB nu poate scurgeri o caracteristica dezactivată prin intermediul și o caracteristică activate de forță este întotdeauna vizibilă chiar și atunci când DB nu a prins. Noi metode privind serviciul de aplicare a modului de aplicare: - calculAvailabilitatiMap(org) disponibilitate pentru o org într-o singură căutare. Serveşte ca lot primitiv alte metode noi se bazează pe. - isAppEfficientlyEnabled [org, serviceType, features) această aplicație pe "check. Servicii de bază mereu pe, depreciate întotdeauna off, FORCE ENABLED întotdeauna pe, NU AVAILABIL întotdeauna off; OPTIONAL * amâna la Rândul OrgFeature este starea activă. - ************ caracteristicile) însoţitor pentru apelanţi care au nevoie de "toate aplicaţiile eficiente" ca un set. - ComputeEfficientFeatures (org, features) Rânduri OrgFeature proiectate prin poarta: NU AVAILable scăzut, Force ENABLED forțat să activeze (chiar și pe rânduri DB cu handicap); și Aplicații FORCE ENABLED cu niciun rând DB încă reprezentat de rânduri tranzitorii (organizare-scoped, nu a persistat). Apelantii serializeaza caracteristicile unui org clientilor acum ruta prin CalculeEfficientFatures mai degrabă decât citirea colecției brute, astfel încât frontend vede în mod implicit imaginea de model aplicat.

  27. · kamo-internal

    Adăugați pe-assocType docuri tab-uri setări cu tipuri de doc, stivuire comenzi, și panouri de configurare

    Înlocuiește ComingSoonTab pe /setări/fetures/docs cu o interfață de setări complete: - Fila generala de prezentare + o fila pe ImageAssocType (Account, Service Application, Service Order, Call Recording, My Docs, Meet Recording, System-Wide) - Fiecare tab de assocType are 3 sub-tabe: Configuration (folder/docType feature toggles), Doc types (full CRUD), Stacking Orders (CRUD cu sertarul conductei vizuale) - Trasee proxy API Next.js pentru toate setările imagistice - AssocConfigPanel, DocTypesManager, StackingOrdersManager, StackingOrderDrawer, componente AssocTypeSettings

  28. · DocsService

    Add ImagingSettingsController with doc type, stacking order, and assoc config CRUD

  29. · kamo-shared-library

    Adăugați ImgAssocConfig entitate, depozit, și sortOrder la ImgStacking OrdineDt

  30. · 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

Universul tău te așteaptă.

Începeți gratuit în câteva minute.Adăugați produse oricând sunteți pregătit — fără migrare, fără autentificări noi.

Gratuit pentru totdeauna — nu este necesar un card de credit