HFSExplorer Changelog
---------------------


2021.10.9
---------
- Add support for selecting the character encoding for decoding HFS filenames.

- Add support for more APM partition layouts, including ones with unusual
  inconsistencies.

- Add support for opening embedded disk images directly in HFSExplorer instead
  of having to extract them first.

- Fix overflow in calculations when opening HFS-wrapped HFS+ volumes causing
  errors when extracting files and potentially when opening volumes.


2021.2.22
---------
- Add support for ARM-native JDKs on Windows (adding ARM versions of llio dll).

- Simplify start menu options to remove the 'administrator mode' item and
  instead always launch the application elevated when there are no arguments
  while if there are arguments, i.e. when opening a file, then UAC is not
  invoked.

- Add web site link to "update available" dialog.

- Fix memory leak in HFS code.


2020.9.17
---------
- Fix outdated library leading to issues when loading UDIF/encrypted/sparse
  images.


2020.9.16
---------
- Change version scheme to be based on release date.

- Bugfix: Fix broken resource fork access.
  See: https://github.com/unsound/hfsexplorer/issues/10

- Bugfix: Fix broken unhfs option '-resforks APPLEDOUBLE'.

- Enhancement: The tree traversal process is now less sensitive to metadata
  corruption in leaf nodes, i.e. more data can now be extracted from corrupted
  volumes.

- Enhancement: Improve compatibility with certain seemingly incorrect Apple
  Partition Map layouts with mismatching sector size.

- Enhancement: Select device dialog updates devices when acquiring focus and
  when autodetect button is pressed. Previously any device attached to the
  system after opening the dialog was not seen until the dialog was closed and
  then reopened.

- Enhancement: Volume autodetection now shows the volume name in addition to the
  device name, making it easier to find the right volume.

- Enhancement: Volume autodetection can now detect volumes in MBR extended boot
  records (DOS extended partitions).

- Enhancement: Add new option '-sfm_subsitutions' to unhfs, translating Windows-
  incompatible filenames to a Windows-friendly form.

- Enhancement: Fix missing folder icons in UI when the look & feel does not
  provide a default one (fall back to our own custom folder icon).

- Enhancement: Add support for running HFSExplorer in Windows NT 4.0 (JRE
  1.5.0_06 tested). (MBR partition support is limited for USB removable drives
  due to OS limitations.)

- Many other fixes. See the git log for more info:
  https://github.com/unsound/hfsexplorer/releases/tag/hfsexplorer-2020.9.16


0.23.1
------
- Bugfix: Fix support for encrypted images with the version 2 header and
  multiple key entries.

- Bugfix: Help content could not be located due to a recent location change.

- Enhancement: Use the same custom icon for all HFSExplorer windows, making them
  easier to find.

- Enhancement: Attempt to force the GTK+ Look & Feel if the default one provided
  by the system is Metal or Motif. This makes HFSExplorer more usable in
  superuser mode on many Linux distributions.

- Many other small fixes. See the git log for more info:
  https://github.com/unsound/hfsexplorer/releases/tag/hfsexplorer-0.23.1


0.23
----
- Feature: Support for files compressed with HFS+ compression methods 3 and 4
  (introduced starting with Mac OS X 10.6). Compressed files are indicated with
  blue colour in HFSExplorer.

- Feature: Support in HFSExplorer for extracting extended attributes to
  AppleDouble files.

- Feature: Support for Mac OS X sparse image (.sparseimage) files.

- Enhancement: Add support for UDIF images larger than 2 GiB.

- Bugfix: Fix regressions in the UDIF XML and zlib-compression code which broke
  UDIF image support.

- Bugfix: Fix broken parsing of non-ASCII XML data in UDIF file.

- Bugfix: Fix incorrect data being extracted for multiple-extent files.

- Bugfix: Windows installer now installs HFSExplorer shortcuts in 'All users'
  instead of the user-specific start menu directory.

- Bugfix: Windows uninstaller didn't clean up files in newly added directories.

- Many other small fixes. See the git log for more info:
  https://github.com/unsound/hfsexplorer/releases/tag/hfsexplorer-0.23


0.22.1
------
- Feature: The "Load file system from device" dialog is enabled for non-Windows
  systems (Mac OS X, Linux, FreeBSD and Solaris are supported initially).

- Change: The HFSExplorer Windows launcher (hfsexplorer.exe) can now open the
  Java download page from the dialog box displayed when no Java runtime could be
  located.

- Change: Binaries and scripts have been relocated into the "bin" directory.

- Bugfix: Extracting files in Windows under Java 7 or higher caused false errors
  to be thrown because HFSExplorer tried to set UNIX-specific UID/GID properties
  for the extracted files.

