Auto-open chat window when receiving messages from another user - unminimize if minimized, open if closed
Add EXTENSIVE logging to WebSocketConfig and ChatWebSocketController - every STOMP frame, handshake, subscription, and message logged
Add EXTENSIVE logging to useChatWebSocket hook and ChatBox component - every single step logged
Create welcome presentation page with feature cards
- Added full logo display at top left using ThemeLogo component - Created modern, polished welcome page with feature cards grid - Each feature card includes ico...
Add custom forms support to markets - Add MarketCustomForm entity for many-to-many relationship with ordering - Update LeadMarket to include customForms relationship - Add MarketCustomFormRepository - Update LeadMarketDTO to include custom forms - Update request DTOs to support custom form associations - Add service methods for managing custom form associations
Add comprehensive custom forms builder with drag-and-drop
- Update CRM page: Change tab name from "Custom Online Forms" to "Custom Forms" - Add CustomFormManager component for form list/browse with create/edit/delete -...
Add CustomFormController for custom forms API endpoints
- Add REST controller at /api/security/custom-forms - Implement GET, POST, PUT, DELETE endpoints for form management - Support form structure with stacks and fi...
Add custom forms feature with form builder support
- Add FormFieldType enum with 12 field types (TEXT, TEXT_AREA, MONEY, DATE, DATE_TIME, DROPDOWN, RADIO, LIST, CHECKBOX, ADDRESS, US_SSN, US_STATE) - Add entity ...
Improve mobile navigation with clickable page elements (#3770)
Fully wire vendors-products page with modern UI, full CRUD for vendors and products
Add LeadVendorController with full CRUD for vendors and products
Add full CRUD support for LeadVendor and LeadVendorProduct with String IDs
Add Next.js API routes for lead-markets to proxy to SecurityService
Add LeadMarketController for managing lead markets via REST API
Add LeadMarket entity, repository, service, and DTOs for CRM markets management
Rebuild LeadMarketManager UI component with modern design and API integration
Add CRM settings page with Markets & Fields, Vendors & Products, Manual Lead Imports, and Integrated Lead Imports tabs
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...
Add streamGuid field to Organization for organization-wide media feed
Add LIKE enum value to MediaBlockReasonType for social media likes
Create reusable MediaStream component and lead communications
- Created reusable MediaStream component for all media stream contexts - Refactored FeedTimeline to use MediaStream component - Created LeadCommunications compo...
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 ***************...
Modernize social media feed design with hip, polished styling
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...
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 endp...
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 w...
Add filter header to Members & Subscribers tab with all column filters aligned
Add filter header to EmployeeManager datagrid with employment status and other filters
Update EmployeeManager with backend integration and add account API routes
Add AccountController with endpoints for Members & Subscribers and Employees & Contractors
Add MemberType enum and memberType field to Member entity for efficient database queries
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
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 att...
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 -...
Add Manage Backgrounds button in MemberHeader
- Added handleManageBackgroundsClick prop to MemberHeader - Added Manage Backgrounds button next to URL input when custom background is enabled - BackgroundMana...
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...
Include avatar URLs in member profile response
- Added helper methods to generate avatar URLs (getThemeDomain, getPublicBucketName, generateFileHash, getPublicBucketUrl, generateAvatarUrl) - Updated getMembe...
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 fallba...
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) -...
Implement hash-based file storage for avatars
- Generate SHA-256 hash from avatar ID after persistence - Store hash in database fileHash field - Upload files to MinIO using hash-based naming: {hash}.{fileEx...
Add fileHash field to Avatar entity for secure file storage
- Add fileHash column to store SHA-256 hash of avatar ID - Hash is used for MinIO file naming to prevent enumeration attacks - Format: {hash}.{fileExtension} in...
Rebuild avatar UI - modern, interactive, polished. Backend returns URLs directly
Rebuild avatar system - backend generates presigned URLs directly like backgrounds
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.