Alcohol/tobacco/firearms compliance policies
- CHILD_ORG_SECURITY_MODELS columns and entity defaults MEMBER_SELECT - DTO and ChildOrgSecurityModelService create/update normalization - AppliedModelEnforceme...
Upsert role rights in place to avoid Hibernate insert-before-delete duplicate key
Dedupe rights, no-op security models when locked, validate title length
Persist RoleRightType by stable getId() instead of ordinal
Hibernate @Enumerated(EnumType.ORDINAL) writes/reads the declaration-index of the enum. When a RoleRightType value is removed (e.g. MANAGE_USERS, id=19), every ...
Add unique constraint on (role_id, right_type) in OrgRoleRight
Required for ON CONFLICT DO NOTHING in **************** Without this constraint, the sync query fails with "no unique or exclusion constraint matching the ON CO...
Add Organization.isTopLevel, PaymentMethod.COMP, COMP_* event types; remove OrganizationType enum
- Organization: replace dead `type` field with `isTopLevel` flag for platform-owner identification - PaymentMethod: add COMP for complimentary platform-admin gr...
Add member-requestor support rights (133-136)
Adds four new SUPPORT-scoped rights for non-agent members: - **************** (133) - CREATE_SUPPORT_TICKET (134) - REQUEST_WEBINAR (135) - VIEW_MY_SCHEDULED_WE...
Make role rights DTOs enum-driven and add security model rights sync
- SecurityRoleDTO.fromOrgRole(): enumerate all RoleRightType values with DB settings as lookup — new rights appear with NOT_SPECIFIED automatically - ********...
Add native updateMemberType and ensureTeamMemberRow queries to MemberRepository
Add findByIdWithFeatures to eagerly load Organization.features
JOIN FETCH prevents LazyInitializationException when features are accessed outside a transaction (e.g. in AppAvailabilityInterceptor).
**************** uses instanceof for MEMBER type
Hibernate TYPE(m) = :type returns 0 results when bound to the base Member class in JOINED inheritance. For MEMBER type, fetch all and filter with !(m instanceof...
Add senderName to ChatMessageDto for support chat display names
Add logoFullExt field to Organization entity; add listObjects to MinIOStorageService
Add findByBranchTypeID derived query to OrganizationRepository
Supports the new /branch-types/{id}/usages endpoint in SecurityService for checking whether a branch type has active child orgs before deletion.
Add pending count field to SupportAgentNotificationDTO and count query to SupportTicketRepository
Member-type gate + CREATE_CHILD_ORG right for child-org creation
Adds the data layer for gating /network child-org creation by member type: - New CREATE_CHILD_ORG right on RoleRightType (id 131). - Three new boolean columns ...
AppConfig replace is upsert-only, never deletes on payload absence
The previous behavior deleted any existing app-config row whose ServiceType wasn't in the incoming payload. That turned partial payloads into silent data-loss: ...
Effective-feature resolver for applied-model read-time gating
Adds the read-time gate that makes the applied security model the final source of truth for feature availability, so stale DB state can't leak a disabled featur...
Add ImgAssocConfig entity, repository, and sortOrder to ImgStackingOrderDt
Enforce every non-role setting on ChildOrgSecurityModel
Adds end-to-end enforcement for the remaining settings on an org's applied security model. Every setting that was previously only read (or dropped on save) now ...
Apply template force rules and DEFAULT fallback to member rights resolution
**************** now overlays the applied model's 4 default-role templates on top of the existing cascade (org roles → department → job title → member): - Role...
Add master model, default role templates, and applied-model resolver
Introduces the data layer for the new branch-type security model flow: - Organization gains nullable branchTypeID and masterModelID columns. - New RoleRightTem...
Expand ChildOrgSecurityModelDTO with full fields and branchTypes
Rewrite all canonical templates with full branded design
All 5 templates now use the consistent outer table structure (600px, rounded card, gray header/footer) matching the block editor's serializeFullEmailHtml output...
Remove @Enumerated — RoleRightTypeConverter autoApply takes over
Add 11 new rights (119-129) and CALCULATOR service type
MANAGE_CRM_SETTINGS, VIEW_TASKS, CALC_SIMPLE, CALC_SCIENTIFIC, CALC_PROGRAMMER, CALC_GRAPHING, CALC_UNIT_CONVERTER, CALC_CURRENCY_CONVERTER, CALC_EMOJIS, CALC_C...
Add WELCOME_MEMBER and WELCOME_TEAM_MEMBER canonical email templates
Add 7 module-access rights (IDs 112-118)
ACCESS_COMMERCE, VIEW_CALENDAR, ACCESS_CHAT, ACCESS_MAIL, ACCESS_VOIP, VIEW_SUPPORT, VIEW_ANALYTICS
Improve email verification template — URL fallback, expiry text, subject
- Add plain-text verification link below button as copy-paste fallback - Switch expiry variable from {{expiryMinutes}} to {{expiryText}} for human-readable fo...
Add branded outer frame to email-verification canonical template
Wraps inner content with a proper email shell: header with org name, padded content area, and footer. Uses {{orgName}} as the identifier.
Remove eager feature-loading from getOrganizationByDomain
Features are an org-level concern unrelated to most callers of this method (e.g. registration, login domain resolution). Force-loading them via setFeatures() re...
Mutate features collection in-place to avoid cascade orphanRemoval error
Calling org.setFeatures(newList) replaces the Hibernate-tracked persistent collection, causing JpaSystemException when any query triggers auto-flush in an open ...
Add DEFAULT false to email_verified column definition
Hibernate's schema migrator generates ALTER TABLE without a default, failing on tables with existing rows. columnDefinition forces it to include DEFAULT false s...
Add EmailVerificationToken entity + repo + User.alias/emailVerified + UserRepo queries; bump 1.4.0 (SP4)
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.
