* Add admin ux to set image position.
* Fix leaflet markers. Sometimes the markers would not view, that was
because the trick to find the correct url for the marker images
didn't work when the css might load after the js. So just load the
css before the js instead.
* Update ructe to 0.4.x.
* Some cleanups, mainly clippy-suggested.
Sometimes the markers would not view, that was because the trick to
find the correct url for the marker images didn't work when the css
might load after the js. So just load the css before the js instead.
* Store width and height of images. Use it to calculate width and
height of small images in lists.
Since the old database should be migratable to the new, the width
and height fields are nullable. I aim to make them not nullable
later, after all images in the database has got width and height.
* Don't override picture orientation for existing images in
findphotos.
* Don't let the map hide dropdowns.
* Shorter about string in footer.
* Use kamadak-exif instead of rexif.
* Updates Diesel to 1.1.0, get rid of unnecessary New* structs.
* Miscellaneous code cleanup.
Use it to calculate width and height of small images in lists.
Since the old database should be migratable to the new, the width and
height fields are nullable. I aim to make them not nullable later,
after all images in the database has got width and height.
If a .png.br is six bytes less than plain .png, that is not
worth the overhead of having two files on the server and
decompressing .br before parsing the .png in the browser.
When a static file is in a format that is compressed in itself (such
as a jpeg or png image), applying gzip or brotli compression will
actually make it larger. In those cases, don't write the compressed
file ad all when running storestatics.
A static filed might be called somename.suffix, but there is no
need to assume that, and absolutley no need to copy the strings
separatley and format them together again when we can just
borrow the relevant substring directly from the request.