# Changelog

All notable changes to UKMM will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.17.1] 2026-07-01

**Added**

- Added experimental support for converting map-mod bnps when dlc is not installed

**Changed**

- Cleaned up Cemu importer code a bit. Should be slightly faster and less prone
  to running in circles in rare cases when looking for/reading the title list cache
- Replaced several bare unwraps with custom panic messages. It's still not the most
  clear, but it's better than "called Option::unwrap() on a None value"
- Made RSTB calculation not fail if AI Programs got a little wonky
  - This is technically not a fix, because it's just allowing "broken" AI Programs
    through. The AI Programs in question are ones where the merger adds values, but
    doesn't delete any that should be deleted. This is technically a bug, but fixing
    it would require a breaking change. Since the AI Programs don't cause unintended
    behavior in the game, I'm letting this one go for now, and will fix it when I
    eventually rewrite *every* merger (or at least most of them)

**Fixed**

- Fixed the Open Emulator button on Windows... again...
  - Will probably need to tweak it further in a future patch, so that people who
    don't use any CLI switches don't have issues with possible spaces in the paths
- Make ZArchive opening panic-safe and validate archives on load
  - Thanks @emiyl

## [0.17.0-1] 2026-04-10

This release is a hotfix for 0.17.0, which fixes conversions from the old pending
deployment log format to the new one.

**Fixed**

- Fixed a crash on program bootup, related to path traversal when converting
  old pending logs to new ones when the old logs contain an empty path

## [0.17.0] - 2026-04-09

This release includes multiple *breaking changes* to the UKMM mod format. This means
that you will need to reinstall and/or repackage all existing UKMM mods that edit
map files or AnimSeq ("animation sequence," or bas) files, to avoid errors.

**Added**

- MainField Static merger. Fixes various issues with installing bnps that edit
  the file, including the disappearance of safe zones around the game world
  - This is a breaking change. Any mod that edits Map/MainField/Static.smubin
    will need to be reinstalled from a loose file or bnp package.
- New AnimSeq merger. Runs on highest-priority-wins rules, to avoid as many issues
  as possible. Compatibility patches should be made for animation-changing mods.
  Also contains several checks for AnimSeq files to ensure they are not missing data
  or crash due to cyclic or index-out-of-bounds errors.
  - This is a breaking change. Any mod that edits any Actor/AS/<some_name>.bas file
    will need to be reinstalled from a loose file or bnp package.
- Support for mods packaged as rar files
- Thanks @Clonephaze for 2 new features:
  - Russian, Japanese, Korean, Arabic, Viet localization. All of these were done
    with AI, so if you don't like the translations, feel free to open a PR
    - Note: Localization is the only thing AI will ever be used for in this project
  - UI breadcrumbs, for pointing the user toward the settings tab, if they somehow
    miss the intro dialog popup

**Changed**

- Changed cemu settings importer to populate the emulator executable path with
  a path that will boot directly into BotW, skipping the game list, if the dump
  is in the unpacked format. Otherwise, it will populate it with a path that will
  open cemu to the game list
- Added quotes to the executable command on Windows or when the path has spaces in
  it, to ensure that Powershell doesn't vomit all over a completely valid path
- Rewrote the file subsystem. Files will now only be searched for once, in the
  exact location they're supposed to be located at
- Logs have been cleaned up considerably. Only one log file will be used, and it
  will only store info from the current or most recent session. Various changes have
  been made to reduce the amount of unnecessary log spam
- Added context to unwraps during merging, in case they fail
- Added context to various bnp map rebuild operations, in case they fail
- Set top-level error message to tell the user to expand the details, so that people
  stop thinking that all errors are the same error just because the top-level message
  is the same
- Better support for detecting meta information for 7z and rar packaged mods
- Better support for detecting mod root directories for zip, 7z, and rar mods
- Made missing loc keys pull from English instead of displaying the loc key, itself.
  - This will become more important as I try to replace further messages, like error
    messages, with localized strings. ETA on that is TBD.
- Changed intro dialog window write-up, for more clarity on first usage or when
  settings have not yet been set
  - Thanks @Clonephaze
