Phase 1–2 implementation, order/app UI, rental foundation
- Order detail: Payment history and Fulfillments sections when PAID - Application detail: Approve button (SUBMITTED→APPROVED), commitment display - posApi: Orde...
Pipeline datagrids collapsed, restructure to match leads layout
- SettingsView: tab content container now uses display:flex, overflow:hidden so flex chain passes height to grids (fixes collapsed grids in POS settings) - Pi...
Use AG Grid and flex-fill layout for pipeline and POS datagrids
- PipelineEngagementsTab, PipelineOrdersTab, PipelineApplicationsTab: flex-fill height for AgGrid - PipelineProductsTab: convert from MUI Table to AgGrid with p...
Enable commerce JPA repos for POSController/CommerceService
SecurityService POSController depends on CommerceService which uses engagement, order, intent, etc. repositories. These live in com.kamo.z.shared.commerce.* but...
Use Uid instead of Id for BaseEntity-derived relations
- FulfillmentOrderRepository: findBySourceCommitmentId -> findBySourceCommitmentUid (Commitment uses uid) - TransactionRepository: findByOrderId -> findByOrderU...
Date range filter, placeholder pages, dashboard/engagement UX
- Engagements tab: dateFrom/dateTo filter, engagement count, context-aware empty states - Placeholder pages: service, bookings, agreements, procurement (coming ...
Add ordering (createdAt DESC) and date range filter
- EngagementRepository: OrderByDateCreatedDesc on all find methods - CommerceService: dateFrom/dateTo params, in-memory date filter - Engagements API now suppor...
Use getDisplayName for domain, support WORK_ORDER/VENDOR_ORDER link labels
- Engagement detail: show friendly domain label (Retail vs RETAIL) - Engagements tab: domain column uses getDisplayName - Add link labels for WORK_ORDER, VENDOR...
Add EngagementDomainTypeConverter for VENDOR→SERVICE, no manual SQL
- JPA AttributeConverter maps legacy VENDOR to SERVICE when reading from DB - Applied to Engagement.domain and OrgPOSConfig.enabledDomains - Removes need for ma...
Add engagement endpoints GET /engagements and GET /engagements/{id}
Add Engagements tab, detail page, and dashboard integration
- posApi: add Engagement types, getEngagements, getEngagementById - posDomainLabels: add getEngagementStatusLabel - PipelineEngagementsTab: AG Grid with domain/...
Complete remaining items (validation, product cache, status, recent items, focus); revert lazy load to fix build
Finish remaining plan items – low-stock warning, date filters, plan checkboxes
- Order Create: low-stock warning when adding product with trackInventory - Orders tab: date range filter (last 7 days, last 30 days) - Applications tab: date r...
Phase 4–5 – Dashboard reporting, error handling, a11y
Phase 4 – Dashboard & reporting: - Revenue by period (week, month, quarter) - Order count by status (DRAFT, AUTHORIZED, PAID, CANCELLED, REFUNDED) - Application...
Align Pipeline and Settings UI with commerce backend
- Update order status colors to match backend (DRAFT, AUTHORIZED, PAID, CANCELLED, REFUNDED) - Update application status colors (DRAFT, SUBMITTED, EXPIRED, CANC...
Switch DataLoader to CommerceService
- Use CommerceService instead of POSService, RetailProductService, RetailInventoryStockService - createProduct, createOrUpdateStock, createRetailOrder, createMo...
Switch POS controllers to CommerceService
- POSController uses CommerceService instead of POSService - RetailProductController uses CommerceService instead of RetailProductService - RetailInventoryContr...
Replace pos beans with commerce package
- Add commerce package (Order, Intent, Offering, InventoryItem, InventoryPool, etc.) - Add CommerceService replacing POSService, RetailProductService, RetailInv...
Full-page views, AG Grid, domain support, create screens
- Add getMortgageApplication(id) to posApi - Replace Orders tab: MUI Table -> AG Grid, row click -> /pipeline/orders/[id] - Replace Applications tab: cards -> A...
Enterprise validation in POSService
- createRetailOrder: null check on request - createLineItem: null check, quantity > 0, unitPrice >= 0 validation
Enterprise-grade POS UI and API
- posApi: POSApiError class, fetchWithError, structured error handling - useToast + POSToast: centralized snackbar for success/error feedback - posUtils: format...
POS domain config, retail order line items, dynamic pipeline tabs
- Add getPOSConfig/updatePOSConfig to posApi, posDomainLabels utility - Extend createOrder with lineItems, add getOrder, RetailOrderLineItem type - PipelineOrde...
Resolve Map type inference in POS controllers for CI compilation
- Use explicit Map<String, Object> in ResponseEntity Map.of() calls - Fixes 'incompatible types: inference variable V has incompatible bounds' when mixing DTO...
Add POS controllers for retail products, inventory, and orders
- RetailProductController: CRUD for products - RetailInventoryController: inventory stock management - POSController: orders and mortgage applications
DataLoader IOException import and mock lead assignment FK errors
- Add missing java.io.IOException import for copyJavaEnumsToNextJS - Use saveLead instead of saveLeadWithAssignment for mock data to avoid lead_assignments FK...
Add POS/inventory domain entities, DTOs, repos and services
- Add POS beans (retail, rental, mortgage, subscription, vendor) - Add RetailProduct, RetailInventoryStock, RetailOrder, MortgageApp DTOs - Add RetailProductSer...
POS restructure: API via APIService, Settings for admin, Pipeline for users
- API proxy: POS requests forward to APIService (relays to SecurityService) - Settings: New POS System section under main settings + /settings/features/pos - PO...
Update Traefik routes: themes.* assets now only load from k1m1 minio instead of balancing across k0m1, k1m1, and k2m1
Merge pull request #4006 from ****************
feat: add SKIP_BUILD_GEO env variable
Use i18n for board component strings, show controls in edit mode, require website before editing
- Replace raw strings with useMessages hook in BoardColumn and BoardComponentSelect - Show WebsiteControls on edit screen so users can test filters - Disable bo...
Add board component selector with live preview
Allows users to select and inject analytics components into board cells. Includes component registry, renderer, selector modal with category menu, config fields...
Add Web Vitals performance tracking (LCP, INP, CLS, FCP, TTFB)
End-to-end performance metrics tracking: dedicated database table with percentile aggregation, tracker collection behind data-perf attribute, /api/send handling...
Fix team boards not appearing after creation
Board creation from team context was not passing teamId to the API, causing boards to be saved as personal boards instead of team boards.
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.