- Bugfix: The HFSExplorer Windows launcher (hfsexplorer.exe) threw errors in
  certain situations because the JVM couldn't locate the Microsoft Visual C++
  runtime (msvcr*.dll) required by the JVM. This has now been fixed by appending
  the path of the directory containing the required .dll to the system path
  before loading the JVM.


0.22
----
- Feature: Sparse bundles (.sparsebundle) are now supported by HFSExplorer, both
  plain and encrypted.

- Feature: AES-256 is now a supported encryption method. However this also
  requires support in your Java runtime.
  In most cases Sun/Oracle's Java runtime needs to be updated with the "Java
  Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files" in
  order to support AES-256.

- Feature: Preserve file attributes for extracted files. Which attributes can be
  preserved varies with the platform. On Java 5/6 only the last modified date
  can be set for the extracted file. For Java 7 and higher we can also set the
  last accessed date and creation date where the underlying file system supports
  it. When using Java 7 on UNIX platforms, the mode and ownership can also be
  set.

- Feature: More detailed information about the B-tree files is added to the
  "File system info" window, and a new view of the Journal is added.

- Change: HFSExplorer now hides specially protected files and directories by
  default. The affected files and directories are the file and directory inode
  directories ("\u0000\u0000\u0000\u0000HFS+ Private Data" /
  ".HFS+ Private Directory Data\u000d") and the journal files
  (".journal_info_block" / ".journal").

- Bugfix: Incorrect key compare order for extent keys led to issues with
  overflow extents in resource forks.

- Bugfix: Original HFS catalog key comparison algorithm was incorrect, leading
  to various lookup issues on HFS. Fixed by implementing the 'relstring'
  case-folding table.

- Bugfix: Recognizing HFS/+/X filesystems failed when operating on devices
  requiring aligned I/O.

- Bugfix: int overflow bug in caching layer led to OutOfMemoryError in
  certain situations when reading large disks.

- Bugfix: Missing string length check when checking for reserved Windows
  filenames caused an exception to be thrown.

- Bugfix: When extracting directories with names containing spaces, the files
  in these directores could not be extracted. The fix is to check that the
  created directory name is really equal to the name that we intended to create
  (method deepEquals) and to fail if it isn't, requiring the user to rename the
  directory to something sane.

- Many other fixes are also included. Please refer to the git log for detailed
  info.


0.21
----
- Feature: New command line utility unhfs added which makes it possible to
  extract the contents of an HFS/HFS+/HFSX file system from the command line.
  Run unhfs.bat/unhfs.sh for instructions on how to use it.
  Thanks to Sebastian Lisken for suggesting this utility and participating in
  its development.

- Feature: Ability to view and extract the contents of resource forks built into
  the file information dialog (will only appear if there is resource fork data
  in the file).
  Also available as an external program, Resource Viewer, which will appear on
  the start menu for Windows users, and can be accessed through the startup
  script resview.bat/resview.sh for other users.

- Feature: New File menu item "Load file system from path" added, enabling users
  to type the pathname to a device file or disk image instead of having to
  select it with the file chooser dialog. This makes it a lot easier to load
  devices in Mac OS X and *nix systems.

- Improvement: Increased compatibility with devices that are unwilling to state
  their size, such as certain iPod devices attached to Windows systems.
  Original problem report:
    http://sourceforge.net/forum/message.php?msg_id=5709684

- Symlink bugfix: Symlinks referring to themselves caused infinite recursion and
  StackOverflowError.
  Original problem report:
    http://sourceforge.net/forum/message.php?msg_id=5723203

- HFS bugfix: Incorrect structure definition for CdrFilRec led to an inability
  to extract resource forks and fragmented files.

- Bugfix: Proper resource fork file format now generated when extracting
  resource forks.
  The earlier versions extracted resource forks as raw resource data, which is
  incompatible with Mac OS X. Now proper AppleDouble format files are generated,
  making the resource forks readable through SMB network shares when mounted by
  Mac OS X.


0.20.1
------
- Bugfix: The status field in the main window could expand vertically.

- Installer fix: Uninstalls current version before installing new one.

- Mac OS X fix: Dock icon gets set to the HFSExplorer icon.

- Bugfix: Some annoying debug messages were printed in the debug console.


0.20
----
- Experimental support for reading encrypted UDIF/raw disk images (.dmg).
  Feedback is much appreciated, as I can only generate a certain amount of test
  cases.

- Experimental support for older HFS (Mac OS Original) file systems. Feedback is
  much appreciated here as well.

- Support for hard links, both to files and directories (yes, HFS+ supports
  directory hard links, but so far Apple only uses them for the purpose of Time
  Machine backups).

- Support for POSIX-style symbolic links.

- Ability to create a read/write disk image (.dmg) from a loaded file system.

