Eliminate hexhead spawn overlap by computing unique column positions
Each head now initialises its MotionValue at its own home-row column X and below the viewport (h + SIZE), then springs up to its final slot. Previously all head...
Use inline style for icon colors to prevent CSS specificity override
sx-generated color classes were being overridden by Tab card context styles. Switching color to inline style prop ensures icons always render with the correct c...
Add kamo.commerce.enabled=true to k8s configmap
This is the file the CI pipeline actually applies (k8s/configmap.yaml). Required for CommerceService and EngagementLifecycle to load under the new @ConditionalO...
Add KAMO_COMMERCE_ENABLED=true to k8s configmap
Required for CommerceService and EngagementLifecycle to load now that they use @ConditionalOnProperty instead of @ConditionalOnBean.
Add matchIfMissing=false to ConditionalOnProperty for commerce beans
Makes it explicit that CommerceService and EngagementLifecycle are disabled by default when kamo.commerce.enabled is not set. Any service that does not configur...
Enable commerce beans via kamo.commerce.enabled property
CommerceService and EngagementLifecycle now use @ConditionalOnProperty instead of @ConditionalOnBean. Set kamo.commerce.enabled=true so they load in SecuritySer...
Replace ConditionalOnBean with ConditionalOnProperty for CommerceService
**************** is evaluated before Spring Data JPA registers user-defined repository beans, making it unreliable. Replace with **************** which is evalu...
Prevent overflow:hidden on tab card from clipping status widget
Move overflow:hidden from the Card to the Tabs wrapper Box so scrollable tabs are contained but the right-aligned status/substatus widget remains fully visible.
Correct hexhead geometry, z-index layering, and viewport clamping
- Fix axialToPixel to use flat-top hex formula (was pointy-top) so honeycomb aligns flat-edge to flat-edge as the hex SVG shape requires - Fix generateRing to...
Batch-load custom form data in getAllLeads (eliminate N+1)
Replace per-lead getCustomFormDataForLead calls (N+1 queries) with a single batch load via getCustomFormDataForLeads, grouped by lead ID using a Map lookup when...
Eliminate full-table scan and N+1 queries on leads endpoint
- LeadRepository: add findByOrganizationId JPQL query (uses ORG_ID index) instead of loading entire LEADS table and filtering in Java - LeadCustomFormDataRepo...
Add status/substatus widget to lead view tab bar
- Extract LEAD_STATUS_TYPES, getStatusIcon, getSubStatusIcon to shared app/lib/leadStatuses.tsx utility; update LeadManager to import from it - Add inline sta...
Rewrite HexHead system with framer-motion physics
Replace the broken 1800-line HexHeadGroup with a clean physics-based implementation using framer-motion springs and motion values. Key changes: - Remove wiggle...
Use Next.js client-side navigation for all MUI Link components
MUI Link without component={NextLink} renders as a plain <a> tag, causing full page reloads that reset all React state including tool windows. Added component={...
Replace window.location hard navigations with router.push/refresh
All window.location.href, window.location.assign(), and window.location.reload() calls in page components caused full page reloads, wiping all React state inclu...
Flat-top honeycomb layout, 5px gaps, cluster-aware groups, tool window relayout
HexHeadGroup: - Switch to flat-top hex geometry (HEX_INRADIUS/HEX_STEP) — hexes now share flat top/bottom edges with adjacent group members, giving a proper h...
Move ToolDock above auth gate to prevent tool window wipe on navigation
PresenceWrapper switches its component tree structure when auth resolves (Fragment > children → ChatWebSocketProvider > PresenceProvider > children). This unmou...
Persist tool windows across navigation — Layer 1 guard + ToolProviders wiring
Remove side effects from setWindows updaters, add missing wrapAroundDock dispatches
Apply toolbar and search changes to embedded chat mode
The ChatBox is always rendered in embedded mode via ChatTool. Move the call controls toolbar with search field and scroll-to-bottom button into the embedded sec...
Add chat toolbar with call controls, live search, and smart auto-scroll
Move call buttons from header to dedicated toolbar row with 50% lighter background. Add live search field that highlights matches and auto-scrolls to most recen...
Softphone dial pad shorter, chat call controls, hexhead avatars, calc light theme
- Reduce softphone dialpad button padding from 12px to 9px (6px shorter) - Add call controls toolbar (audio, video, screen share) to ChatBox in embedded mode ...
Update HexHeadGroup selectors from data-chatbox-root to data-tool-window
The tool window system uses data-tool-window on ToolWindowShell, but HexHeadGroup was still querying data-chatbox-root for footprint detection. This caused hexh...
Unify tool window dimensions and refine UI
- All tools now share uniform 320x650 size (softphone 25% taller, others match) - Remove programmer and graphing calculator modes from UI (components retained) ...
Add ScientificMode calculator component
Expression-based scientific calculator with live result preview. Supports trig (sin/cos/tan + inverses), log/ln, powers (x², x³, x^y, eˣ, 10ˣ), roots (√, ∛), fa...
Replace AuthenticatedChatWrapper with AuthenticatedToolWrapper, remove ChatDock
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.
