[Galaxy S 4 i9505 Original Android Development] chenxiaolong:
Version 4.0.0 is finally released! What's new?

GUI for Windows and Linux

The GUI supports everything the command line version does (even drag-to-patch), but also adds one more feature: The auto-patcher can be configured for unsupported zip files:

You have the choice of using a preset (treat the file as a CyanogenMod ROM, for example) or by setting all the parameters manually. This is especially useful for ROMs where each version is named differently.

Android App

If you haven't used any of the 4.0.0 beta versions, you'll also see that the Android app was rewritten.

Just a quick note for those using my ROM in a multi-slot configuration: OTA delta updates will now work seamlessly as long as the patcher is installed.

Complete changelog (since v3.2.2):

Add PyQt5 GUI for PC

Has the advantage, over the CLI patcher, of being able to customize the auto-patcher for unsupported files

Create launchers for Windows and Linux

Allows for Windows executables with icons without sacrificing the editability of the Python scripts

Allows the console window to be hidden on Windows

Allows the GUI to be opened via double-click on Linux (assuming that PyQt5 for Python 3 is installed)

Includes manifest in PE COFF resources to avoid unnecessary UAC prompt on Windows (due to having "patch" in the filename)

Update Windows' Python to 3.3.3 x86 official

Use custom-compiled PyQt5 and Qt5 for Windows (official libraries are >40MB compressed)

Don't know if it's an issue yet, but my Qt is not compiled against the huge libicu i18n library

Rewrite Android GUI

Create a patcher activity to other apps can call the patcher (ie. an OTA updater)

Use proper fragments and stop using my hacky SharedState class

New icons

Uses Kit Kat immersive mode

Cards-UI imitation

Show summary and progress during patching

Switch to Holo Light with a light action bar

Keep screen on while patching

Move all hard coded strings to strings.xml (for easier translations)

Build with Android SDK 19.0.1

Very ugly hack using StorageManager via Java inflection for getting the full path from the Kit Kat file chooser

Refactor core patcher code and split it over multiple files

Much easier to read now

OCD: pep8 everything

Add support for having multiple "UI's" (a way to interface with the CLI or GUI)

Rewrite mkbootimg and unpackbootimg in Python

Eliminates the need for those binaries

Drop O_BINARY patch for Windows

No need to call external binaries in Python

My implementations work standalone too!

inpackbootimg

Dump everything, including the offsets, so the ramdisk, tags, and dt offset don't need to be specified manually

Takes the same arguments as the original unpackbootimg

mkbootimg

Add new feature for automatically creating a boot image from a dump

Takes the same arguments as the original mkbootimg

unlokibootimg

Use Python struct module to ensure 100% portability

Rewrite cpio in Python: 'minicpio'

Eliminates need for cpio binaries

Supports programmatically setting permissions without filesystem support (eg. NTFS w/o cygwin, FAT32, exFAT, etc)

Fixes patching of jflte Google Edition 4.4 ROMs on some versions of Windows (cygwin was unable to set 755 permissions on the new init binary)

Only supports the new-ASCII-format without CRC

Ramdisk patching is now done 100% in RAM

Includes workaround for a kernel bug (doesn't support unconventional, but correct cpio archives were files in directories come before the directories themselves)

Add support for...

CyanogenMod stable releases

CyanFox

Broodplank's AOSP 4.4.2

Dandroid builds with filenames "danvdh-GE*"

TouchliteGE

Smasher X

Echoe (TouchWiz) (one more filename regex/pattern)

Official AOKP

Carbon Kit Kat (fix issue where it's detected as Kangakat)

Mahdi

BeanStalk

PhoeniX

GoldenEye AT&T (hard-coded filename)

ChronicKernel AOSP 4.4

Alucard kernel AOSP & Google Edition

Ausdim TW 4.3 kernel

Remaining ParanoidAndroid Google Apps packages

Official AOKP Google Apps package

Xposed disabler zip

BlackBox

3Minit framework

Changes for my ROM

Add build.prop line to my ROM so the delta updater can determine the partition configuration

Mount /raw-cache as rw for OpenDelta

Add support for the Nexus 5 (hammerhead)

Add support for my ROM

Add support for AOKP

Other changes

Store kernels in /data/media/0/MultiKernels

Set the kernel permissions to 775 see they are visible through the sdcard daemon

Add defaults.conf file for configuring the target device (jflte and hammerhead) as well as some other static parameters

Update sample patchinfo file

Put name in FileInfo class so that the GUI has access to the list of supported files with a readable name

Refactor build system to make it more readable and make it easier to make instant builds in Jenkins

Update MinGW prefix for Arch Linux's mingw-w64-* packages

Compress all binaries and libraries with UPX (LZMA compression)

Remove exit.py and let patcher.py clean up its own crap

Dual Boot Switcher

Complete changelog (since v2.0.1):

Completely rewritten

Use proper fragments instead of my hacky SharedState class

Write code that doesn't make me look like a noob

New icons

Switch to Holo Light theme

Store kernels on internal SD

Show version from build.prop for each ROM