Skip to content

Releases: vigdigital/vig-image-optimizer

v2.0.0

Choose a tag to compare

@github-actions github-actions released this 14 Sep 11:37
feat: đổi TÊN HIỂN THỊ → VIG Pix Optimizer (giữ folder/slug vig-image…

v1.9.4

Choose a tag to compare

@github-actions github-actions released this 12 Aug 09:14
fix: gỡ file rác macOS "Icon\r" khỏi repo/zip → hết lỗi update "Could…

v1.9.3

Choose a tag to compare

@github-actions github-actions released this 12 Aug 04:05
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

Choose a tag to compare

@github-actions github-actions released this 20 Jul 11:33
fix: filesize() trả số CŨ sau khi Imagick ghi file (thiếu clearstatca…

v1.9.1

Choose a tag to compare

@github-actions github-actions released this 20 Jul 10:57
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

Choose a tag to compare

@github-actions github-actions released this 20 Jul 05:48
feat: đặt lại trạng thái sau khi restore media + tách settings thành …

v1.8.0

Choose a tag to compare

@github-actions github-actions released this 20 Jul 04:59
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

Choose a tag to compare

@github-actions github-actions released this 20 Jul 04:40
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

Choose a tag to compare

@github-actions github-actions released this 20 Jul 04:19
fix: ảnh bị TỐI ĐI khi tối ưu (lỗi colorspace + mất ICC) — chỉ trên h…

v1.6.0

Choose a tag to compare

@github-actions github-actions released this 17 Jul 17:23
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>