What's new in EzyPlatform 1.1.7?

This release introduces media grouping, optimizes keyword-based media search, improves access-token security, and expands URL utility functions.
  1. Added media grouping with groupName
    Introduced the groupName field for media through the group_name column in the ezy_medias table. Media listing APIs for admin, admin-me, and web now support filtering by groupName, groupNamePrefix, and ungrouped. Media list and detail responses now also return group information. The admin media update form includes a new Group Name field, while media lists and media-selection modals support searching by group-name prefix.
  2. Optimized media search with keyword indexing
    Added AdminMediaIndexAppender to automatically build keyword indexes for media. Keywords are extracted from fields such as originalName, groupName, title, caption, and alternativeText. Media keyword-prefix searching now uses DataIndex instead of searching directly on originalName, resulting in better performance.
  3. Enhanced access-token generation security
    Added the SecureRandomHashGenerators utility for safer random hash generation. AccessTokens.generateAccessToken now generates tokens using SecureRandom combined with SHA-256 instead of the previous UUID + currentTimeMillis approach. Additionally, AccessTokens.extractSourceIdwas improved to handle null or short tokens more safely.
  4. Added new URL utilities
    Introduced new URL helper methods: Uris.isSameOriginOrRelative, Uris.toRelativeUrl, Uris.getPort, and Uris.normalizeUrl. These utilities provide more flexible URL processing and normalization capabilities.
  5. Performance improvements and system optimizations
    displayOrder in DataMappingwas changed from int to long to support larger values. New indexes were added to the ezy_data_mappings table to optimize queries in both from → to and to → from directions. Additionally, a mapping issue for remainingQuantityin DefaultEntityToModelConverterwas fixed, where it previously used quantity incorrectly.
  6. Configuration updates and UI improvements
    The isAdminAccessTokenHttpOnlysetting was moved into SettingServiceso it can be shared instead of being limited to AdminSettingService. The default value of allowSearchMediaByLikeOperatorwas changed from true to false, prioritizing keyword-index searching. Additionally, Numbers.toLongOrZeroFromObjectwas made public for reuse, and the scroll container height of .max-height-85vn-scrollwas increased from 75vh to 85vh for a better user experience.