Add @JsonIgnore to KB entity lazy collections and back-references
Prevents LazyInitializationException and circular serialization when returning KB entities via REST endpoints.
Add Knowledge Base entities, enums, repositories, and rights
- 4 new enums: KbArticleStatus, KbReviewStatus, KbMediaType, KbEmbeddingStatus - ServiceType.KNOWLEDGE_BASE(18) and 6 KB RoleRightType entries (21-26) - 6 JPA e...
Add findByProviderId query to AiModelRepository for model enable/disable
Use native query for markConversationRead to resolve Hibernate 6.2 type mismatch
CURRENT_TIMESTAMP in JPQL returns java.sql.Timestamp which doesn't match the Instant-typed updatedAt field. Native query with NOW() bypasses this.
Use database-level timestamps instead of Instant.now()
Replace all @Builder.Default Instant.now() and @PreUpdate methods with @CreationTimestamp(source=DB) and @UpdateTimestamp(source=DB) so the database is the sing...
Add email metadata entities and repositories
Migrate JPA entities and repos from EmailService to shared library so KamoInitializerService can manage all schemas via ddl-auto.
Add ChildOrgSecurityModel entity and link security models to roles
Add backend support for child organization security models with a many-to-many relationship to security roles via OrgRoleSecurityModel join entity. Includes ent...
Add abstract title fields to BranchTitleResolution
Add memberAbstract and teamMemberAbstract fields with defaults for the label customization system.
Split ageReqType into ageReqTypeMember and ageReqTypeTeamMember
Separate age requirement tracking for members vs team members in Organization entity.
Rename Employee to TeamMember and Employment to TeamMembership
Rename all Employee/Employment references to TeamMember/TeamMembership across classes, variables, methods, DB annotations, enum values, and display text. Also u...
Add BranchTitleResolution, resolveEffectiveBranchTitles, updateBranchTitles
Fetch parent message in same query to eliminate reply N+1
Alias m.msg and LEFT JOIN FETCH msg.parent so that threaded reply messages have their parent loaded in the initial query rather than triggering a separate SELEC...
Fix N+1 query and add composite index for chat message loading
- Add LEFT JOIN FETCH m.msg to both repository queries to eagerly load MediaObjMsg in the same query, eliminating up to 100 extra SQL queries per chat windo...
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...
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...
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...
Make commerce beans conditional on repository availability
Add **************** to EngagementLifecycle and CommerceService so they only load when commerce repositories are scanned. Prevents UnsatisfiedDependencyExceptio...
Allow app startup when NATS is unavailable
Remove @ConditionalOnBean from jetStream() and add @Nullable to the Connection parameter. When natsConnection() returns null (NATS unreachable), Spring no longe...
Add sessionTimeoutMinutes to all security DTOs and request objects
Add market_id FK to POS entities and market-filtered repository queries
Add market association (ManyToOne FK to CommerceMarket) to Offering, InventoryItem, RentalAsset, Vendor, and SubscriptionPlan entities. Add findByMarketId queri...
Add CommerceMarketService with full CRUD for markets, categories, and vendors
Add DTOs for commerce markets, vendor categories, and market vendors
Add repositories for commerce markets, vendor categories, and market vendors
Serialize POS DTO uid/id as string in JSON for JS safe integer
- RetailOrderDTO.uid, **************** EngagementDetailDTO.id/linkId, MortgageAppDTO.uid - Use @JsonSerialize(using = ToStringSerializer.class) to avoid precisi...
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.