- Java 6+ only: Table header sorting for the file table is now implemented. The
  last (empty) column will sort on the internal sort order, if you need to reset
  your sorting choices.

- More flexible extract options, such as setting default actions for different
  events that may occur.
  (Example: "Could not create directory" -> Skip / Auto-rename / ...)

- Major restructuring/modularization of core components to ease future
  development.

- Bugfix: Thread safety is now a reality within HFSExplorer. The extract
  progress dialog no longer needs to be modal.

- Bugfix: Specifying a device path as argument when launching the app failed
  previously due to incorrect assumptions about input data.

- Bugfix: Caching layer was suffering from a logic error, mostly encountered
  when reading very small filesystems (such as disk images), which then could
  not be loaded.

- Bugfix: Autodetect failed for some MBR partitioned drives.

- Bugfix: Corrected a small rounding error that affected the last digit of
  displayed file sizes, making 4,5 KiB files appear as 5 KiB files instead of
  4 KiB (only affected what was presented to the user, and none of the internal
  workings). Whether this is the correct way of displaying a file size is
  arguable, but it's a floor estimate, and usually much more usable.

- Bugfix: The user previously wasn't able to abort the "Calculating selection
  size" phase when extracting files.

- Bugfix/feature: When extracting resource forks or both forks, empty resource
  forks are now skipped over, rather than being extracted as 0-byte "._" files.


0.19.5
------
- HFSX support can be considered stable as I have got no reports on any related
  problems.

- Bugfix/feature: GPT tables are now explicitly included in the Autodetect scan
  in the Windows dialog "Load file system from device". If you have a broken MBR
  but a valid GPT, the GPT partitions will be automatically detected.

- Made the Volume info panel a bit more detailed and replaced JLabels with
  JTextFields so information easily can be marked up and copied.

- Added two options in the popup menu displayed when user right clicks a
  file/folder:
  - Extract data
  - Extract data and resource fork(s)

- Extract progress window now always closes when user clicks the window's close
  button, even though the extraction process might not have ended. This enables
  the user to do error checking if extraction hangs.

- Windows: Added support for 64-bit JVMs (compiled code now exists for x86_64
  and Itanium, though only x86_64 has been tested).

- Launcher improvements and various small bug fixes to cope with 64-bit Windows
  and WOW64.

- Converted the ever-disabled "Back" button into an "Up"-button to walk upwards
  (towards the root) in the directory tree.

