Release Notes
=============

0.4.8

 Bug fixes:
  * Fix extra data size calculation when multiple flag bits are
    present
  * Properly handle extra data in uncompressed text records

0.4.7

 Bug fixes:
  * Mobipocket unpacks now correctly account for the extra data that
    can be appended to PalmDoc-compressed text records that should not
    be made part of the decompression process.

0.4.6

 Bug fixes:
  * EReader HTML conversion now creates (semi-valid) XHTML output and
    better handles paragraphs
  * EReader font marker handling improved
  * Missing config file options are properly handled
  * Documentation fixes

0.4.5

 Bug Fixes:
  * user script tests avoid smoke tests that tend to break on
    non-libraries

0.4.4

 Bug Fixes:
  * split_metadata now writes split components into the directory where
    the source file is located instead of the current working
    directory.  The old behaviour could cause failure when running as
    CGI.

0.4.3

 New Features:
  * gen_opf() now accepts a 'mediatype' argument to override
    autodetection of the mime type of the 'textfile' argument.

 Bug Fixes:
  * The opffile argument in gen_opf() was not being set correctly
  * unpack_ereader now forces the appropriate mime type instead of
    letting it be autodetected.  Fixes incorrect setting of text/plain
    on HTML output on Windows systems.

0.4.1 - 0.4.2: minor bugfixes only

0.4.0

New Features:
 * IMP support!
   * It is now possible to unpack unencrypted IMP files both into .RES
     directories and into HTML files.  Encrypted IMP files can still
     be unpacked into .RES directories.
   * .RES directories can be repacked into IMP files.
   * IMP metadata can be edited in-place
   * LZSS compression and decompression is now available as a general
     library component, though this may be split out into a separate
     module in the future.
   * Thanks go to Nick Rapallo for assistance with this feature set,
     and Jeffrey Kraus-yao for most of the original
     reverse-engineering work.

Bug Fixes:
 * Mobipocket files with EXTH headers but no EXTH records now unpack
   correctly.

Library and Syntax Changes:
 * Some of the input and output options in the 'ebook' command-line
   tool have been standardized to '--input' or '-i' and '--output' or
   '-o'.  Check the documentation for exact syntax.
 * EBook::Tools::Unpack::usedir() has been moved into EBook::Tools as
   a procedure, not a method.
 * The known uid check in EBook::Tools::search_knownuids() has been
   factored out into the twigelt_is_knownuid() twig search procedure.
   This causes a lot of 'undefined value' warning spew from XML::Twig
   to be bypassed and has the added advantage of removing a loop

   It does, however, slightly change the search behaviour --
   previously, the highest priority known UID in the array was
   selected if multiple known UID identifiers were found.  Now, the
   first dc:identifier matching any known good UID is used instead.
   It's possible to reclaim the old behaviour by sorting the returned
   array, but on afterthought, it is probably better to let the user
   file order determine the package id by default.

----------

0.3.3
 * Fixed bugs relating to find_in_path() on MSWin32 systems and Data::UUID

0.3.2
 * EBook::Tools should now in theory no longer require Perl 5.10
   (minimum requirement is now Perl 5.8.8)

0.3.0

New Features:
 * Configuration file and directory support
 * Mobipocket HUFF/CDIC support
 * Unpacking DRM-protected Mobipocket files now just skips the
   encrypted text, but still extracts the unencrypted images
 * EBook::Tools now takes advantage of several external helper files,
   if they are made available:
   * Mobipocket generation possible if mobigen is available
   * Unpacking interface supports MS Reader (.lit) if convertlit is available
   * Downconverting interface supports MS Reader and Mobipocket if
     convertlit and MobiDeDRM are available, respectively.
   * See README.Helpers.txt for more information
 * excerpt_line() procedure available to show just the beginning and
   end of a paragraph or other long line of text
 * ':all' export tag is available for all modules to export all
   procedures at once.

Library Changes:
 * EReader.pm: write_* methods now return the filename(s) written
   instead of just returning 1
 * Unpack.pm: gen_metadata() no longer calls split_metadata() if the
   raw option is specified
 * Tools.pm: fix_languages() now creates a <dc:language> if none
   exists (this isn't mandated by the standard, but mobigen requires
   it)

Bug Fixes:
 * Unpacking an eReader book now correctly adds the text to the OPF
   manifest

----------

0.2.0

New Features:
 * eReader unpacking support
 * New unpacking option --htmlconvert
 * ebook stripscript command to remove <script> and <noscript> blocks
   from HTML

Library Changes:
 * parse_mobi_header() hash keys relating to language have been
   changed
 * format-specific code is now in separate modules

Bug Fixes:
 * ISBN is no longer added twice in unpacked OPF files

----------

0.1.0 - Original release