Return all agreement templates including inactive ones
Add findByOrganizationId to repo (no active filter) and includeInactive param to getAgreementTemplates service method. Defaults to true so the management UI sho...
Restore commerceMarketApi.ts as compatibility re-export from commerceApi
Pipeline components (PipelineOrdersTab, PipelineView, orders detail page, etc.) still import from commerceMarketApi. Re-export needed symbols from commerceApi.
Reduce hero section padding on mobile so headline is fully visible
Tightened pt and mb spacing at base breakpoint so "Unify Your Clients," is no longer pushed off-screen on portrait phones where the fixed banner and nav consume...
Make preview banner fixed to viewport and reduce hero text size on mobile
Banner is now position:fixed so it stays visible while scrolling, with body padding injected dynamically to prevent content overlap. Hero headline reduced from ...
Correct API paths, professional page layouts, remove dead code
- Fix frontend API path mismatches: use subscription-features, subscription-addons, subscription-bundles, **************** subscription-plan-prices, subscri...
Promote Features, Add-ons, Bundles to market-level tabs for SUBSCRIPTION markets
Features, add-ons, and bundles are shared market-level resources, not per-plan. - Add Features tab (manage + feature matrix), Add-ons tab, Bundles tab to market...
Add missing vendor-categories endpoints to CommerceMarketController
GET/POST/PUT/DELETE /{marketId}/vendor-categories were missing, causing 404 when the Vendors tab tried to load categories.
Unwrap backend response envelopes in all commerceApi single-object methods
Backend wraps responses in { market: {...} }, { product: {...} }, etc. but API client was returning the raw envelope, causing market.id and other properties to ...
Make preview banner responsive with dynamic height and raise chat z-index
Banner now measures its own height via CSS variable so nav/content adapt automatically when text wraps on small screens. Chat widget z-index raised above the ba...
Add marketId to CreateRentalAssetRequest and wire market association in CommerceService
Mailbox dropdown now loads emails from the selected mailbox
Pass mailboxId through fetchMessages/fetchFullMessage to the backend, fix stale closure in mailbox-changed handler by passing mailbox directly to loadMessages i...
Support mailbox switching by resolving IMAP credentials per mailboxId
Added getMailCredentialsByEmail to look up virtual_users by email directly, resolveForMailbox to MailProviderResolver with access verification, and optional mai...
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...
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.