From 4df72056113c13a11e018aa07a70be4a945cdfec Mon Sep 17 00:00:00 2001 From: Alquen Sarmiento Date: Tue, 21 Apr 2026 12:01:03 +0800 Subject: [PATCH 1/3] feat: add video and audio bulk optimization --- src/admin/class-meta-box.php | 5 ++++- src/admin/js/media-manager/sidebar-info.js | 3 ++- src/shared/converters/image-converter.js | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/admin/class-meta-box.php b/src/admin/class-meta-box.php index ef40c66..54e5084 100644 --- a/src/admin/class-meta-box.php +++ b/src/admin/class-meta-box.php @@ -132,6 +132,7 @@ function cimo_get_media_type_label( $mimetype ) { $converted_format_raw = isset( $cimo['convertedFormat'] ) ? $cimo['convertedFormat'] : ( isset( $post->post_mime_type ) ? $post->post_mime_type : '' ); $converted_format = $converted_format_raw ? cimo_convert_mimetype_to_format( $converted_format_raw ) : ''; $media_type_label = cimo_get_media_type_label( $converted_format_raw ); + $is_image_media = is_string( $converted_format_raw ) && strpos( strtolower( $converted_format_raw ), 'image/' ) === 0; $converttime = isset( $cimo['conversionTime'] ) ? floatval( $cimo['conversionTime'] ) : null; if ( $converttime !== null ) { if ( $converttime < 1000 ) { @@ -207,7 +208,9 @@ function cimo_get_media_type_label( $mimetype ) { echo '
  • '; echo '🏞️ ' . sprintf( /* translators: %s: bulk optimization count */ - esc_html__( '%s thumbnail(s) processed', 'cimo-image-optimizer' ), + $is_image_media + ? esc_html__( '%s thumbnail(s) processed', 'cimo-image-optimizer' ) + : esc_html__( '%s file(s) processed', 'cimo-image-optimizer' ), '' . esc_html( $bulk_optimization_count ) . '' ); echo '
  • '; diff --git a/src/admin/js/media-manager/sidebar-info.js b/src/admin/js/media-manager/sidebar-info.js index 65ca224..7e05d26 100644 --- a/src/admin/js/media-manager/sidebar-info.js +++ b/src/admin/js/media-manager/sidebar-info.js @@ -118,6 +118,7 @@ function injectCimoMetadata( { const convertedFormatRaw = customMetadata.convertedFormat || model.get( 'mime' ) || '' const mediaTypeLabel = getMediaTypeLabel( convertedFormatRaw ) + const isImageMedia = typeof convertedFormatRaw === 'string' && convertedFormatRaw.startsWith( 'image/' ) let html = `
    @@ -185,7 +186,7 @@ function injectCimoMetadata( { if ( isBulkOptimized ) { html += `
  • - 🏞️ ${ escape( Object.keys( customMetadata.bulk_optimization ).length.toString() ) } thumbnail(s) processed + 🏞️ ${ escape( Object.keys( customMetadata.bulk_optimization ).length.toString() ) } ${ escape( isImageMedia ? 'thumbnail(s) processed' : 'file(s) processed' ) }
  • ⚡️ Bulk optimized diff --git a/src/shared/converters/image-converter.js b/src/shared/converters/image-converter.js index 13a838f..e807602 100644 --- a/src/shared/converters/image-converter.js +++ b/src/shared/converters/image-converter.js @@ -318,7 +318,7 @@ class ImageConverter extends Converter { return { file, metadata: null, - reason: 'resulting-image-bigger-than-input', + reason: 'resulting-media-bigger-than-input', error: `Resulting image is bigger than the input (input: ${ file.size } bytes, output: ${ convertedBlob.size } bytes), skipping conversion.`, } } From 41f32c5c9c69966008bce47dc934c52392e25875 Mon Sep 17 00:00:00 2001 From: Alquen Sarmiento Date: Mon, 25 May 2026 10:42:50 +0800 Subject: [PATCH 2/3] fix: do not display if invalid optimizationSavings --- src/admin/class-meta-box.php | 6 ++++++ src/admin/js/media-manager/sidebar-info.js | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/src/admin/class-meta-box.php b/src/admin/class-meta-box.php index 54e5084..67a3056 100644 --- a/src/admin/class-meta-box.php +++ b/src/admin/class-meta-box.php @@ -123,6 +123,12 @@ function cimo_get_media_type_label( $mimetype ) { $optimization_savings = number_format( 100 * ( $original_filesize - $converted_filesize ) / $original_filesize, 2 ); } + // If optimization savings is not a valid number or is negative, do not display it + if ( ! is_numeric( $optimization_savings ) || floatval( $optimization_savings ) < 0 ) { + echo '

    ' . esc_html__( 'Cimo did not optimize this attachment.', 'cimo-image-optimizer' ) . '

    '; + return; + } + $kb_saved = cimo_format_filesize( $original_filesize - $converted_filesize, 1, true ); $optimization_savings_class = ( $optimization_savings > 0 ) ? 'cimo-optimization-savings-up' : 'cimo-optimization-savings-down'; diff --git a/src/admin/js/media-manager/sidebar-info.js b/src/admin/js/media-manager/sidebar-info.js index 7e05d26..71b754f 100644 --- a/src/admin/js/media-manager/sidebar-info.js +++ b/src/admin/js/media-manager/sidebar-info.js @@ -136,6 +136,15 @@ function injectCimoMetadata( { ? ( 100 - ( customMetadata.compressionSavings * 100 ) ).toFixed( 2 ) : ( 100 * ( originalFilesize - convertedFilesize ) / originalFilesize ).toFixed( 2 ) + // If optimizationSavings is not a valid number or is negative, do not display it + if ( + optimizationSavings === 'NaN' || + ! Number.isFinite( Number( optimizationSavings ) ) || + Number( optimizationSavings ) < 0 + ) { + return + } + const kbSaved = formatFilesize( originalFilesize - convertedFilesize, 1, From 9bbf84b1ce782e0d27838e7463e23bc438e7e5c5 Mon Sep 17 00:00:00 2001 From: Alquen Sarmiento Date: Mon, 25 May 2026 10:45:30 +0800 Subject: [PATCH 3/3] fix: bulk image optimzation to just bulk optimzation --- src/admin/js/page/admin-settings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/admin/js/page/admin-settings.js b/src/admin/js/page/admin-settings.js index 270f000..2f0642d 100644 --- a/src/admin/js/page/admin-settings.js +++ b/src/admin/js/page/admin-settings.js @@ -614,7 +614,7 @@ const AdminSettings = () => { - { __( 'Bulk Image Optimization', 'cimo-image-optimizer' ) } + { __( 'Bulk Optimization', 'cimo-image-optimizer' ) } { buildType === 'free' && (