Expand CommerceMarketController with nested market-centric endpoints
Replace flat POS endpoints with market-scoped REST hierarchy: - Products, inventory, vendor categories under /{marketId}/products, /inventory, /vendor-categorie...
Include memberType, departmentId/Title, jobTitleId/Title in member profile GET response
Add LeadStatusLabelController for org-level CRM status label CRUD endpoints
Add department and job title assignment to member security endpoint
GET now returns departmentId/Title and jobTitleId/Title for team members. PUT accepts departmentId and jobTitleId to assign/unassign department and job title, w...
Sync social links to normalized social_links table
Write member social links to both the embedded EmbSocialLinks columns (backward compat) and the new normalized social_links table. Add socialLinksNormalized to ...
Rewrite MemberSecurityController as singleton config with roles, direct rights, session timeout
GET returns full member security config (associated roles, direct rights, session timeout override, applied rights with sources). PUT saves the entire config as...
Add MemberSecurityController for member role assignment and applied rights
Provides GET /member-security/{id} (assigned role, applied rights with sources, session timeout), PUT /member-security/{id}/role, and DELETE /member-security/{i...
Allow members to view their own account activity without VIEW_ACCESS_LOGS permission
Support internal service auth for subscription catalog and promotions endpoints
Add X-Internal-Auth + X-Public-Chat-Org-Id header validation so APIService can proxy public catalog requests to the subscription endpoints. Session auth still w...
Align POSController subscription endpoints with SubscriptionService signatures
Add subscription API endpoints to POSController (50+ endpoints)
Add complete enterprise subscription management endpoints covering plans, prices, features, add-ons, bundles, volume discounts, catalog, orders, subscriptions, ...
Query avatar_photos extension via SQL instead of Hibernate proxy
avatarRepository.findById() returns a Hibernate proxy (Avatar$HibernateProxy) that fails instanceof AvatarPhoto check. This caused the file extension to always ...
Use correct table name 'avatars' instead of 'avatar' in session SQL query
Store full avatar relative path in session instead of bare file hash
The login SQL now also fetches avatar_type and file_extension from avatar_photos so the session stores a complete relative path like **************** or *******...
Add first name, last name, and avatar hash to *** session
Include memberFirstName, memberLastName, and memberAvatarUrl in Redis session data so cross-domain services like KamoMeet can display proper user identity witho...
Auto-provision completed-stage app features in org domain endpoint
Moves auto-provisioning from the FeatureController (only hit from the apps settings page) to the SecurityController org domain endpoint (hit on every page load ...
Auto-provision missing completed-stage app features for existing orgs
When listing features, the controller now checks for missing OrgFeature rows for COMPLETED-stage apps and creates them. This ensures orgs created before new app...
Catch all exceptions in FeatureController enable/disable endpoints
Prevents uncaught RuntimeExceptions from becoming opaque 500 errors. Now returns structured error messages for any failure.
Prevent duplicate apps in features list by excluding all existing types
The available list was only excluding features with enabled=true, so a disabled feature (isActive=false) appeared in both the features array AND the available a...
Auto-refresh Redis session rights after feature/role changes
FeatureController and SecurityRoleController now rebuild the caller's session rights in Redis after enable/disable, role create/update/delete, and recalculate-r...
Add FeatureController for org app enable/disable management
REST endpoints for managing organization app features: GET features list, POST enable/disable with CONFIGURE_SYSTEM permission check, root-org-only gating for i...
Add POST **************** endpoint
Triggers org-wide member_rights_applied recalculation. Needed after schema migrations or manual DB changes to permissions.
Use targeted role-scoped rights recalculation
SecurityRoleController now uses updateRoleMemberRightsApplied() to only recalculate members who have the modified role, instead of recalculating all members in ...
Recalculate member_rights_applied after role create/update/delete
The member_rights_applied table was never recalculated when roles were modified, causing all members to have 0 applied rights. Now calls **************** after ...
Rebuild with updated shared library containing support permissions
SecurityService needs the new ACCEPT_SUPPORT_TICKETS and MANAGE_SUPPORT entries in RoleRightType enum to include them in *** session rights.
Enforce role protection flags and add parent label support to session
- Enforce isAllowEditSecurity in SecurityRoleController update endpoint - Add parentMemberTitlePlural and parentTeamMemberTitlePlural to *** session - Resolve p...
Remove notes code, moved to KBService
Notes management (controller, service, encryption) has been relocated to KBService where it better aligns with knowledge and content management responsibilities...
Transparent server-side encryption with stable master key
- Add permanent notes.master-encryption-key to ConfigMap (was generating a random key on each pod restart, making old notes undecryptable) - Always encrypt ...
Clear undecryptable note content and disable encryption flag
When server-side decryption fails (corrupted data or key mismatch), clear the content and set isEncrypted=false on the entity so the note stops showing cipherte...
Decrypt encrypted notes in getAllNotes and searchNotes responses
getAllNotes and searchNotes were returning raw encrypted content for notes with isEncrypted=true. Now decrypts content server-side before returning, matching th...
Support multi-size photo avatar uploads and crop endpoint
Update uploadPhotoAvatar to accept optional sized variants (fileSm, fileMd, fileLg) stored with suffix naming ({hash}_sm.png, etc). Add PUT /{id}/crop endpoint ...
Rebuild with updated shared library (NoteDTO string ID serialization)
Use OTKPreAuthFilter attributes instead of re-validating OTK in NotesController
The OTKPreAuthFilter already consumes and validates the OTK, storing the session data in request attributes. NotesController was trying to re-validate the alrea...
Remove GD check from ****************
The sed command that added the god-mode bypass incorrectly inserted it into all methods containing sessionData, not just hasRight. This caused 'return true' (bo...
Allow god-eligible users to bypass access security permission checks
New rights (MANAGE_ACCESS_RULES, VIEW_ACCESS_LOGS, etc.) aren't granted to any existing role yet, so all users get Forbidden. God-eligible users (GD=true in ses...
Add access security system backend
8 new services (AccessCacheService, GeoLiteService, GeoLiteSyncService, AccessRuleService, GeoBlockService, AccessLogService, DetectionRuleService, SuspiciousDe...
Resolve remaining Long/UUID type mismatches in controllers and beans
Fixes LeadVendorController, LeadMarketController, LeadImportController, ImagingController, AccountController, MediaStreamController, POSController, MemberContro...
Update controllers and services for UUID entity IDs
Updates all controller @PathVariable and service method signatures to use UUID instead of Long for internal entity IDs (avatars, backgrounds, roles, departments...
Stub CalendarIntegration usages in preparation for Part 1 shared-library deploy
Add website and social links to member profile GET/PUT endpoints
GET /api/security/members/{id} now returns website and socialLinks fields. PUT /api/security/members/{id} accepts website (string) and socialLinks (map of platf...
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.