- Added
--svgo-allow-lossy
and--svgo-precision
options to use svgo in lossy mode. This sets svgo--precision
, which can result in substantially smaller svgs (see #211 for some experiments). Lower values are more lossy. 3 is the default, but many SVGs will work well even with 0 or 1. Like all worker specific lossy flags, this is also enabled with--allow-lossy
. #210 #211 @gurgeous
- Support jruby 9.4 @toy
- Allow image_size 3 @toy
- Add support for Oxipng #167 #190 @oblakeerickson
- Fix
TypeError: can't convert ImageOptim::Timer into Float
with Ruby 3 #194 @yahonda
- Add
timeout
option to restrict maximum time spent on every image #21 #148 #149 #162 #184 #189 @tgxworld @oblakeerickson @toy
- Require at least ruby 1.9.3 @toy
- Add support for use as pre-commit hook #192 @proinsias
- Fix
Path#copy_metadata
by rescuing alsoErrno::EACCES
as it is done infileutils
#187 @toy - More precise regular expression for capturing svgo version @toy
- Fix and update list of markers in jpegoptim worker: allow to pass
com
instead of incorrectcomments
and add missingxmp
andnone
#188 @toy - Add
--skip-if-larger
flag to pngquant worker. The pngquant worker already does this, but this will make it fail faster. #125 #181 @iggant @oblakeerickson - Add
method
option for jpegrecompress, default tossim
#102 #103 #182 @ramiroaraujo @oblakeerickson
- Fixed atomic replacement for case when equal
File::Stat#dev
doesn't mean that file can be linked #180 @toy
- Use
.tmp
as the extension for temporary file if it needs to be created for atomic replacement #178 @toy - Don't create a temporary file in destination directory for atomic replacement if temporary directory is on same device as destination #178 @toy
- Remove deprecated
rubyforge_project
attribute from gemspec rubygems/rubygems#2436 @toy
- Enable frozen string literals @toy
- Ignore segmentation fault for
pngout
<=20150920
#158 @toy - Allow
image_size
2.x @toy - Add instructions for installing
svgo
in project folder #156 @brian-kephart - Show full bin search path in verbose output @toy
- Require
'date'
which is used in parsing pngout version toy/image_optim_pack#14 @toy
- Enable
jpegrescan
by default after removing its dependency onFile::Slurp
and fixing for windows #153 @toy - Extend description of
--verbose
flag #152 @toy
- Fix error
uninitialized constant EXIFR::JPEG
(breaking change in exifr v1.3.0) #150 @abemedia - Add option to
pngquant
worker to limit maximum number of colors to use #144 @toy
- Describe
nice
level option #140 @toy - Add instruction for installing
pngout
using brew #143 @lukaselmer
- Use
image_size ~> 1.5
withapng
detection, so apng images are not optimised to one frame version #142 @toy - Don't show
?
for unknown bin version in message about inability to determine version @toy - Deduplicate bin resolving error messages @toy
- Rails image assets optimization is extracted into image_optim_rails gem #127 @toy
- Add proper handling of
ImageOptim.respond_to?
@toy - Fix an issue not working OptiPNG
interlace
option #136 @mrk21 - Minimize number of file system calls in default implementation of
optimized?
#137 @toy
- Added
cache_dir
andcache_worker_digests
options to cache results #83 @gpakosz - Should work on windows #24 @toy
- Rename
ImageOptim::ImagePath
toImageOptim::Path
and its method#format
to#image_format
@toy - Ignore empty config files #133 @toy
- Use
FileUtils.move
inImagePath#replace
to rename file instead of copying on same device, don't preserve mtime and atime #134 @toy - Make
:allow_lossy
an individual option for workers that can use it, so it will be in the list of worker options #130 @toy - Use first 8 characters of sha1 hex for jpegrescan version #131 @toy
- Fix missing old (1.x)
pngquant
version as it was output to stderr #123 @toy - Fix capturing wrong version of
pngcrush
when it complains about different png.h and png.c #122 @toy - Add support for
sprockets-rails
3.x, kudos to @iggant and @valff for initial PRs #120 #121 #126 @toy - Use rubocop ~> 0.37 @toy
- Unify getting description of option default value using
default_description
@toy - Don't use
-strip
option for optipng when the bin version is less than 0.7 #106 @toy - Use quality
0..100
by default in lossy mode of pngquant worker #77 @toy - Add
:disable_plugins
and:enable_plugins
options tosvgo
worker #110 @tomhughes - Allow setting config in rails like
config.assets.image_optim.name = value
#111 @toy
- Use exifr 1.2.2 with fix for a bug #85 @toy
- Change order of png workers according to analysis to pngcrush, optipng, pngquant, pngout, advpng (was pngquant, pngcrush, pngout, advpng, optipng) @toy
- Run worker command without invoking shell (except ruby < 1.9 and jruby) @toy
- Add disabling worker by passing
:disable => true
(previously only by passingfalse
instead of options hash) @toy - Add tests for railtie, also to prevent issues like #72 #73 @toy
- Remove haml development dependency @toy
- Add
-strip
option to optipng worker to remove all metadata chunks, on by default #75 @jwidderich - Fixing minor spelling mistakes from
--help
output #79 @kaspergrubbe
- Fix
ImagePath#temp_path
for ruby 2.2 caused byTmpname#make_tmpname
accepting only objects directly convertible to String for prefix and suffix starting with 2.2 #74 @toy
- Fix paperclip-optimizer issue #13: railtie broken with
undefined local variable or method 'app'
#72 @janfoeh
- Ignore and show warning for lossy options
jpegoptim#max_quality
andpngquant#quality
in default/lossless mode #71 @toy - Add
:blacken
option topngcrush
worker, to blacken fully transparent pixels, on by default @toy - Command line option
--no-progress
to disable showing progress of optimizing images @toy
- Blacklist pngcrush 1.7.80 as it loses one color in indexed images @toy
- Added lossy worker
jpegrecompress
(usesjpeg-recompress
), disabled unless:allow_lossy
is true #65 @wjordan @toy :allow_lossy
option to allow lossy workers and optimizations @toy- Don't warn multiple times about problematic binary #69 @toy
- Run gisicle two times (with interlace off then with on) if interlace is not set explicitly #70 @toy
- Remove app and other extensions from gif images @toy
- Change behaviour of gifsicle interlace option to deinterlace for
false
, passnil
to leave as is @toy - Worker can change its initialization by overriding
init
and can initialize multiple instances #70 @toy
- Add interface to
image_optim_pack
@toy - Use
in_threads ~> 1.3
@toy - Added options to Gifsicle, specifically --careful (for compatibility) and --optimize for granularity #51 @kaspergrubbe
:skip_missing_workers
option to skip workers with missing or problematic binaries #66 @toy- Speedup specs (~8x) #60 @toy
script/worker_analysis
to compare worker chains by optimization, time and losslessness @toyCmd
module to ensure interrupted commands can't go unnoticed @toy
- Fix bin path resolving method missing vendor directory @toy
- Use pure ruby detection of bin path @toy
- Fail if version of bin can't be detected #39 @toy
- Check path in
XXX_BIN
to exist, be a file and be executable @toy image_optim --info
to perform initialization with verbose output without running optimizations @toy- Changeable config paths @toy
- Wrote this ChangeLog #62 @toy
- Use rubocop ~> 0.26.0 @toy
- Install advancecomp from source in travis script #61 @toy
- Move expansion of config path to read method and rescue with warning #58 @toy
- Show workers options in verbose mode #56 @toy
- Resolve all bins during initialization #22 @toy
- Add exclusion glob patterns,
.*
by default #35 #48 @toy - Show better warning when running image_optim for a directory without recursive option @toy
- Use stable sort for workers @toy
- Check binary version instead of using which to check if binary is present #59 @toy
- Use advpng worker before optipng @toy
- Fix order of results (use progress ~> 3.0.1) @toy
- Change array returned from
optimize_images
,optimize_images!
andoptimize_images_data
to contain pairs of item and result instead of just result @toy - Fixed
Space
causing exception with negative numbers @toy - Added pngquant worker #14 #32 #40 #52 @adammathys @smasry @toy
- Add instructions to errors from bin resolver @toy
- Use in_threads ~> 1.2.2 with fix for silent exceptions @toy
- Fix
LocalJumpError
in railtie initializer block (ruby 2.1.2, rails 4.1.4) #50 @schnittchen
- Added Inch CI and Gittip badges to README @toy
- Assign worker options to constants for documentation @toy
- Code style, reorganized, comments, added rubocop @toy
- Switch to rspec 3.0 @toy
- Don't mention versions in instructions for installing jpegoptim and pngcrush @toy
- Updated versions of
pngcrush
andjpegoptim
in installation instructions #46 @toy - Script for updating instructions in README @toy
- Typo in README #45 @rawsyntax
- Detect and warn about broken images #43 @toy
- Output image_optim version when running in verbose mode @toy
- Show resolved version in version exceptions and warnings @toy
- Warn if advpng version is less than 1.17 as it does not use zopfli #17 #18 @toy
- Don't try to register preprocessors when sprockets library is not initialized (app.assets is nil) #41 @toy
- Output resolved binaries when verbose @toy
- Output nice level and number of threads when verbose @toy
- Output config to stderr when verbose @toy
- Don't limit number of threads @toy
- Fixed building PATH environment variable @toy
- Use image_size ~> 1.2.0 @toy
- Added
svgo
worker and support for svg files #27 #30 @nybblr - Properly unlink temporary files #29 @toy
- Read options from rails app configuration
app.config.assets.image_optim
in railtie #31 @bencrouse - Updated versions of
pngcrush
andjpegoptim
in installation instructions #26 @jc00ke
- Fixed regression with progress introduced in v0.10.0 @toy
- Ensure binary data (ruby 1.9+) from
optimize_image_data
andoptimize_images_data
#25 @toy - Mention
optimize_image_data
andoptimize_images_data
in README #25 @toy
- Fixed bug with inheritance of
DelegateClass
in jruby 1.9 and 2.0 @toy - Return
ImagePath::Optimized
containing also original path and size fromoptimize_image
andoptimize_image!
#12 @toy - Show exception backtrace when verbose @toy
- Fail if there were warnings with paths to optimize @toy
- Rails (sprockets) preprocessor #2 @toy
- Use fspath ~> 2.1.0 with fixes for jruby 1.7.8 @toy
- Add
optimize_image_data
andoptimize_images_data
@toy - Read config from
image_optim.yml
atXDG_CONFIG_HOME
(~/.config
by default) and from.image_optim.yml
in current working directory #13 @toy - Added badges to README @toy
- Big refactoring @toy
- Use progress ~> 3.0.0 and in_threads ~> 1.2.0 @toy
- Use fspath ~> 2.0.5 with bug fix for jruby in 1.8 mode @toy
- Overcome wrong implementation of
Process::Status
in jruby @toy - Fix for jruby not
File.rename
not accepting non String @toy - Fix for jruby
File.rename
not accepting non String @toy - Added
.travis.yml
@toy - Added
jhead
worker @toy
- Fixed variable name in
jpegoptim
worker @toy - Added example of using
PATH
with ImageOptim.app bins #11 @toy
- Print options if verbose @toy
- Added worker options to README using script #5 @toy
- Setting worker options using arguments to image_optim bin @toy
- Option definitions with description, default value and validation instead of attribute reader in options @toy
- Don't change PATH for ruby process @toy
- Vendor
jpegrescan
@toy - Option to use
jpegrescan
injpegtran
worker, off by default #6 @toy
- Use image_size ~> 1.1.2 @toy
- Make
apply_threading
accept enum instead of array @toy
- Use more compatible redirect syntax
>&
#9 @teaforthecat
- Use
system
withenv
andnice
instead of forking #8 @toy - Don't use
-s
ofwhich
as it is nonstandard #7 @toy - Added bin resolving with ability to specify binary paths using environment variables @toy
- Reorganized workers @toy
- Added links to tool projects @toy
- Warn if directly added files are not images or are not optimizable @toy
- Recursively scan directories for images #4 @toy
- Typo in bin/image_optim #3 @fabiomcosta
- Nice output for configuration and binary resolving errors @toy
- Verbose output @toy
- Use image_size ~> 1.1 @toy
- Added usage to README @toy
- Allow setting nice level, 10 by default @toy
- Use
fork
instead ofsystem
@toy
- Fixed setting max thread count @toy
- Fixed parsing thread option @toy
- Simplified determining presence of bin @toy
- Initial release @toy