Designer v1.4.3 changes (Patreon)
Content
Designer v1.4.3 i now available!
This update was on hold due to trying to make a deal with Havoc to host Designer. Unfortunately we couldn't come to an agreement. Designer will continue to stay where it is.
In short they wouldn't let me continue to host Designer on my 10+ year old repo and support the users there, as I have for so very long. That's it. This whole thing has really stressed me out.
I don't plan on forcing my existing users to use another method to get what they already paid for. I'm perfectly fine if they wanted to transition to a public repo, but i'm not forcing anyone.
The point of having it on Havoc was simply to give new users an easier way of getting Designer through a public repo with various payment methods I don't support.
Additions
- Moon info to weather information
- Enable Designer Touch on SB option in settings
- Search option for bundleIDs
- Flashlight toggle
- UIImageView color option
- Created landing page https://junesiphone.com/designer
Changes
- Moved SB settings under enable SB
Fixes
- Fixed bug where you had to respring after moving or applying an SB theme when enable hide options for SB was disabled.
- Fixed center in math causing crash
- Fixed if math() was set to nothing it would crash
Designer touch on SB
When this toggle is enabled it will pass touches from the stock springboard icon list to Designer which is underneath said view. This is useful when using a stock iOS layout. Before if you applied a music widget with this standard layout the music widget would not receive touches.
It wouldn't receive touches due to Designer being placed underneath the icon list. Since the icon list is on top on Designer it receives all the touches. With this new option the icon list will pass its touches to Designer, Designer will see if something in that area needs tapped and taps it.
Search option for bundleIDs
When making an AppIcon there wasn't a way to search the bundle ids. You had to scroll through the list. This was mainly done as I would never set bundle ids this way. Instead I would add the AppIcons without bundle ids and apply to the SB. Once it's applied to the SB you can then tap hold the AppIcons and change what app it is by selecting from the drawer.
What I didn't consider is if users put apps on the LS. If you do this on the LS you have no option to tap hold to open the drawer, as the drawer isn't on the LS only SB. For this reason I have added a way to search bundle ids.
UIImageView color option
This option is only available on UIImageViews and it comes with 2 options actually. Those being imageColor and imageIsBlack.
What this option allows you to do is change the color of a UIImage. Example if you have a white png you can now change it to any color using the color picker. This comes with some gotchas. If the image is black, you must set imageIsBlack to YES.
I didn't want to have the (imagesIsBlack) option and wanted to detect if it was white or black myself, but the algorithm I created wasn't the best. I would loop through every pixel discarding transparent ones and seeing if it was mostly white or mostly black. This had many drawbacks. You have to loop through every pixel which scales with image size and detecting things that where "semi" white was difficult.
For that reason imageIsBlack is an option. If image is white then ignore it, if it's black just make sure imageIsBlack is set to YES.
More dev notes (web view stuff)
Within this development period I looked heavily into Web views. A web view is a thing that loads websites, html, css, javascript. Web stuff. LockPlus, XenHTML, LockHTML, etc all used web views. Designer was created because web views do not work when spawned in the springboard (since iOS16). Reason Designer uses native elements.
That being said I would love Designer to support web views. It's a simple way for users to add things Designer isn't capable of. Example an analog clock, or calendar. Come to find out if you are on Serotonin then web views do work. This is most likely because they resign SpringBoard.
Since I got a taste of web views in Designer, I went crazy and fully implemented them. Added the element, added options to select htmls from a folder, added implementation for them to be exported, even added them to the user repo script. The whole nine.
This was before Dopamine 2.0 was released. When it was released, this was the first thing I tried. They didn't work, which I wasn't very surprised. Serotonin does something really special to the Spring Board that other jailbreaks wouldn't.
With all that said I had to make an executive decision. Do I add something to Designer that only works for a subset of users. This would be anyone on iOS 13 - iOS 15 or those who use Serotonin. My decision was no, but before I removed it I went down the rabbit hole of trying to get web views to work yet again.
Looking at Apples webkit source code, trying hundreds (probably more) methods to try to bypass this from tweak space. I failed to achieve this. I didn't fail completely, I was able to get html, javascript, css running in a web view on iOS16. The method in which I got it to work was not viable and not something I would add to Designer.
I used a very old version of web view, you know the one people complained about for years that Cydia used. Ya that one. What I found is I can allocate this web view and just not send it a request. Instead I pass the entire html through the script injector stringByEvaluatingJavaScriptFromString. It would load the entire html and run the javascript.
The thing is, it's not supposed to do this according to the blocks Apple has already placed. You can even see in the iOS logs (SpringBoard enabled WebThread) I found this quite funny. I believe Apple didn't feel the need to patch (or hasn't finished patching) this since it is an old web view which is deprecated btw, but if you want to load html and javascript in SpringBoard even though Apple doesn't want you to, you can. It's still possible.
My assumption is they blocked SpringBoard in webcore to prevent users from trying to hack through javascript, which is what some jailbreaks used in the past.
As far as using this in Designer, well it is a hack and not a very good one. It can load html, css and javascript but that's it. The initial load is all you get, many other things aren't available that are needed like window functions, refreshing, calling functions after the fact and more.
That being said, it may be possible one day to get web views to run on iOS16 and above, but until that day Designer will not have a web view options. Trust me I want it as bad as you do and you would not believe the time i've spent trying to make this happen.
Thanks for reading hope you enjoy the update.