- Gracefully handle IPC socket claim errors. Allows multiple instances of UKMM to
  run at the same time, though I'm not sure why you'd ever want to do that

**Fixed**

- Fixed profile validation when dual-booting multiple operating systems, where
  both systems are reading from the same effective storage folder. For example,
  if Windows reads from %LocalAppData%/ukmm, and another operating system has
  a symbolic link to read from that same folder, then UKMM will reconstruct mod
  paths on boot, to ensure that you can properly merge from both systems
- Fixed the program displaying at the wrong DPI when using Wayland, e.g. on steamOS
- Reordered bnp map conversions, so modifications apply to the right map instances
- Made sure DeleteSets actually deleted the things marked for deletion. Whoops!
  Fixes various merge errors in BoneControl, ActorLink, and other files
- Fixed copy mode trying to copy folders using code for copying files
- Fixed hard link mode trying to hard link folders
- Fixed how partial deployment determines if a file is changed, so that only files
  that were actually changed are updated
- Fixes a rare error where some files with no header in their format would be
  recognized as byml files instead of binary
- Fixed various deployment errors, reimplemented partial deployment
- Fixed egui assertion failures in debug mode caused by invalid widget sizes
  (NaN or negative values). All size values passed to egui are now validated
  to ensure they are finite and non-negative

## [0.16.0] - 2025-01-27

This release includes a *breaking change* to the UKMM mod format, specifically to
the merging of the LevelSensor.sbyml file. This means that you will need to
reinstall and/or repackage all existing UKMM mods that edit that file, to avoid
errors. The file is located inside Bootup.pack, so it may not be obvious from the
Info tab.

**Changed**

- Made the Deploy button always visible, so that you don't need to remerge to deploy
  when auto deploy is turned on, e.g. when switching profiles. Auto deploy still
  works as before, where you don't need to click the button unless it gives you a
  message telling you to.
- Set logger file at program open, to avoid initializing it twice

**Fixed**

- Fixed an error with the --debug switch that would cause the app to crash. If you
  want to view debug strings, you still need to use the Log Levels dropdown in the
  Log tab
- Fixed an error with merging LevelSensor.sbyml which would cause scaled enemies
  to spawn out of order if new enemy actors were added to an existing species
  - This is a breaking change to the format of LevelSensor.byml inside Bootup.pack,
  and any mods that edit this file will need to be reinstalled
- Fixed the Open Emulator button on Windows. Again. Fourth time, now? Please kill me
- Fixed multiple errors that would cause UKMM to fail to boot if the storage folders
  were tampered with since the last time UKMM booted. It's still a bad idea to do so
  because your load order may remove some mods, or have some mods out of order, but
  at least UKMM will boot under those conditions

## [0.15.3] - 2025-01-17

Special Mipha's Grace beta release edition

**Added**

- Added extra context to profile initialization errors
- Multiple language localization! Currently supported languages are: English,
  Dutch, French, German, Italian, and Simplified Chinese. Spanish and Russian
  are on the way.
  - Looking for translators to translate: Japanese, Korean

**Changed**

- When a mod is installed in the wrong mode (i.e. a WiiU mod in Switch mode or
  a Switch mod in WiiU mode) the error message will now be more straightforward
- When installing a mod with no metadata, the message will be more clear, and the
  archive name will be put in the mod name field by default

**Fixed**

- Fixed a crash that could occur if you loaded a profile that you had duplicated,
  and hadn't restarted ukmm since you'd done that duplication
- Fixed an error with installing bnps that had deepmerge logs so large that they
  had to be stored as text (looking at you, Miss Graceful Fish...)

## [0.15.2] - 2025-01-02

**Fixed**

- Fixed Cemu settings importer on Linux
- Fixed Copy mode deployment sometimes attempting to use file copier to copy folders
- Fixed a regression that caused bnps that added new actors to crash
- Fixed Open Emulator button not opening emulator properly on Windows

## [0.15.1] - 2024-12-01

**Added**

- Added Deploy Layout settings option, to give more control over deploy output
  location
- Added extra context to various BNP conversion errors
- Added option to install unpacked loose file mods via rules.txt

