Align Status Labels nav order with CRM page tab order across all 3 locations
Update Farm/Grim example labels to Dead/Bad and remove search field from status labels settings
Apply field config end-to-end across preview, save, compose, and send
The field config toggles were only wired up as UI — they had no effect on signature rendering. This commit: - Extracts applyFieldConfig to types.ts as a shared...
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
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...
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...
Allow members to view their own account activity without VIEW_ACCESS_LOGS permission
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.
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...
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()
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
Hide 30% promo banner on calculator, show dynamically when discount code applied
Add POS (Commerce) to settings navigation menus
POS app was missing from settings sidebar and FeaturesManager route map, so enabling it from Apps & Features had no effect on navigation.
Mobile chat is minimized by default, opens fullscreen with no in-between
On mobile (<640px): always starts minimized regardless of first visit. Tapping the tab opens fullscreen. Minimize returns to tab. No 70vh intermediate state — j...
Raise z-index above nav, add mobile bottom sheet, update welcome message
- Bumps widget z-index to 10002 (nav is 10001) so maximized mode isn't hidden - Mobile: renders as a 70vh bottom sheet with drag indicator and rounded top cor...
Remove unreachable minimized state check to resolve TypeScript narrowing error
Wrap PublicChatWidget in client component to resolve ssr:false in Server Component error
Next.js 16 disallows dynamic() with ssr:false in Server Components. Adds PublicChatLoader as a client component wrapper.
Integrate public chat key management into existing API Access tab
Rewrites APIManager.tsx with real backend calls to /api/public-chat-keys (backed by MediaService). Removes the separate PublicChatKeyManager tab and all nav ref...
Route public chat key API calls to MediaService instead of SecurityService
Changes proxy path from /api/security/public-chat-keys to /api/media/public-chat-keys to match the actual backend controller location in MediaService.
Use @MapsId pattern for PublicChatVisitor to resolve IdClass error
Switches from @OneToOne-as-@Id to @MapsId with explicit String sessionGuid field. Fixes Hibernate "does not define an IdClass" error at startup. Repository ID t...
Add missing Member import and fix createMember call in DataLoader
Adds missing import for Member class and replaces non-existent memberService.createMember() with memberRepository.save() for the website-contact system member c...
Correct 7 legally contestable marketing claims across the site
1. 99.9% uptime — was claimed universally, now qualified: "Up to 99.9%" or "99.9% (Enterprise)". Fixed in Hero, Testimonials, CTAStrip, TrustBar, Features...
Adjust Free plan claim from "the full platform" to "core features"
"The full platform" is legally contestable since the Free plan has significant limits vs paid plans (1 user, 3GB, 100 contacts, view-only docs, no video/AI/HR/S...
Make pricing comparison table horizontally scrollable on mobile
Wrap the feature comparison table in an overflow-x-auto container with a 700px minimum width so columns maintain readable sizes on narrow screens. Users can swi...
Remove global scroll-behavior:smooth that prevented pages from starting at top
The html element had scroll-behavior:smooth globally, which caused Next.js client-side navigation to slowly smooth-scroll from the previous scroll position inst...
Remove inline display:flex that was overriding mobile breakpoint
The desktop nav container had display:'flex' in inline styles which overrode the Tailwind 'hidden lg:flex' class (inline styles always win over classes). This m...
Replace scroll-spy nav with main site links on homepage desktop and mobile
The homepage Navigation component was showing ScrollSpyNav jump-to-section links (Home, Features, Demo, Show Me, Cases, ROI, etc.) on desktop instead of the mai...
Replace homepage mobile menu scroll-spy links with site navigation links
The homepage Navigation.tsx mobile menu was showing section jump links (Home, Features, Demo, Show Me, Cases, ROI, Testimonials, Pricing, FAQ) instead of actual...
Convert all internal <a> and <motion.a> links to Next.js <Link> for proper client-side routing
- Footer.tsx: logo motion.a→Link, all footer nav links a→Link (removed window.location.href anti-pattern), sitemap a→Link - Navigation.tsx: logo motion.a→Link...
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.