# Changelog

## NE alpha 75

### New Features
- **Image editing functions restored from old_engine branch**
  - `buildVolume()`: Full firmware volume reconstruction with header checksum recalculation, file alignment, VTF handling, pad file insertion, Apple CRC32/FSO support, and volume growth
  - `buildFile()`: Complete file state machine handling, section reconstruction, header/data checksum recalculation, tail and large file support
  - `buildSection()`: Section body reconstruction with EFI11/Tiano/LZMA/LZMAF86 compression, GUID-defined section handling, CRC32 recalculation
  - `constructPadFile()`, `growVolume()`, `compress()` helper functions
- **Insert operation**: Insert files into volumes and sections into files, with FFS file header and section header parsing (including large files and extended sections)
- **Replace operation**: Full data replacement support — `replace as-is` splits data into header + body, `replace body` stores new body directly on tree items
- **TreeModel data setters**: Added `setHeader()`, `setBody()`, `setTail()` methods to TreeItem and TreeModel for direct item data mutation

### GUI Improvements
- **Remove**: Marks selected items for removal from the reconstructed image
- **Rebuild**: Triggers full item reconstruction with parent chain rebuild
- **Replace**: Opens file dialog for as-is or body replacement
- **Insert**: Opens file dialog for inserting items before, after, or into selected nodes
- **Save Image File**: Builds reconstructed image via FfsBuilder and writes to disk
- FfsBuilder properly initialized on file open

### Bug Fixes
- **Windows MAX_PATH (260 byte) limit**: Replaced narrow-string ANSI CRT functions with wide-char Win32 APIs (`GetFileAttributesW`, `CreateDirectoryW`, `SetCurrentDirectoryW`, `RemoveDirectoryW`, `GetFullPathNameW`) for all filesystem operations
- Added `toWideString()` helper and `openOutputFile()`/`openInputFile()` cross-platform file I/O helpers
- Updated all 14 `std::ofstream`/`std::ifstream` call sites to use wide paths on Windows
- Fixed `readFileIntoBuffer()` Qt compatibility (`std::vector<char>` → `UByteArray` explicit conversion)
- Added missing `filesystem.cpp` to UEFITool GUI CMakeLists.txt

### CI/CD
- Added Windows build and release workflow with automatic version detection from `version.h`
- Artifacts uploaded for every push; GitHub Releases created automatically on tag push

### Documentation
- Fixed typos in README.md: `encouter` → `encounter`, `awailable` → `available`
- Fixed Windows version reference: `build 1067` → `build 1607`

## NE alpha 74 and earlier

See [upstream release history](https://github.com/LongSoft/UEFITool/releases).
