Add MemberRightRepository for managing member-level direct rights
Rename DomainService to EmailDomainService to resolve bean name conflict
The shared library's DomainService and EmailService's local DomainService both registered as 'domainService' bean, causing CrashLoopBackOff on deploy.
Remove duplicate inline help from email templates page
The help information was shown both inline above the templates list and in the Help & Tips sidebar. Removed the inline rendering to avoid wasting space, since t...
Correct method signatures in DomainController and MailboxController
- Fix getMemberMailboxes -> getMailboxesForMember in MailboxController - Add missing memberId parameter to getVerificationRecords and verifyDomain in DomainCont...
Use domainApi.listDomains instead of removed getDomains method in EmailMailboxManager
Add email domain management, mailbox provisioning UI, and member mailbox assignment
- Add domainApi and mailboxProvisioningApi to providerApi.ts - Add **************** capability detection to useProviderCapabilities - Create dedicated provider ...
Add email domain management and mailbox provisioning through abstract provider layer
- Add DomainManager and MailboxProvisioner capability interfaces with sub-capability detection - Add ProviderDomain, ProviderMailbox, DnsRecord DTOs - Implement...
Add email domain, mailbox, and member-mailbox entities and repositories
Add EmailProviderDomainEntity, MailboxEntity, and MemberMailboxEntity for email provider domain management, mailbox provisioning, and member-to-mailbox assignme...
Rewrite Roles & Permissions tab with singleton role selector and applied rights
Replaces multi-role creation dialog with Autocomplete dropdown for selecting a single existing OrgRole. Shows applied rights grouped by service type with source...
Add MemberSecurityController for member role assignment and applied rights
Provides GET /member-security/{id} (assigned role, applied rights with sources, session timeout), PUT /member-security/{id}/role, and DELETE /member-security/{i...
Add MemberRoleRepository to shared library for member role assignment management
Auto-append email domain when alias entered without @, show actual error messages
When user enters just a username like "SYSAdmin", the domain from their primary email is auto-appended (e.g. "SYSAdmin@KamoCRM.com"). Also surfaces actual backe...
Convert support icon to dropdown menu, remove support from sidebar nav
Support icon in NavTop now opens a dropdown with two options: - "View Support Chats & Tickets" navigates to /support?tab=tickets - "Create New Support Chat/Tick...
Send member IDs as strings to prevent JavaScript number precision loss
Member IDs from CockroachDB exceed Number.MAX_SAFE_INTEGER, causing Number() to round e.g. 1161936315562426374 → 1161936315562426400. The backend then fails to ...
Make support ticket table auto-fill remaining parent height
Add flex: 1 and minHeight: 0 to outer container and TableContainer so the table stretches to fill available space. Pagination sticks to bottom with marginTop: a...
Apply same spacing and tab sizing corrections to SupportView
Match SettingsView layout: tighter hero padding (py: 2.5, px lg: 3), reduced content padding (px lg: 2, pb: 2), compact tabs (minHeight: 42, fontSize: 13px), an...
Tighten SettingsView spacing and reduce tab height to match account page
- Reduce hero section padding (py: 4 → 2.5, px lg: 4 → 3) - Reduce main content area padding (px lg: 4 → 2, pb: 6 → 2) - Reduce tab bar margin (mb: 3 → 1.5) - C...
Rename page header to My Account, tab to My Profile, normalize spacing and tab sizing
- Page header changed from "My Profile" to "My Account" - First tab renamed from "My Account" to "My Profile" - Normalize all tab content padding to match /sett...
Restore animated backgrounds to header, rename Avatar to Photo, fix background management
- Restore Ken Burns animated background images to MemberHeader with org/custom background support via new props (useOrgBackgrounds, customBackgrounds) - Renam...
Redesign member settings with modular tab architecture and card-based edit UI
Merge Profile and Membership & Permissions tabs into unified "My Account" tab with section-based edit-on-click cards. Extract functionality into dedicated tabs:...
Allow members to view their own account activity without VIEW_ACCESS_LOGS permission
Merge pull request #4048 from ****************
fix: make signin email case-insensitive
Comprehensive pricing integration audit — make all pages API-driven
Calculator page: - Split into server component + CalculatorClient - All plan prices, addon prices, bundle prices now from API - Promo code validation against li...
Remove all 14-day trial references from pricing and offer pages
Trial removed from Starter and Business plans. Free plan serves as the try-before-you-buy experience. Updated CTA buttons ("Get Started"), FAQ, footer text, off...
Remove 14-day trial from Starter and Business plans
Free plan serves as the trial experience — no need for separate trial periods on paid plans.
Convert /pricing page from hardcoded data to live API-driven catalog
- Split pricing page into server component (data fetching) and client component (interactive UI with animations, toggles, FAQ) - Add pricing-catalog.ts utilit...
Refactor API Access UI with granular scope toggles per key
Rename "Public Chat API Keys" to "Organization API Keys". Add scope management with toggle switches per key (PUBLIC_CHAT, SUBSCRIPTION_CATALOG). Scopes shown as...
Support internal service auth for subscription catalog and promotions endpoints
Add X-Internal-Auth + X-Public-Chat-Org-Id header validation so APIService can proxy public catalog requests to the subscription endpoints. Session auth still w...
Add scopes column to PublicChatApiKey and ApiKeyScope enum
Adds a JSONB scopes column to the API key entity with default value ["PUBLIC_CHAT"]. New ApiKeyScope enum defines available scopes: PUBLIC_CHAT and SUBSCRIPTION...
Add polished MatrixCell component for feature matrix editing
New reusable MatrixCell component with modern, animated micro-interactions: Read mode: - Circular icon badges (green check / gray X) for booleans - Colored pil...
Add Edit Matrix button to toggle between read and edit modes
The matrix now starts in read-only view mode. Clicking "Edit Matrix" switches to inline edit mode with checkboxes, switches, and text inputs. Cancel reverts cha...
Redesign Features tab with tabbed layout and production-grade matrix
- Fix planFeatures API response key mismatch (subscriptionPlanFeatures -> planFeatures) - Split Features into two views via internal tabs: 1. Categories & Fea...
Parse JSONB string fields before array operations in grid renderers
compatiblePlanIds, includedInPlanIds, and applicablePlanIds come from the backend as JSON strings, not arrays. Added safe JSON.parse fallback in cell renderers ...
Remove mock subscription data from DataLoader
Remove loadMockSubscriptionData (BASIC/PRO/ENTERPRISE fake plans) from loadMockPOSData. All subscription data for KamoCRM is now exclusively managed by KamoCRMP...
Align API response keys with backend and fix AG Grid rendering
- Fix 7 response key mismatches in posApi.ts (featureCategories, features, addOns, bundles, volumeDiscounts, promotions, agreementTemplates) - Switch all AG G...
Use docker/login-action + buildx for reliable registry auth
Replace bare docker login/build/push with the docker/login-action@v3, docker/setup-buildx-action@v3, and docker/build-push-action@v5 pattern that handles creden...
KamoCRMPricingLoader looks up org by titleShort and runs from DataLoader.run()
Add KamoCRMPricingLoader with full marketing pricing model
Preloads the complete KamoCRM subscription pricing structure into the KamoCRM organization, mirroring the /pricing page on kamo-marketing: - 4 plans: Free, Sta...
Update seed data to use new subscription plan DTO fields
Replace deprecated **************** with planType, maxSeats, and description in DataLoader subscription plan seed data.
Align POSController subscription endpoints with SubscriptionService signatures
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.