Date: 26 July 2025
Category: Icon Pusher
Anyone using the IconPusher app may have noticed that there's not been an update recently, the main reason for this is Google being difficult.
So to explain this, a couple of years ago Google changed their policy with how developers can access app details. By default now, the app can only get permissions of the app itself and system apps.
If we want to gain access to other installed apps, we now need to add in a new permission into the config to allow it.
With this change, every update to the app I've submitted has been rejected, requiring me to submit an appeal explaining why my app needs this permission to be enabled.
While annoying, it was generaaly fine, my updates still got published, although somewhat delayed.... until last year anyway.
The last update I tried to publish was rejected as usual, and I sent my appeal explaining why the permission to grant access to all apps was required.... then.... my appeal was rejected.
Apparently, the Icon Pusher app, with the sole function of accessing installed apps to submit to the site, doesn't qualify for needing the permission of accessing all the installed apps!
After sending multiple messages to Google, explaining why this permission is required, I gave up.
Soooo, I had been putting this off for ages, and I've recently received an email from Google threatening to delist the app if it's not updated.
Hopefully, I'll have more luck updating the app this time.
If not, I'll have to just start uploading releases for people to download.
Date: 25 July 2025
Category: Linux

I've recently been setting up a new server and ran into a file permissions issue I hadn't encountered before, and it took me hours to figure out.
So I've been setting up IconPusher on the new server, the API runs as a WAR file over Jetty9 which takes the uploaded app icons and puts them in the directory for the img subdomain.
However, once this was running on the new server, no matter what I tried, I was given a 'read only filesystem'.
I checked the usual suspects of directory permissions, Apparmor and SELinux... everything looked as it should be.
What I did in the end was to check the Jetty service to see what conditions were in effect. to do this I ran the command:
sudo systemctl cat jetty9
and this highlighted the issue:
Under the Security section was this line:
ProtectSystem=strict
So now I knew this was the cause, I could whitelist the directory I'm writing to.
This can be achieved by entering the following command:
sudo systemctl edit jetty9
And then entering the following:
[Service]
ReadWritePaths=/path/to/my/directory
This creates a new file at /etc/systemd/system/jetty9.service.d/override.conf so it can be modified here if preferred.
After adding this you need to reload the daemon:
sudo systemctl daemon-reload
And the jetty9 service:
sudo service jetty9 restart
Then you can check that the change is in effect with the following:
sudo systemctl cat jetty9
Date: 7 July 2025
Category: Icon Pusher
Not a huge amount to see in the latest update, but hopefully the general experience will be improved.
The API was upgraded to use KTOR v3.2.1 from v2.3.10, which involved a number of updates to get working.
The main reason for this change was to hope it addresses a rare issue where the API would randomly die without warning.
There was also a lot of restructure on the front end of the website, to help improve general performance.
Date: 11 May 2024
Category: Icon Pusher
Icon pusher was something I whipped up back in 2020. For those who don't know (the majority I imagine), icon pusher is a utility for icon pack developers to get the app details and icons they need to create their packs.
The idea of some hefty QOL changes have been on the cards for a while but have only recently been worked on. The main of which is the ability to select multiple apps at once and being able to download all the data in one go. On the original version of the site, to get the data for multiple apps you would have to go back & forth between all the apps, copying all the XML data and download each icon individually. While this did the job, it was pretty inconvenient.

Version 2.0 of the website is currently available as a beta version. While it's mostly there functionality wise, there are a few pieces which still need tidying up.