It's a complete makeover. Instead of just FIRM patches, it supports Memory, Userland and Sysmodule patches.
Memory patches are code that is too big to fit in FIRM, and needs some place in memory to stay. They're linked to hooks, which are FIRM patches. I use an ID to match them.
Userland patches speak for themselves, they patch userland applications, but the implementation for them isn't complete yet.
Sysmodule patches (added today due to 3ds_injector being one) are system modules. Just raw NCCHs wrapped in the .cake format. The patcher takes care of finding a location in the FIRM to fit them in, but right now you can only replace existing sysmodules, and the replacement may not be bigger than the original. This is due to me rushing the implementation for me to be able to push the 3ds_injector.cake asap.
The format can combine all four different kinds of patches into a single .cake, as well as combine all the different versions for different firmwares in a single .cake. To support multiple firmware versions, instead of recompiling the patch multiple times for all the firmwares, I have "variables" (strings that are replaced in-binary during patch-time). This way, I only have to change little parts of the patch to support the current firmware instead of replacing it completely (which makes the .cake file smaller).
Also a thing some users will notice: .cakes aren't being filtered, so some cakes will show up on the menu that aren't supported in the current firmware. See this issue:
https://github.com/mid-kid/CakesForeveryWan/issues/32
If you enable a patch that isn't supported by the current firmware, you try booting, and you go back to the selection menu to disable it, and boot again, you might not be able to boot due to a "partial" patch. You will have to restart your console and attempt patching again. See this issue:
https://github.com/mid-kid/CakesForeveryWan/issues/31