to do list:
implement fix for byte size being over previous plist // DONE :D
add function to read and change nsprincipleclass (this is easy and ill do this feb 8th most likely) change CCLaunchApplicationIdentifier to CCAssociatedBundleIdentifier -- this is easy to code as well. magnifier is the only cc module that uses the launchapp identifier and it will launch the associated bundle if the key is in its info.plist; it will streamline modifying the rest of the cc modules with the second option implement picker for module being replaced instead of writing name this is easy also add dnd module add option implement file select for image to replace module asset implement serena car wrapper implement saving of modules ** difficult but important probably
implement fix for byte size being over previous plist: easy fix, just remove unnecessary build IDs in plist by default for any custom module to guarantee low file size since it doesn't matter if it is below the plist size NOT TRUE :(
sad. not easy, plist has to be exactly the same
// done pull req made
add dnd module: secondary option, maybe keep this out of this app entirely and just add to cowabunga? dunno entails picking a sacrificeable module and removing its bundle identifier, then adding that same bundle identifier to dnd module plist
change CCLaunchApplicationIdentifier to CCAssociatedBundleIdentifier -- this is easy to code as well. magnifier is the only cc module that uses the launchapp identifier and it will launch the associated bundle if the key is in its info.plist; it will streamline modifying the rest of the cc modules with the second option
ill do this
To-do list as of idk
UI/App
- [x] Make edit UI
- [ ] Add icon picker
- [x] Settings UI for credits and etc
- [x] Map icons to each module
- [x] Map all needed override names for iOS 15/16
- [x] Mark customisations that don't do anything as not being allowed to be enabled (idk had this in my head)
- [x] scan default modules and filter IDs to show separation between default modules and the movable ones in the add module UI and in other places
- [ ] On the edit pane, show info such as the bundle of and if its default module and whatever (dev mode in settings maybe)
- [ ] GUI Editing
Actual Functionality
- [x] Resolve all the sections into operations of some sort
- [ ] Custom icons/app launchers
- [x] Custom sizes (+large) - also calculate plist file sizing too
- [x] Move stuff around (later)
- [ ] Export configurations (easy enough)
- [ ] Handle ios15/16 differences
- [x] Take a image/backup of the ccstate on first launch so changes can be reverted without backboard respring (+TS Devices)
- [x] Colours
- [x] Respring/custom actions
respring/both types/xpc crasher as a custom action
imma do that
Writeup?
- Shortening bundle ID is supported
- Make any bundleID small which means you can map each module to some 2 letter string
- free space in DMS file for sizing any module to practically any size
- Derive a two letter hex ID or something from the module name?
- Restricted/hidden modules
- Default bundleIDs are listed as hidden in the ModuleConf file
- Some need info.plist editing to disable conditional visibility + add correct OS support
- Resizing
- Assuming you change all bundleIDs you can change them in DMS too - resize any module
- You can set bothway or portrait/landscape size for any module
- Only limitation is the amount of bytes...
- Moving modules
- BundleIDs that cant be moved seem to be defined somewhere, probably hardcoded
- This means you need to change bundleID of (default) modules you want to move
- They then show up in ModuleConf after respring
- Flow would be to patch, respring once and then moduleconf auto has all the plist space
- Could also change all modules to zeros then respring once and moduleconf will have like 2kb extra space (probably only useful if I can find privateframework/call to refresh CC without respring)
- Alternate flow where you apply all the ID changes and as the app stays running you can watch the ModuleConf and when it changes you quickly add all your modules
- Note: iOS 15 seems to have two ModuleConf files???
extension String {
func checksum() -> String {
return "\(self.prefix(1))\(String(format: "%02x", self.utf8.reduce(0, { $0 ^ $1 })))"
}
}
3 letter hashing function thing to use for module bundleIDs
PROTOTYPE module size in info.plist is a sizing setting below priority of DMS, but make DMS empty and now you have per module sizing.