உள்ளடக்கத்திற்குச் செல்லவும்
KAMOUniverse

மாற்று பதிவேடு

என்ன புதிது.

அது கப்பல்கள் போல், தளத்தில் ஒவ்வொரு மேம்பாடு.

  1. · BillingService

    Rewrite BillingService around BillingGroups

    Deletes the org-level **************** controllers, services, and DTOs. Introduces: - BillingGroupController mounting groups, members, subscriptions, licenses, payment methods, and invoices under /api/billing/groups. - BillingGroupService (lifecycle + Default Group + Free baseline), BillingGroupMemberService (one-group-per-member enforcement), BillingGroupSubscriptionService (Stripe sync with fallback to FREE_DEFAULT on cancel/lapse), **************** BillingGroupInvoiceService, LicenseService (auto-deactivation priority + inverse-priority reactivation). - PlanCatalogService + PlanCatalogController at **************** - StripeWebhookService consuming subscription / invoice / payment-method events. - EntitlementInvalidator publishing Redis invalidation signals. - PlatformAdminService + PlatformAdminController returning per-org roll-ups.

  2. · kamo-shared-library

    Replace org-level billing with BillingGroup model

    Introduces BillingGroup, BillingGroupMember, BillingGroupSubscription, BillingGroupLicense, BillingGroupPaymentMethod, BillingGroupInvoice, and BillingGroupConfig entities (all under shared commerce/billing/billinggroup). Drops the old BillingSubscription / BillingCustomer / BillingConfig / BillingPaymentMethod / BillingInvoice / BillingCredit / BillingUsageSnapshot entities entirely — every org now gets a Default Group with a FREE_DEFAULT KamoCRM subscription as its baseline. Adds SecurityModelCommerceMarket junction linking security models to commerce markets with per-scope enablement.

  3. · SecurityService

    Interaction Center member line uses job titles

    Replace RBAC role title with jobTitleOfficial, fallback to JobTitle catalog title for TeamMember, and the label Member for base Member records in the by-department payload role field.

  4. · kamo-internal

    Official job title field for team members on my-profile Position card

  5. · kamo-shared-library

    Add TeamMember.jobTitleOfficial optional string column (60 chars)

  6. · SecurityService

    Expose and persist jobTitleOfficial for team members on profile and member-security APIs

  7. · KlusterServices

    Use ECDSA P-256 for cert-manager Certificate specs and migrate RSA

  8. · kamo-shared-library

    Add findTeamMemberById for reliable TeamMember resolution

  9. · kamo-shared-library

    Load branch types with security models by org id

  10. · kamo-shared-library

    Optional Cache-Control on object upload

    Used by theme provisioning so globals.css and config.json instruct browsers and proxies to revalidate instead of serving stale cached objects.

  11. · SecurityService

    ThemeRevision in config and cache headers on theme assets

    Emit themeRevision (epoch ms) in config.json on each write; set Cache-Control on config, globals.css, and site.webmanifest uploads so edge caches revalidate.

  12. · kamo-shared-library

    Add **************** for avatar cleanup

    Used when removing an avatar so member overrides referencing the same row can be cleared before delete.

  13. · kamo-internal

    Clear wizard sessionStorage on fresh create via ?fresh=1

    Navigate from Network to create with ?fresh=1, strip the query, and use a short-lived lock so React Strict Mode does not restore an old draft before persist runs. Wizard draft lives in sessionStorage (not localStorage).

  14. · kamo-shared-library

    Alcohol/tobacco/firearms compliance policies

    - CHILD_ORG_SECURITY_MODELS columns and entity defaults MEMBER_SELECT - DTO and ChildOrgSecurityModelService create/update normalization - AppliedModelEnforcementService applies policies to child org ATF flags and singleton ages

  15. · SecurityService

    Expose ATF compliance policies on models and creatable branch types

    - OrganizationController applies model enforcement before age assertions - SecurityModelController and MasterModelController pass policy fields - BranchTypeController includes policies in /branch-types/creatable

  16. · kamo-internal

    Compliance wizard from security model policies

    - Branch types API maps alcohol/tobacco/firearms policies into wizard state - Dynamic Compliance step: omit from nav when model fixes all ATF and ages - Age and ATF controls only when MEMBER_SELECT or multiple age options - Review shows only fields the user was prompted for; title Compliance Settings - Settings: ATF policy radios under Allowed Member Age Ranges (security model) - Submit uses effectiveComplianceForSubmit for enforced values

  17. · SecurityService

    Align KnownAliases with DNS and auto-cert (add mail, play, apps, sign; drop app, media)

  18. · kamo-marketing

    Show live state with changelog link and daily count

    Replace preview countdown and signup copy with a compact "Now LIVE" callout, keep the changelog link, and always show today’s change count from the API after it loads. Update previewBanner strings across locales.

  19. · SecurityService

    Make RoleRightsSyncService fully self-healing on every boot

    Adding or removing a RoleRightType must never again require running KamoInitializerService. syncAll() now runs three phases on every startup: 1. Heal constraints — drop every CHECK constraint on every right-bearing table and ensure the two upsert-required unique constraints exist. Hibernate bakes enum values into CHECK constraints at CREATE TABLE time and never updates them, and @UniqueConstraint only takes effect on CREATE TABLE, so both drift whenever enums evolve. @Enumerated already enforces valid values at the Java layer. 2. Delete orphan rights — DELETE WHERE right_type NOT IN (current enum) across all six right-bearing tables: org_role_rights, **************** member_rights, member_rights_applied, job_title_rights, dept_rights. Handles both ORDINAL int and STRING enum-name storage. 3. Insert missing rights — unchanged; relies on the unique constraints ensured in phase 1. Idempotent — safe to re-run. Adding/removing enum values now requires only restarting SecurityService.

  20. · kamo-internal

    Add Platform Administration settings — org plan grants, events, plan catalog

    - New pages under /settings/platform (guarded by hasPlatformAdminAccess): - /organizations — list every org, grant/modify/revoke COMP plans with reasons - /events — audit feed of **************** - /plans — read-only catalog including internal (isPublic=false) plans - useUserInfo: derives hasPlatformAdminAccess from isGodModeActive() OR (teamMember.isOrganizationOwner AND organization.isTopLevel) - billingApi: platform namespace (listOrgs, grantPlan, modifyGrant, revokeGrant, listPlans, listEvents) + X-God-Mode-Active header when localStorage flag set - /api/billing proxy: forwards X-God-Mode-Active from client to BillingService - Settings hub + SettingsStatusWindow: new "Platform Administration" group - BillingManager: platform-owner banner replaces Stripe form for top-level org (wired into /settings/account as the billing tab) - FeaturesManager: "Platform Owner — Internal" header and suppressed upgrade CTAs when org is top-level and current sub is COMP - Organization class / OrgNetwork / PublicProvider: add isTopLevel; remove dead `type` field and the leftover consumers in network page + relationship manager - Remove deprecated OrganizationType.ts

  21. · BillingService

    Add PlatformAdmin controller + service for comp plan grants

    - PlatformAdminController at /api/billing/platform (class-level @PlatformAdminOnly) - GET /orgs, GET /orgs/{orgId} - POST /orgs/{orgId}/grants, PATCH|DELETE /orgs/{orgId}/grants/{subId} - GET /plans (includes isPublic=false) - GET /events - PlatformAdminService: grant creates COMP SubscriptionRecord, cancels prior active sub, emits SubscriptionEvent **************** 5s idempotency - @PlatformAdminOnly + HandlerInterceptor: allow god-mode-active OR (TeamMember.isOrganizationOwner AND Organization.isTopLevel, re-read from DB) - SubscriptionRenewalScheduler: COMP branch cancels on expiry (COMP_EXPIRED) and never calls Stripe - BillingAdminService: MRR/ARR aggregation excludes paymentMethod=COMP - Long ids exposed as String (CockroachDB unique_rowid precision)

  22. · InitializerService

    Seed Organization.isTopLevel for kamocrm and OWNER_UNLIMITED self-comp plan

    - DataLoader: drop OrganizationType arg from createOrg, set isTopLevel=true on kamocrm - KamoCRMAgeReqUpdateRunner + test: match on IS_TOP_LEVEL = TRUE instead of TYPE - OrganizationTypeRemovalRunner: idempotent ALTER TABLE DROP COLUMN type - PlatformOwnerPlanSeeder: idempotently ensure kamocrm-owned OWNER_UNLIMITED plan covers every feature and holds a permanent COMP subscription for itself

  23. · kamo-shared-library

    Add Organization.isTopLevel, PaymentMethod.COMP, COMP_* event types; remove OrganizationType enum

    - Organization: replace dead `type` field with `isTopLevel` flag for platform-owner identification - PaymentMethod: add COMP for complimentary platform-admin grants (no Stripe) - SubscriptionEventType: add COMP_GRANTED, COMP_REVOKED, COMP_EXPIRED, COMP_MODIFIED - OrganizationRepository: add findFirstByIsTopLevelTrue() - OrganizationService: drop setType() call; fields are now driven by isTopLevel

  24. · kamo-internal

    Hide unsubscribe button for user's original org on network page

  25. · SecurityService

    Set orgOriginal on registration and expose isOriginalOrg in my-networks

  26. · kamo-shared-library

    Add orgOriginal field to User to track registration org

  27. · kamo-internal

    Member-requestor support rights gating and dual-mode ticket view

    - NavTop: show SupportButton for any support right (agent or member) - SupportButton: gate each dropdown item by right — Create/View Tickets, Request Webinar, My Webinars shown only when the right is held - SupportTicketListTab: dual-mode — agents see full table with topic filter and assigned-to-me toggle; member-requestors see their own tickets only (createdByMe=true), simplified columns, New Ticket CTA - support/page.tsx: gate Tickets/My Webinars/Analytics tabs by right - Settings pages (account, departments, integrations, operations): add CONFIGURE_SYSTEM redirect guard; settings dashboard My Account section gated by CONFIGURE_SYSTEM

  28. · kamo-shared-library

    Add member-requestor support rights (133-136)

    Adds four new SUPPORT-scoped rights for non-agent members: - **************** (133) - CREATE_SUPPORT_TICKET (134) - REQUEST_WEBINAR (135) - VIEW_MY_SCHEDULED_WEBINARS (136)

  29. · kamo-internal

    Remove column filters from members and team members tabs

  30. · kamo-internal

    Add Sync Rights button to SecurityRoleManager for top-level orgs

    Button is only visible when organization.hasParent is false. Calls POST /api/security/roles/sync-rights then reloads the roles table.

உங்கள் உலகம் காத்திருக்கிறது.

நிமிடங்களில் இலவசமாகத் தொடங்கவும். நீங்கள் தயாராக இருக்கும் போது பொருட்களை சேர்க்கவும் - எந்த மாற்றமும் இல்லை, புதிய உள்நுழைவுகள் இல்லை.

எப்பொழுதும் இலவசம் — கடன் அட்டை தேவையில்லை