- Added support for more than 20 partitions per drive, more than 20 drives and
  more than 20 CD-ROMs in "Load file system from device" dialog (not that anyone
  has actually needed to use that many, but why impose limitations when you
  don't really have to?).

- "Open file" in Windows is now much more usable due to invoking the Windows
  handler instead of using the Java6 openFile handler when available.

- Fixed a few user interface bugs and quirks.


0.19
----
- Feature: Experimental support for HFSX formatted volumes (Mac OS Extended with
  case sensitive filenames). Feedback is appreciated for those with HFSX
  volumes.

- Feature: Implemented a caching layer between the file system handler and the
  media.
  This makes copying from CDs and DVDs a lot faster, and potentially speeds up
  operations on other media (hard disks, disk images) as well.

- Feature: bzip2 compressed UDIF .dmg files can now be opened.

- Bugfix: Annoying GUI behavior when extracting files with long file names.

- Cosmetic fix: Background is now consistently white in the file list pane.

- License change: GPL version 2 to GPL version 3.


0.18.3
------
- Bugfix: Parsing of Driver Descriptor Records and GUID Partition Tables could
  bail out for unexpected values when detecting partition systems, leading to
  exceptions when trying to load file systems.

- Bugfix: The launcher, hfsexplorer.exe, had a bug leading to access violation
  and crash under some circumstances due to a non null-terminated string being
  generated.


0.18.2
------
- Bugfix/feature: Windows autodetect button now handles APM partitioned
  drives/CDs as well.

- Bugfix: HFSExplorer now works with large Apple Partition Map and MBR
  partitioned drives.

- Bugfix: Update check now checks for build number instead of version number.


0.18.1
------
- Implemented support for wrapped HFS+ volumes, i.e. HFS+ volumes wrapped inside
  HFS volumes, as described in:
    http://developer.apple.com/technotes/tn/tn1150.html#HFSWrapper

- Fixed a minor bug where the user wasn't notified when a file could not be
  opened.


0.18
----
- Huge rework of the libraries from DMGExtractor, due to a lot of wasted memory
  leading to OutOfMemoryError for huge DMG files. Particulary the XML parser
  has been seriously reconstructed. Tested with an 11 GiB compressed/25 GiB
  uncompressed UDIF disk image.

- Fixed a serious bug leading to a lot of files not beeing seen by HFSExplorer
  (though I didn't notice it myself). Had to do with the algorithm that
  collected all files in a directory. (thanks to Mark Wainwright for the
  valuable test case)

- Implemented a Unicode composition algorithm, for those who have been
  experiencing strange filenames whenever there are accents and umlauts in them.
  (thanks to Wolf Mc Even for info)

- Improved repsonsiveness and usefulness for the progress dialog displayed when
  extracting files from the file system.

- Improved efficiency when reading UDIF disk images (.dmg files). (In some cases
  probably up to a million times faster... ;> ) 

- Implemented double-clicking in the right pane to browse a directory, or to
  extract (or open), a file.

- Implemented right-clicking in the left and right pane for bringing up a popup
  menu. Currently the only option is "Information", which brings up the info
  window.

- Made the partition choosing dialog default to the first HFS partition found.

- Fixed a bug when running the application in OS X, related to JFileChooser (all
  in all, JFileChooser seems very buggy in OS X).

- Fixed a non critical bug with HFSPlusBSDInfo. Apparently some root nodes
  (CNID 2) have a special value for "file mode", 0x0, not mentioned in POSIX and
  such specs (not that I have read them, but I assume...) so file info for the
  root node could not be displayed..

- UI is no longer active while the program loads a file at startup (could be
  confusing when loading large files, where the user might have thought that no
  operation was in progress)

- Added a debug console window where all the output from System.out and
  System.err goes when the application is running in pure windowed mode.

- Added icons for .dmg files in Windows Explorer. (for source material, thanks
  to the original creator of the icon for GParted, whoever that is...)


0.17
----
- DMG UDIF file support! Most DMG files can now be read directly from within
  HFSExplorer (no prior extraction needed), thanks to integrating code from
  DMGExtractor. It is all rather slow at the moment (especially with compressed
  images), but expect performance enhancements in the future when I implement
  smarter buffering/caching. What is known not to work are .dmg files with ADC
  or BZIP2 compression and encrypted images.
  Additionally, any image that does not contain an HFS+ file system will
  obviously not work.

- Created a launcher application for Windows, which automatically locates the
  Java Runtime Environment and starts the application from an .exe file. This
  launcher might work poorly with JREs from other vendors than Sun, so feedback
  is appreciated from those using non-Sun Java Runtime Environments.

- Made a NSIS installer package for Windows users, making it easy to
  install/uninstall the application. The installer is able to create file
  associations with .dmg files.

- Enabled the address field and "Go" button in HFSExplorer (after many releases
  where it has been disabled, waiting for implementation).

- Title bar now shows which file is open.


0.16
----
- Added automatic detection of partition systems and file systems, so that the
  user no longer needs to worry about whether it should choose to load them with
  or without APM.

- Added support for the MBR and GUID Partition Table partitioning schemes,
  making access to raw disk images or devices from Intel systems possible. (Not
  very tested, might be buggy...)

- Added an "autodetect" button to the "Load file system from device" dialog
  (only for Windows users), so that the user doesn't have to look for the
  correct device itself.

- Added a progress dialog when extracting files, so that users get some info on
  what's going on.

- Added keyboard shortcuts to menu items.

- Added a menu item to check for newer versions of HFSExplorer.

- Behavior change: When the program encounters an exception while extracting
  files (for example when the disk is full), the user can now choose to abort
  the entire extraction, or continue.

- Fixed a bug leading to exceptions when failing to load a file system,
  requiring a restart of the program.


0.15.1
------
- Minor Windows Vista fix. The icons were not found when starting HFSExplorer
  with the runfsb_vista.vbs script. Now the icons are included in the JAR file,
  so they should always be available.


0.15
----
- Major UI overhaul with a few icons, changed appearance of the file list. Many
  things left to do though.

- Added information dialogs for presenting information about the volume header,
  the catalog file, detailed file and folder info, some minor info on the
  journal... (all in preparation for future development work on write support)

- Behavior change: Extract button now extracts the entry that was last in focus.
  If you selected a folder in the left pane most recently, that folder will be
  extracted and not the selection in the right pane (and vice versa).

- Fixed a bug submitted by Gennadiy Bukhmatov related to the behavior of
  org.catacombae.hfsexplorer.types.OSType.

- Added a start script for Windows Vista, automatically bringing up the UAC
  dialog. It has not been tested more than that, so please mail me about your
  experiences with Windows Vista. Vista users may run "runfsb_vista.vbs"...


0.11
----
- Fixed a very significant bug, sometimes leading to some files not being seen
  by HFSExplorer, and sometimes leading to a complete crash.

- Made extraction of multiple files, as well as directory trees possible.

- Fixed some uncaught exception when trying to read an Apple Partition Map when
  it isn't there.

- First release of source code.


0.1
---
- First release
