Top-level org members get platform-owner plan, bypass billing gates
KamoCRM (top-level) org members are not subject to the billing system — they get the OWNER_UNLIMITED plan's feature matrix outright (with Free as a defensive fa...
Top-level org bypass + Free baseline fallback for orgs without subs
The org-level entitlement check **************** walks subscriptions targeting an org. With the new target_org model, orgs that don't yet have a targeting Accou...
Split member APIs; show subs' target org; add billing-owner promote UI
billingApi splits members into accountMembers (canManageBilling, isAccountManager) and subscriptionMembers (isLicensee, canManageSubscription) under ***********...
Auto-provision KamoCRM seat on sub-org creation; promote-billing-owner endpoint
EntitlementService walks SubscriptionMember (not AccountMember) to compute member entitlements — the union of features across active licensee subs, plus the Fre...
Subs target a sub-org; per-sub members split from account admins
Subscriptions now require targetOrganizationId on create — the (account, market, target_org) triple is the new uniqueness key. AccountBillingMemberService is sp...
Split account-level admins from per-sub members; subs gain target_org
Adds SubscriptionMember (per-subscription licensee + sub-manager flags) so an Account on the KamoCRM org can hold multiple subscriptions, each targeting a diffe...
AccountGroup -> AccountTier; customer-group routes -> customer-tier
Frontend types and API calls updated to match the shared-lib + service rename of AccountGroup to AccountTier. The "Group" naming was leaking into the customer-s...
AccountGroup -> AccountTier; endpoints /groups -> /tiers
Account-group endpoints (customer segmentation tiers, not billing) renamed throughout to use "tier" terminology consistently with the shared-lib rename: - /api/...
AccountGroup -> AccountTier (customer segmentation, not billing)
The retail customer-segmentation entity (with discountPercentage, used by PriceList for tier-based pricing) collided in name with the now-removed billing-group ...
Rename AccountBillingMember -> AccountMember; isGroupPlanManager -> isAccountManager
Type-level rename across the billing client and the PlansBillingTab: - AccountBillingMember type -> AccountMember - isGroupPlanManager flag -> isAccountManager ...
Use Account.members via AccountMember; rename isGroupPlanManager -> isAccountManager
The Account is now the group, so all references to the old AccountBillingMember entity are pointed at the new generic **************** entity. The "group plan m...
Drop users/masterAccountHolder, use Account.members + primaryMember
AccountController now reflects the Account-as-group model: - computeDisplayName / extractEmail / extractPhone resolve through the primaryMember (Member) inste...
Make Account the group; replace User-set with Member-set + AccountMember
The Account is now itself the "group" — there's no separate billing-group concept. Members (org-scoped) belong to the Account directly via the new AccountMember...
Add member language + default_currency columns
Adds two NOT NULL columns to the members table backing the new Member.language (VARCHAR DEFAULT 'ENGLISH') and Member.defaultCurrency (VARCHAR(10) DEFAULT 'USD'...
Add language step, country timezone picker, scroll + *** fixes
- New 'My Language' step prepended to the wizard, mirroring the country step's layout. Lists the 22 marketing-supported locales as flag tiles with native na...
Add language + default currency to Regional Settings card
Member profile's Regional Settings card now exposes editable Language (22 supported locales mirroring the marketing site) and Default Currency (searchable Autoc...
Persist member language/timezone/currency on signup
The /register endpoint now accepts language, timezone, and defaultCurrency alongside the existing country field. RegistrationService sets country and timezone o...
Rewrite billingApi client onto Account-based endpoints
billingApi now talks to **************** instead of the old /groups/{groupId} routes. Top-level types renamed: - BillingGroup -> AccountBilling - Bill...
Rewrite BillingService onto Account-based entities
The BillingService is now Account-centric. Member-driven flows (e.g. "add a card", "subscribe to a plan") now go through an Account that auto-creates for the me...
Move from BillingGroup to Account-based licenses
EntitlementService resolves member entitlements against AccountLicense records owned by the member's billing Account. The MemberEntitlements shape now exposes a...
Migrate from BillingGroup to Account as billing principal
Account is now the single Stripe customer principal. A Member needing to pay (e.g. for a subscription) auto-creates an Account; that Account then holds one or m...
Mirror live/snapshot address shape in CartItem2 and DraftOrderItem types
CartItem2 gains **************** and shippingAddress/billingAddress fields populated from the customer's primary shipping/billing AccountAddress profile. DraftO...
Map external customer address blocks into AccountAddress on pull
Add AdapterAddressMapper helper that converts a JSON address node from any provider into an EmbAddress and attaches it to an Account as a typed AccountAddress (...
Orient live records to Account address profile, snapshot historical addresses
Orient live commerce records to reference the Account profile's primary shipping/billing addresses, with snapshots taken only when records become historical (pl...
/account/new copy-from-lead UX, full name fields, dual phones, address; account-level address management
Frontend: - /account/new: per-section "Copy from Lead" buttons + header "Copy all from Lead" button (when leadId param) - Name section: prefix, first, middle, l...
Support nested name/email/phoneNumbers + address management endpoints
- AccountController accepts nested name/email/phoneNumbers JSON on POST/PUT - Initial address on POST creates SHIPPING (and BILLING when useAsBillingToo set), s...
Switch Account.java to embeddables; add AccountAddress entity for shipping/billing lists
- Add AccountAddressType enum (SHIPPING, BILLING) - Add AccountAddress entity (account FK, type, label, EmbAddress, timestamps) - Add AccountAddressRepository -...
Production-grade History + Voicemail tabs with media-player tool
History tab (SoftphoneHistoryTab.tsx): - Infinite scroll via IntersectionObserver inside the panel's scroll container - Filter chips: All / Inbound / Outbound /...
Migration runner for Recording provider-lookup columns + VM archive columns
Adds RECORDINGS.provider_instance_id (UUID) and provider_external_id (VARCHAR(64)) plus the composite idx_recordings_provider_lookup index used by the softphone...
Je, unaona nini kuhusu usafiri?
Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.