Releases: webkinder/sproutset
Releases · webkinder/sproutset
v0.1.0-beta.9
Added
- Scheduled re-optimization of edited attachments when unoptimized sizes are detected on metadata updates by @marcoluzi in #206
Fixed
- Show edited image preview when focal point UI is opened for attachments with edits by @marcoluzi in #206
- Remove orphaned WordPress image edit files when restoring originals to keep uploads clean by @marcoluzi in #206
Changed
- Cleared optimization markers more granularly for edited vs. restored images and streamlined cron scheduling arguments by @marcoluzi in #206
v0.1.0-beta.10
Fixed
- Apply
object-fit: coverto cropped image srcset variants when any target exceeds source dimensions by @marcoluzi in #209
v0.1.0-beta.8
Fixed
- Prevented WordPress from adding the
auto,sizes prefix whenuse-auto-sizesis disabled on the Image component by @marcoluzi in #188 - Ensured the Image component outputs
loading="eager"whenuse-lazy-loadingis set to false by @marcoluzi in #189
Changed
- Refactored Image component attribute handling to normalize loose input types via a shared normalizer and merge classes from the attribute bag by @marcoluzi in #187
- BREAKING: Changed Image component to use standard HTML
loadingattribute instead ofuse-lazy-loadingboolean by @marcoluzi in #190 - BREAKING: Changed Image component to use standard HTML
decodingattribute instead ofdecoding-modeboolean by @marcoluzi in #190
v0.1.0-beta.7
Added
- Added
use-auto-sizesflag on the Image component to allow opting out of the automaticauto,prefix on thesizesattribute @marcoluzi in #184
Fixed
- Normalized boolean handling for component attributes (e.g.,
use-auto-sizes="false") to correctly interpret string, int, and bool inputs @marcoluzi in #184
v0.1.0-beta.6
Added
- Added support for arbitrary HTML attributes in Image component by @marcoluzi in #179
- Updated
normalizeId()to accept bothintand numericstringfor attachment IDs by @marcoluzi in #179
Fixed
- BREAKING: Renamed Image component
idparameter toattachmentIdto avoid collision with HTMLidattribute by @marcoluzi in #179
v0.1.0-beta.5
Fixed
- Fixed caching collision issue in Image component where
altandsizesattributes were incorrectly cached from the first instance by @marcoluzi in #155 - Fixed
isSvgstate not being persisted in Image component cache by @marcoluzi in #155
v0.1.0-beta.4
Added
- Added focal point cropping support and configuration (
focal_point_cropping,max_on_demand_generations_per_request) powered byspatie/image, including focal-aware rendering in theImagecomponent by @marcoluzi in #129 - Added WordPress media focal point UI (drag handle + X/Y fields), updated translations, and
sproutset:reapply-focal-cropCLI command to reapply focal crops (optionally with optimization) by @marcoluzi in #129
Changed
- Changed cron-based optimization and focal recropping to use the shared
CronSchedulerhelper and updatedCronOptimizerlogic by @marcoluzi in #129
v0.1.0-beta.3
Added
- Added
ReleaseandOthertypes to PR template by @marcoluzi in #112 - Added logic to handle SVG attachments by @marcoluzi in #116
- Added helper class for normalizing image size configurations by @marcoluzi in #118
- Added
normalizeImageSourceDatamethod toImagecomponent by @marcoluzi in #118 - Added configurable image size synchronization strategy and
sproutset:sync-image-sizesCLI command by @marcoluzi in #119 - Added check for image file type before rendering component by @marcoluzi in #121
Changed
- Updated contributing guidelines to better explain merge strategies by @marcoluzi in #112
- Updated PR template to include changes to merge strategy by @marcoluzi in #112
- Changed WordPress version requirement to ^5.9 || ^6.0 by @marcoluzi in #120
- Refined image size option synchronization to use a
SyncStrategyenum and avoid unnecessary work on frontend requests by @marcoluzi in #119
v0.1.0-beta.2
Added
- Added validation for required WordPress image sizes (
thumbnail,medium,medium_large,large) in configuration by @marcoluzi in #88 - Added automatic synchronization of image size configurations from config file to WordPress database options by @marcoluzi in #88
- Added readonly/disabled styling and attributes to media settings fields in WordPress admin by @marcoluzi in #88
- Added in-request caching to the
Imagecomponent to boost performance by preventing redundant processing for identical images on the same page load by @marcoluzi in #102 - Added
ConfigurationValidatormanager class for config validation by @marcoluzi in #104 - Added
TextDomainManagermanager class for i18n text domain loading by @marcoluzi in #104 - Added
ImageSizeManagermanager class for image size registration and filtering by @marcoluzi in #104 - Added
AdminNotificationManagermanager class for admin notices and UI by @marcoluzi in #104 - Added
OptimizationManagermanager class for optimization features by @marcoluzi in #104 - Added automatic
object-fit: coverinline style when images are smaller than configured dimensions by @marcoluzi in #104
Fixed
- Fixed dimension detection to prioritize configured dimensions over actual image dimensions by @marcoluzi in #104
- Fixed responsive image behavior to prevent stretching on small screens by @marcoluzi in #104
- Fixed
sizesattribute generation to use actual image width for optimal browser selection by @marcoluzi in #104 - Fixed an issue where WP Media Folder plugin threw errors due to missing core image size labels by @marcoluzi in #108
Changed
- Changed conditional logic in
Imagecomponent to usein_array()for better readability by @marcoluzi in #88 - Changed Node.js version to 24 by @renovate[bot] in #98
- Changed README.md to update image component syntax in documentation by @marcoluzi in #103
- Changed the
Imagecomponent by refactoring its internal logic into smaller, single-responsibility methods, improving maintainability and adherence to SOLID principles by @marcoluzi in #102 - Changed the
Imagecomponent to more accurately calculate aspect ratios and dimensions, ensuring images never exceed their original size and correctly handle crop/non-crop settings by @marcoluzi in #102 - Changed
Sproutsetclass architecture to use focused manager classes following SOLID principles by @marcoluzi in #104 - Changed all code to follow self-documenting principles with descriptive naming by @marcoluzi in #104
- Changed PHPDoc usage to only include when adding value beyond code by @marcoluzi in #104
- Changed README.md structure by @marcoluzi in #104
- Changed CONTRIBUTING.md structure by @marcoluzi in #104
v0.1.0-beta.1
Added
- Added Sproutset service provider and service by @marcoluzi in #51
- Added rector to pre-commit formatting by @marcoluzi in #72
- Added image size management system with configuration by @marcoluzi in #73
- Added image size registration logic with srcset variant support by @marcoluzi in #73
- Added
show_in_uioption to control image size visibility in WordPress media selector by @marcoluzi in #73 - Added post type filtering for conditional image size generation by @marcoluzi in #73
- Added
config/sproutset-image-sizes.phpconfiguration file by @marcoluzi in #73 - Added
roots/wordpress-no-content(6.8.3) as dev dependency by @marcoluzi in #73 - Added
ImageBlade component (<x-sproutset-image>) for responsive image rendering with automatic srcset generation by @marcoluzi in #74 - Added automatic on-demand image size generation when missing sizes are requested by @marcoluzi in #74
- Added admin notice on WordPress media settings page to inform users about Sproutset configuration by @marcoluzi in #74
- Added
convert_to_avifconfiguration option for automatic AVIF image conversion by @marcoluzi in #79 - Added automatic AVIF conversion for JPEG and PNG images via
image_editor_output_formatfilter by @marcoluzi in #79 - Added
auto_optimize_imagesconfiguration option to control automatic image optimization by @marcoluzi in #86 - Added
sproutset:optimizeCLI command for manual image optimization with progress tracking by @marcoluzi in #86 - Added
ImageOptimizerservice for optimizing images using multiple optimization binaries by @marcoluzi in #86 - Added
CronOptimizerservice for background image optimization via WordPress cron by @marcoluzi in #86 - Added automatic image optimization on upload when
auto_optimize_imagesis enabled by @marcoluzi in #86 - Added automatic optimization for on-the-fly generated image sizes by @marcoluzi in #86
- Added admin notice for missing optimization binaries in development/staging environments by @marcoluzi in #86
- Added optimization status tracking in attachment metadata with hash verification by @marcoluzi in #86
- Added i18n support with translations for DE, FR and IT locales by @marcoluzi in #87
Fixed
- Fix PHP 8.2 compatibility by removing typed class constants in CronOptimizer by @marcoluzi in #93
Changed
- Changed Rector configuration to automatically remove unused imports by @marcoluzi in #89
- Changed Rector configuration to remove
strictBooleansrule from preparation rules by @marcoluzi in #89 - Changed pint to use parallel processing by @marcoluzi in #72
- Changed pint configuration by @marcoluzi in #72
- Changed
Sproutsetclass to readonly with image management functionality by @marcoluzi in #73 - Changed
Sproutsetconstructor to remove unused$appparameter by @marcoluzi in #74 - BREAKING: Changed configuration file from
sproutset-image-sizes.phptosproutset-config.phpby @marcoluzi in #79 - BREAKING: Changed config structure to nest image sizes under
image_sizeskey by @marcoluzi in #79 - Changed all config references from
sproutset-image-sizestosproutset-config.image_sizesby @marcoluzi in #79 - Changed service provider to publish
sproutset-configinstead ofsproutset-image-sizesby @marcoluzi in #79 - Changed package license to GPL-3.0-or-later by @marcoluzi in #92
- Changed PHP version requirement from
~8.4.0to^8.2in composer.json by @marcoluzi in #93 - Changed
roots/wordpress-no-contentfrom dev dependency to regular dependency by @marcoluzi in #93 - Changed issue templates to remove emojis and simplify formatting by @marcoluzi in #93
- Changed CONTRIBUTING.md to update coding guidelines and remove outdated references by @marcoluzi in #93
- Changed README.md with comprehensive documentation including installation, configuration, and usage examples by @marcoluzi in #93
Removed
- Remove ESLint configuration and dependencies by @marcoluzi in #93
- Remove Prettier Blade plugin by @marcoluzi in #93
- Remove
.blade.format.jsonconfiguration file by @marcoluzi in #93 - Remove
.prettierrc.jsonconfiguration file by @marcoluzi in #93 - Remove
eslint.config.mjsconfiguration file by @marcoluzi in #93 - Remove
translate:jsnpm script by @marcoluzi in #93 - Remove Blade-specific formatting from lint-staged configuration by @marcoluzi in #93