What's new in EzyPlatform 1.2.1?

This release improves the Admin Global Search experience, introduces a schema system for template parameters, expands CommonDataSchema capabilities, and enhances media file-name generation.
  1. New shortcut for opening Global Search in Admin
    Administrators can now open the Global Search bar by pressing Shift twice within 500ms. The existing shortcut Ctrl + Alt + Shift/Meta + Fremains fully supported. Pressing Escape continues to close the search bar when it is open.
  2. Introduced template-parameter schema support
    Added TemplateParametersSchema to describe template variables, general documentation, and extended metadata for templates. A new TemplateParametersSchema.VariableSchema model, extending CommonDataSchema, is available for describing individual template variables. This provides a structured and reusable way to document template parameters.
  3. Added TemplateParametersSchemaFetcher infrastructure
    Introduced TemplateParametersSchemaFetcher so modules and plugins can provide schema definitions for specific templateType and templateName combinations. Added TemplateParametersSchemaFetcherManagerto register, manage, and retrieve fetchers at runtime. The manager supports retrieving all fetchers or resolving a fetcher by template type and template name. When multiple fetchers are registered for the same template, the most recently registered fetcher takes precedence.
  4. Template schema managers integrated into Admin and Web
    Added AdminTemplateParametersSchemaFetcherManagerand WebTemplateParametersSchemaFetcherManager. Both managers are registered as singleton components, allowing admin and web plugins to access template parameter schemas directly.
  5. Expanded CommonDataSchema capabilities
    Added a new properties field for storing extended metadata. Introduced the static method CommonDataSchema.builder()and enhanced the builder to accept field collections containing subclasses of CommonDataSchema, making schema inheritance and reuse more convenient.
  6. Improved media file-name generation
    MediaService.generateMediaFileNamenow uses System.nanoTime()instead of System.currentTimeMillis()when generating unique file names. This reduces the probability of filename collisions when multiple media files are created within very short time intervals.