**Changed**

- Reworked RSTB calculation, for more efficient file sizes and fewer panic moons
- Reworked deployment, to better support Switch emulators
- Reworked deployment config validation, to ensure you don't accidentally leave
  behind a bunch of useless links or files when the effective output location changes
- Updated tooltip for deploy method, to give more clarity inside the app
- Enabled vertical scrolling in package dependency window, for long mod lists

**Fixed**

- Fixed mods that include multiple occurrences of the same option in their bnp
  throwing errors on trying to add those options to the UKMM zip
- Fixed merging CDungeon/Static.smubin, fixes warping in over a chasm and
  repeatedly dying in one of the DLC shrines
- Fixed a bug where Copy mode on Windows did not copy files
- Fixed various (but not all) errors when importing improperly-made BCML mods,
  related to mod authors adding diff logs for files with no vanilla counterpart
- Fixed various bugs related to BCML migration
- Fixed a rare bug where a mod might not be properly marked for merging
- Fixed a bug where some mods that were part of a profile could not be reinstalled
  after deleting that profile
- Fixed Cemu settings import
- Fixed a bug where mods with text changes may not apply those changes, depending
  on the language chosen in the settings and what languages other mods contained
- Fixed a bug where a different language than the one chosen in the settings would
  be used for the final merge, when mods contained too many languages

## [0.15.0] - 2024-08-29

This release is fairly significant and includes *multiple breaking changes* to
the UKMM mod format. This means there is a *high likelihood* that you will need to
reinstall and/or repackage existing UKMM mods to avoid errors. Ideally, this
should be the last breaking release before stabilization.

**Added**

- Added support for new Cemu config paths
- Experimental support for arm64 macOS
- Added support for complex emulator command lines

**Changed**

- Switched to symlink deployment by default for Cemu
- Minor performance improvements

**Fixed**

- Fixed settings refresh after BCML migration
- Fixed broken symlink on switching profiles
- Fixed issues with language differences in text merging
- Fixed issues with StatusEffectList and LevelSensor mergers. **This is a
  breaking change which requires reinstalling mods which modify StatusEffectList
  or LevelSensor.**
- Reverted msyt version to fix BNP compatibility. **This is a reversion of an
  unintentional breaking change in the last release. It will require
  reinstalling mods which modify game texts.**

**Removed**

- Removed merging for actor recipes (`.brecipe`). Diffs will be stored whole and
  merging will simply overwrite with the highest priority. **This is a breaking
  change which requires reinstalling all mods which modify recipe files.**

## [0.13.0] - 2024-07-28

**Added**

- Added full GameBanana 1-click and "open mod with UKMM" support
- Added Refresh button to file picker
- Added specific error about mods made with old roead versions

**Fixed**

- Fixed crash when reopening tabs closed by their buttons
- Fixed rare race condition with mod packaging

**Removed**

- Removed everything related to the mod editor tool, which will probably never
  be finished

## [0.12.1] - 2024-07-04

**Added**

- Added `cargo dist` integration to provide simpler install and update methods

**Fixed**

- Restored missing Package button to Window menu
- Fixed option descriptions not showing on multiple choice
- Fixed misidentification of Switch BNPs with a `rules.txt` as Wii U mods


## [0.12.0]

**Added**

- Added experimental "binary override," as-is storage of technically invalid
  resources for mods which work despite minor "errors"

**Changed**

- Completely reworked logger using `egui_logger`, hopefully more performant and
  maintainable
- Switched some `Arc`s to `Rc`s where possible

## [0.11.1]

**Changed**

- Stopped caching open directory contents so the file picker is accurate after
  the app restarts

**Fixed**

- Fixed serious issues with reinflating BNPs with options
- Fixed parsing numeric strings in BCML 2.*x* `deepmerge.yml` files

## [0.11.0]

**Added**

- Added update mod button for developers
- Added GUI error message for startup panics

**Changed**

- Switched back from a custom fork of egui to the latest official version.
  This brings some minor unwanted UI changes, but nothing, I think, that
  affects anything functionally.

**Fixed**

- Fixed possible errors with missing game languages

