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
Stabilize connection line physics and mouse proximity
- Only apply mouse proximity force after mouse has moved (avoids 0,0 affecting lines on load) - Guard mouse position with Number.isFinite before use - Clamp con...
Unify section title underline and grid for lower sections
- Use var(--color-primary) for CRM, E-Mail, Phone section underlines - Use 3-column grid on lg for E-Mail and Phone (3 cards) for consistent layout
Fix market tabs, status by market, filter options, lead ID prefix L
- Market tab: filter by lead.marketId and vendorProductIds when a market is selected - Status/Sub Status: use availableStatuses for column filter options (marke...
Back button on view header, restore filters when returning from view
- HeaderBar: add Back to Lead Browser button (ArrowBack) in lead info header - LeadManager: persist filters/tabs to sessionStorage before opening a lead - LeadM...
Switch to base28, remove 5 and S from alphabet
- Rename toBase30 to toBase28; use 28-char alphabet - Lead/doc formatters now use toBase28 internally
Agent column from assignedEmployee, base30 lead/doc ID formats
- Agent column shows assignedEmployee.fullName or 'Unassigned' - Add assignedEmployee to Lead type; use valueGetter for sort/filter - LeadManager: use toBase30L...
Shared toBase30 in app/utils/base30, use in LeadManager and DocManager
Trigger pipeline - pull latest kamo-shared-library with vendorProduct population
Populate vendorProduct relationship when fetching leads
Update getLeadsByOrganizationId() to populate the @Transient vendorProduct field for each lead that has a vendorProductId. This ensures the vendor and product d...
Improve lead grid with base30 IDs, raven icon, All Markets tab, and Market column
- Add toBase30() function for consistent ID representation across LeadManager and DocManager - Fix Grim status icon in tabs to use raven.ico (matching the datag...
Add status, subStatus, source, and dateCreated fields
- Added status, subStatus, source, dateCreated, and isActive fields to Lead entity - Updated LeadDTO with frontend-compatible fields (status, subStatus, source,...
Refactor Lead assignment from String to Employee reference
- Changed Lead.assignedUser (String) to Lead.assignedEmployee (Employee) - Added LeadAssignment entity to track assignment history - Added LeadAssignmentType en...
Add mouse proximity physics effect to connection lines
- Checks 5 points along the curve for proximity detection - 80px effect radius - lines respond when mouse gets close - Force strength uses inverse square fallof...
Destination task item border matches line animation
- New destinationGlow keyframe animation with 4 phases - Border color animates through amber → gold → white → gold → amber - Matches the flowing gradient animat...
Auto-expand answers and highlight connected items
Answer Input (TaskSideBar): - New answer field appears immediately when typing in last field - Focus stays in current field while typing - Empty placeholder fie...
New answer field maintains focus while typing
- Added local state for new answer input (newAnswerValue) - Input no longer triggers array update on each keystroke - Answer is added on blur or when pressing E...
Auto-expanding answers and consistent background colors
TaskSideBar (Task Item Settings): - Removed "Add Answer" button - Added auto-expanding input field that appears after existing answers - Typing in the placehold...
Restore task item selection while keeping line clicks
- SVG container back to pointer-events-none (allows clicks to pass through) - Hit area paths use pointer-events: stroke (only the line itself is clickable) - Vi...
Add clickable relationship lines with selection and delete
- Lines can now be clicked to select them (with wider hit area for easier clicking) - Selected lines highlight in amber/orange color with animated flowing gradi...
Update sidebar colors and adjust line positions
- TaskSideBar background now uses 18% primary (same as task items) - TaskSideBar text changed to gray-900 for contrast - Input fields use 8% primary background ...
Position logo between background color and grid lines
- Removed duplicate backgroundColor from canvas-container - Background color is on scroll container, logo is fixed above it - Grid lines overlay on top of logo ...
Update task item colors and add centered logo background
- TaskItem background now uses color-mix (18% primary) - 10% darker than canvas - Removed hardcoded bg-white from TaskItem in favor of dynamic primary color - A...
Use primary color from globals.css for canvas background
- Background color uses color-mix to create very light primary (8% primary + white) - Grid lines use color-mix with 15% primary color for subtle contrast - Matc...
Source bullets on top of task items, +15px offset
Visual improvements: - Split SVG into two layers: lines (z-index: 1, behind) and bullets (z-index: 10, on top) - Source bullets now render AFTER task items in D...
Fix connection line source position, improve sag, add smart spawning
Fixes: - Source position now correctly uses offsetX/offsetY from where connection icon was clicked (not hardcoded to task item width) - Both established conne...
Add visual improvements to connection lines
- Add source bullet (circle) at start of each line, at right edge of task item - Arrow now ends at left of title area (vertical center), with 3px gap from borde...
Like what you see shipping?
All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.
