Changelog
What's new.
Every improvement to the platform, as it ships.
· SecurityService
Add LeadVendorController with full CRUD for vendors and products
· kamo-shared-library
Add full CRUD support for LeadVendor and LeadVendorProduct with String IDs
· kamo-internal
Add Next.js API routes for lead-markets to proxy to SecurityService
· SecurityService
Add detailed logging to **************** for debugging
· SecurityService
Add LeadMarketController for managing lead markets via REST API
· kamo-shared-library
Add LeadMarket entity, repository, service, and DTOs for CRM markets management
· kamo-internal
Rebuild LeadMarketManager UI component with modern design and API integration
· kamo-internal
Add CRM settings page with Markets & Fields, Vendors & Products, Manual Lead Imports, and Integrated Lead Imports tabs
· SecurityService
Use organization streamGuid for organization-wide media feed
- Added OrganizationRepository to MediaStreamController - Updated getFeed to use organization's streamGuid instead of querying all sessions - Updated createPost to create posts in organization's stream instead of individual sessions - Organization-wide feed now uses a single stream like lead feeds
· kamo-shared-library
Add streamGuid field to Organization for organization-wide media feed
· kamo-shared-library
Add LIKE enum value to MediaBlockReasonType for social media likes
· kamo-internal
Create reusable MediaStream component and lead communications
- Created reusable MediaStream component for all media stream contexts - Refactored FeedTimeline to use MediaStream component - Created LeadCommunications component for lead-specific comments - Updated PostComposer to support optional leadId prop - Updated MediaStream to pass leadId to PostComposer - Integrated LeadCommunications into LeadViewClient Communications tab - Updated types to include leadId in CreatePostRequest
· kamo-shared-library
Add streamGuid to Lead and support lead-specific media streams
- Added streamGuid field to Lead.java to reference MediaSession stream - Updated MediaSessionPost to support optional lead association - Updated **************** to accept optional Lead parameter - Updated MediaSessionRepository with query methods for lead streams
· kamo-internal
Modernize social media feed design with hip, polished styling
· kamo-internal
Implement social media feed timeline
- Replace clubhouse page with FeedTimeline component - Add PostComposer for creating posts with images - Add PostCard component with like, comment, edit, delete actions - Add CommentThread with nested reply support - Add ImageGallery with lightbox viewer - Add PostSkeleton for loading states - Add useMediaFeedWebSocket hook for real-time updates - Add TypeScript interfaces for media types - Add Next.js API routes for all media feed endpoints - Implement infinite scroll with error handling and retry logic
· SecurityService
Add MediaFeedController for social media feed
- Add MediaFeedController with REST endpoints for posts, comments, likes - Implement paginated feed endpoint with access level filtering - Add image upload endpoint for post images - Integrate with MediaService and ImageService - Support post creation, editing, deletion, and commenting - Implement like/unlike functionality using MediaObjReport - Generate proper image URLs using storage proxy endpoint
· kamo-shared-library
Add MediaObjReportRepository and update media services for social feed
- Add MediaObjReportRepository for like/reaction system - Update MediaService with createPostSession and NATS event publishing - Update MediaSessionRepository with organization-based feed queries - Update Employee.java employmentStatus field handling
· kamo-internal
Add filter header to Members & Subscribers tab with all column filters aligned
· kamo-internal
Add filter header to EmployeeManager datagrid with employment status and other filters
· kamo-internal
Update EmployeeManager with backend integration and add account API routes
· SecurityService
Add AccountController with endpoints for Members & Subscribers and Employees & Contractors
· kamo-shared-library
Add MemberType enum and memberType field to Member entity for efficient database queries
· kamo-internal
Preserve USERNAME and REMEMBER_ME cookies on logout and forward to kamo-login
- Exclude USERNAME and REMEMBER_ME cookies from deletion on logout - Forward logout request to kamo-login logout endpoint after clearing cookies
· kamo-login
Add USERNAME and REMEMBER_ME cookies with domain-specific settings
- Set USERNAME cookie when remember me is checked on successful login (1 year expiration) - Clear USERNAME cookie when remember me is unchecked on any login attempt - Set REMEMBER_ME cookie to '1' or '0' based on checkbox state - Auto-populate username field from USERNAME cookie on page load - Auto-check remember me checkbox if REMEMBER_ME cookie is '1' - Preserve USERNAME and REMEMBER_ME cookies on logout (both kamo-login and kamo-internal) - All cookies are domain-specific (not cross-subdomain accessible)
· kamo-internal
Add organization logos to Profile and Membership & Permissions tabs
- Fetch security provider organization logo and display next to Profile tab - Fetch current organization logo and display next to Membership & Permissions tab - Use Avatar component to display logos (20x20px) with proper styling - Logos are fetched from organization networks API and constructed using theme path logic
· kamo-internal
Add Manage Backgrounds button in MemberHeader
- Added handleManageBackgroundsClick prop to MemberHeader - Added Manage Backgrounds button next to URL input when custom background is enabled - BackgroundManager now supports external control via open and onOpenChange props - ProfileTab controls BackgroundManager dialog state and passes handler to MemberHeader
· SecurityService
Store avatar hash and extension in *** session data
- Added updateSession method to KSessionService for updating session fields - Updated setActiveAvatar to store userAvatarHash and userAvatarExtension in session - Updated updateMemberProfile to store memberAvatarHash and memberAvatarExtension in session - Added get***IdFromRequest helper method to AvatarController - Avatar data is now cached in session to avoid repeated database lookups
· SecurityService
Include avatar URLs in member profile response
- Added helper methods to generate avatar URLs (getThemeDomain, getPublicBucketName, generateFileHash, getPublicBucketUrl, generateAvatarUrl) - Updated getMemberProfile to include avatar URLs in memberAvatar and avatar objects - Allows frontend to display other users' avatars without requiring separate API calls - Uses hash-based file storage for security
· kamo-internal
Add avatar fallback logic to chat components and member list
- Created avatarUtils.ts with utility functions for avatar fallback (member -> user -> initials) - Updated HexHeadGroup to fetch and display avatars with fallback - Updated ChatDock to fetch avatars when opening chats - Updated ChatBox to show initials when no avatar available - Updated MemberItem to fetch and use member/user avatars with fallback
· kamo-internal
Update Create Avatar layout to match kamo-register design
- Reorganize Create Avatar tab with top row for quick settings (Style, Seed) - Split bottom row into two columns: Preview (left) and Advanced Settings (right) - Move advanced settings into expandable accordions (Transform, Background) - Match the layout structure from kamo-register FormAvatarSelection component - Improve UX with better organization and visual hierarchy

Your universe is waiting.
Start free in minutes. Add products whenever you are ready — no migration, no new logins.
Free forever — no credit card required