## [0.10.1]

**Added**

- Added open folder buttons to tool menu
- Added button to open emulator per-deployment config

**Changed**

- Use dictionary for ZSTD compression

**Fixed**

- Fixed missing `AocMainField.pack` in some map mods
- Minor patches to gamedata handling

## [0.10.0]

**Added**

- Added button to extract mods back into full files (graphic pack/RomFS)
- Added mod API versioning to better handle format changes across versions

**Changed**

- **Breaking change**: Updated to the newest version of roead, which supports
  BYML versions 5-7. This means *all mods that edit BYML files* may need to be
  reinstalled, which is perhaps a majority of mods. (The good news is this will
  make TotK support easier to add in the future.)
- Updated to work on the stable Rust compiler, nightly no longer required.

**Fixed**

- Fixed "no base or DLC content folder" on some Switch mods
- Fixed panic parsing map logs with deletions in BNPs
- Fixed weird gamedata flag issue on some BNPs
- Updated RSTB library to fix mystery panics

## [0.9.0]

**Added**

- Added "Send to Profile" option for mods

**Changed**

- **Breaking change**: Deeper model data merging. This is a *breaking change*
  which will require reinstalling all mods that edit model lists (`.bmodellist`).
- Specially flag nested lookup error
- Even more workarounds for malformed recipe/drop table files

**Fixed**
- Fix BFARC and BLARC merging new files
- Removed almost all possible panics in content merging

## [0.8.2]

**Changed**

- Workaround for mods with incorrect drop or recipe `ColumnNum` values
- Workaround for mods with incorrect drop/recipe numbered names (e.g. `ItemNum001`)
- Queue errors for end of batch install
- More error details, especially to identify mods in batch operations
- Clearer "no base version" error

**Fixed**

- Hacky fix for low Switch RSTB values

## [0.8.1]

## Fixed

- Temporarily disabled complex RSTB estimates to fix crashes
- Fixed issue with handling empty `AocMainField.pack`

## [0.8.0]

**Added**

- Added CLI package command (@ArchLeaders)
- Added support for updating mods with newer versions
- Added indicator for current platform on top menu
- Added Shift-Click mod range selection

**Changed**

- Reject keyboard input under modals
- **Breaking change**: Reworked CookData merger (@GingerAvalanche).
  This will require reinstalling any mods that modify `CookData.sbyml`.
- Improved some warnings
- Ignore `AocMainField.pack` when converting BNPs
- Tolerate bad BNP version fields

**Fixed**

- Fixed panics when iterating corrupted SARCs
- Fixed default scale on Steam Deck
- Fixed GUI flag handling
- Fixed older macOS (<12) support
- Fixed packaging the contents of handled SARCs separately
- Fixed loading nested files with WUA dump

## [0.7.1]

**Changed**

- Automatically enable new mods
- Catch panic errors on manual threads

**Fixed**

- Fixed running GUI with args
- Fixed default dock/tab settings

**Removed**

- Removed "Unpack mods" setting

## [0.7.0]

**Added**

- Added drag-and-drop installation
- Now saves tab/dock layout

**Changed**

- **Breaking Change**: Make BFARC files mergeable. All mods which edit UI game
  fonts will need to be reinstalled.
- Ignore invalid gamedata flags
- Switch to folder selector for Cemu

**Fixed**

