Repository navigation
Releases: vigdigital/vig-image-optimizer
Releases · vigdigital/vig-image-optimizer
Release list
v2.0.0
v1.9.4
fix: gỡ file rác macOS "Icon\r" khỏi repo/zip → hết lỗi update "Could…
v1.9.3
fix: upload trùng tên bị ĐÈ file cũ khi đổi đuôi (webp / png→jpeg) Task #153: upload abc.png trùng tên → đè mất ảnh cũ thay vì đổi tên như WP. Nguyên nhân: WP wp_unique_filename chỉ chống trùng theo đuôi ĐANG upload (.png). Khi plugin convert sang .webp (hoặc .jpg), file đích .webp KHÔNG được WP dedup → $editor->save() ghi đè abc.webp đã có từ lần convert trước. Tái hiện: upload abc.png 2 lần (webp mode) → cả 2 attachment cùng trỏ abc.webp, lần 2 đè nội dung lần 1. Sửa: helper unique_target() gọi wp_unique_filename() cho ĐUÔI MỚI trước khi ghi → abc.webp có sẵn thì thành abc-1.webp. Áp cho cả nhánh WebP lẫn PNG→JPEG. Nhánh giữ-đuôi (bulk ảnh cũ, keep_ext) không đụng. Test cb.local: upload abc.png×2 (webp) → abc.webp + abc-1.webp, file1 giữ nguyên nội dung (không bị đè); png→jpeg tương tự không đè. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
v1.9.2
fix: filesize() trả số CŨ sau khi Imagick ghi file (thiếu clearstatca…
v1.9.1
fix: selftest báo động giả 34% — đổi sang đo LỆCH ĐỘ SÁNG Chạy thử trên 272 ảnh thật của khách (Dream Wedding, tháng 8/2025) phát hiện selftest v1.7.0 chấm SAI: 92/272 ảnh (34%) bị gắn "BẤT THƯỜNG" dù hoàn toàn bình thường. Nguyên nhân: thước đo cũ dùng "lệch 1 pixel cao nhất". Với JPEG nén lại ở q82, một pixel ở cạnh sắc nét có thể nhảy rất mạnh mà mắt không thấy. Đo trên 272 ảnh thật: ảnh BÌNH THƯỜNG lệch tới 101/255 — trong khi lỗi colorspace thật chỉ tạo lệch 30/255 ⇒ hai vùng CHỒNG LẤN, không phân biệt được. Thay bằng LỆCH ĐỘ SÁNG TRUNG BÌNH (+ lệch trung bình mỗi kênh). Hiệu chỉnh trên chính 272 ảnh đó: ảnh bình thường : lệch sáng ≤ 0.50% (p90: 0.16%) lỗi thật : lệch sáng 15.96–28.75% Ngưỡng 3% nằm giữa, cách vùng sạch 10x và vùng lỗi 5x. Kiểm chứng lại: 0/272 báo động giả; fault injection (-30/255) vẫn bị bắt đủ 6/6. 'max_diff' vẫn hiển thị để tham khảo nhưng KHÔNG dùng chấm đạt. Kết quả tối ưu thực tế trên 272 ảnh gốc: 338 MB → 202 MB (-40.2%); riêng PNG 24 MB → 4 MB (-81.7%), lệch sáng tối đa 0.33%. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
v1.9.0
feat: đặt lại trạng thái sau khi restore media + tách settings thành …
v1.8.0
feat: chọn phạm vi tối ưu — theo thư mục năm/tháng hoặc đúng 1 ảnh Sau sự cố Dream Wedding (chạy 4000 ảnh một lượt), bổ sung cách chạy từng phần để thử trước rồi mới mở rộng: - Chọn thư mục media YYYY/MM: select trong admin (kèm số ảnh chưa tối ưu từng thư mục) + `wp vig-imgopt bulk --folder=2025/03`. - Chạy thử đúng 1 ảnh theo ID: ô nhập trong admin + `wp vig-imgopt bulk --id=123 [--force]`. Ảnh đã tối ưu sẽ báo bỏ qua, --force để chạy lại. - `wp vig-imgopt folders`: liệt kê thư mục + số ảnh tổng/chưa tối ưu. An toàn: clean_folder() chỉ nhận đúng dạng YYYY/MM (chặn path traversal); folder không hợp lệ thì BÁO LỖI thay vì âm thầm chạy toàn bộ thư viện — đúng cái bẫy đã gây ra sự cố. Sửa kèm: docblock của lệnh `bulk` bị bỏ mồ côi khi thêm `selftest` ở v1.7.0 → `bulk` mất phần help của --resize/--backup/--batch. Đã test trên wplab với 6 ảnh rải 3 thư mục (2024/05, 2025/03, 2026/07): chọn 1 ảnh chỉ đụng đúng ảnh đó; chọn thư mục chỉ đụng thư mục đó; các thư mục khác nguyên vẹn; input bẩn bị chặn ở cả CLI lẫn AJAX. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
v1.7.0
feat: nén PNG kiểu TinyPNG (pngquant) + lệnh tự kiểm tra an toàn pngquant = đúng thuật toán TinyPNG dùng (libimagequant). Đo trên ảnh thật qua chính code plugin: 67KB → 16KB (-76%) mà lệch màu tối đa chỉ 4-6/255 (~2%, mắt thường không thấy). Ảnh đồ hoạ: -90%. Không đạt ngưỡng chất lượng thì pngquant tự từ chối ⇒ giữ nguyên ảnh gốc. Không dùng --strip để giữ ICC. Không có pngquant → tự lùi về Imagick quantize (sRGB). Thêm `wp vig-imgopt selftest [--n=5]`: chạy thử trên BẢN SAO của ảnh thật, đo lệch màu, KHÔNG đụng ảnh gốc — chạy trước khi tối ưu hàng loạt. Đã kiểm chứng bằng fault injection: tiêm lỗi tối -30/255 thì selftest bắt đúng và chặn lại. Sửa lỗi trong lưới an toàn của v1.6.1: mean_brightness dùng CHANNEL_ALL tính cả kênh ALPHA → quantize thêm/bớt alpha làm mean lệch ~11% giả tạo ⇒ báo động nhầm, âm thầm tắt nén PNG. Nay bỏ alpha, chỉ đo R/G/B. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
v1.6.1
fix: ảnh bị TỐI ĐI khi tối ưu (lỗi colorspace + mất ICC) — chỉ trên h…
v1.6.0
feat: v1.6.0 — lịch tối ưu ảnh cũ (nền, cũ→mới theo thư mục năm/tháng) - Bulk cron: xử lý ảnh cũ→mới (orderby date ASC = theo folder YYYY/MM), theo lô, chạy nền qua wp-cron (hourly/twicedaily/daily). - Setting "Lịch tối ưu ảnh cũ (nền)": bật/tắt, interval, batch, resize, backup. - reconcile_cron (idempotent, đặt/gỡ theo cài đặt), cron_run (log lô cuối), current_folder (thư mục đang tới lượt) hiển thị trong hộp bulk. - register_deactivation_hook: gỡ lịch khi tắt plugin. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>