I have decided to upgrade my 4/32 device (TL-WR841ND) from OpenWrt version 14 to 18.
And, despite of lots of red warnings on website, all turned out well.
I have added htop, nano, openssh-sftp-server, removed ppp and ppp-mod-pppoe and now even have free 268 KiB of /overlay storage for other software.
RAM usage is good too: 9088 KiB reported free with free command and 13.5 MiB is free on /tmp partition.
So only about 1/3 of RAM is actually used.
It is very good result and I wonder why developers like so much to scare owners of 4/32 devices.
It is common nowadays to write software with several buttons, which consumes tens or even hundreds megabytes of disk space and even more RAM.
But it's a shame, and not an example to follow.
No, it was make image command.
By the way, documentation states that running it without PROFILE parameter results in image for some default device. But in my case it built images for every device. Not what I was expecting. Maybe someone want to improve documentation.
No, make image defaults to no LuCI. That is also not what I was expecting, since manifest on downloads.openwrt.org contains it.
But my router was already configured and I was using it with LuCI disabled (for security and performance reasons), so I decided not to include it.
Also strange is that versions for make image packages differs from versions on the website. Newer -> (most likely) better, but that's a surprise. What if I decide to rebuild it several years later? (I guess there is a simple answer to this question, but I was not stumbled upon it when researching how to do an update)
It looks like you've got things well under control, in ways that many don't have the skills to accomplish.
As a heads up, JFFS2 typically requires two or three free "erase blocks" to function properly. Things get very dicey with only one, or fail entirely. Each erase block is typically 64 kB, so once you're below 192 kB free, you may start seeing misbehavior, such as write failures, settings not saving, or "disappearing" on reboot.