- Fixed updater
- Fixed parsing `meta.yml` for autofill
- Fixed CLI on Windows (closes #62)

## [0.6.0] - 2023-03-10

**Added**

- Added meta autofill when packaging source contains meta file
- Added setting to control system 7z
- Added macOS release

**Changed**

- Skip copying mod on install if already stored from another profile
- More error details with `anyhow_ext`

**Fixed**

- Fixed profile corruption when uninstalling a mod used by multiple profiles
- Fixed thumbnail compression issue with unpack mods setting
- Fixed unpacked ROM optional DLC folder check
- Fixed font loading on macOS and certain Linux distros
- Experimental fix for BNPs with `UNDERRIDE_CONST` in drop logs

## [0.5.0] - 2023-03-02

**Added**

- Added mod preview image packaging. You can include a preview image in a mod by
  placing it in the root folder and naming it `thumb.jpg` or similar (all
  options listed in docs).
- Added more error details

**Changed**

- _[Breaking change]_ Made BLARCs mergeable. All mods which contain
  `Bootup.pack` will need to be repackaged/reinstalled.
- Ignore zero byte when processing mods
- Further improved mod filename sanitation
- Switched to safe error for potential issues with BNP text logs
- Updated roead for macOS support progress
- Various UI tweaks (courtesy of ArchLeaders)

**Fixed**

- Fixed handling `required` field for BNP options
- Fixed BCML settings path on Windows
- Fixed parsing empty dump folder settings in BCML migration
- Minor fixes to logging

## [0.4.0] - 2023-02-27

**Added**

- Added "Reset Pending" option to menu
- Added experimental BCML migration tool
- Added log file and panic details

**Changed**

- Moved `rules.txt` setting to deployment config
- Improved message pack processing to report the paths of problem files and
  filter for only MSBTs (should fix Zelda's Ballad compatibility)

**Fixed**

- Exclude bootup language packs from BNP pack converter to solve cross-region
  issues
- Fixed panic on zero-length mod files
- Fixed cross-region bootup language pack deployment

## [0.3.1] - 2023-02-22

**Changed**

- Default to portable storage folder in portable mode
- Clear resource cache on settings change
- Update deps to improve binary size

**Fixed**

- Fixed missing non-US languages in nested SARC map

## [0.3.0] - 2023-02-19

**Added**

- Added experimental updater
- Added support for BCML 2.x BNPs
- Added basic cross-region language support

**Changed**

- Strip and compress release builds

## [0.2.6] - 2023-02-15

**Added**

- Added GitHub workflow for potential Steam Deck support

**Changed**

- Improve editor UI file tree
- Implement `NamedEnumerate` for slight perf boost
- Added scrolling to options selection dialog

**Fixed**

- Fixed crash from bad damage param RSTB
- Fixed missing parent folder with BNP logs
- Fixed `required` field parsing for BNP mod options
- Matching fix for certain AS nodes
- Fixed max width for busy dialog
- Fixed edit UI for `ElementParams`
- Fixed font loading on Linux

## [0.2.5] - 2023-02-11

**Added**

- More mod categories
- Install multiple mods at once

**Fixed**

- Fixed parent folder creation for BNP SARCs
- Fixed portable mode flag
- Statically link OpenSSL for Steam Deck support
- Fixed SARC inflation for BNP options
- Fixed repeated None radio for mod options

**Changed**

- Show BNPs in file browser
- Support reading UKMM ZIPs with compressed metadata
- Updated roead for more flexible param types
- More error details for some content

## [0.2.4] - 2023-02-09

**Added**

- Added welcome/changelog popup on new version

**Fixed**

- Fixed BNP SARC inflation for edge cases
- Fixed issue with optional BNP option fields
- Fixed platform detection for "graphic pack" mods
- Fixed AI program serialization
- Fixed illegitimate RSTB entries causing crashes in-game (probably fixing #23)

**Changed**

- Significant pointless changes to AS merger
- Fixed mod meta issues by switching to YAML
- Modified progress message to improve performance

## [0.2.3] - 2023-02-02

**Added**

- More docs
- Cross-platform mods (experimental)
- Initial theme support

## [0.2.2] - 2023-02-01

**Added**

- Added required setting for option groups
- Added support for converting BNP options

**Fixed**

- Fixed BNP conversion missing dump reference
- Fixed mod option descriptions
- Updated roead to fix SARC debugging
- Fixed BNP SARC inflation (partially fixes #23)

**Changed**

- Added alignment to SARC info

## [0.2.1] - 2023-01-30

**Changed**

- Fixed mod option default display
- Fixed problem with delete collection length
- Fixed BNP temp file and improved temp file cleanup
- Fixed some tooltip formatting

## [0.2.0] - 2023-01-28

**Added**

- Readme
- Support for converting and installing BNPs (no option support yet)

**Changed**

- Switched mod versions to semantic version strings
- Fixed various mod option UI limitations
