The gofakeit upgrade uses the new math/rand/v2 package, which uses uint64 more than int64, so we had to change a bunch of row IDs from int64 to uint64.
fs.SkipDir documentation is a bit unclear: does it skip the remainder of files in the directory when returned from walking a file, or does it no-op on files and only skip going INTO dirs when on a dir?
I thought it was the latter, and thus, we didn't need to check whether the current DirEntry was a directory before returning (most commonly, when we are trying to skip hidden files/folders). But nope, it's the former -- SkipDir will skip the rest of the entries in the directory, which is NOT what we want. We just want to avoid going INTO a hidden directory in our case.
So unfortunately we now have to check IsDir() before returning.
Also fixed a slight bug with NMEA processing.
* Schema revisions for new import flow and thumbnails
* WIP settings
* WIP quick schema fix
* gallery: Image search using ML embeddings
Still very rough around the edges, but basically works.
'uv' gets auto-installed, but currently requires restarting Timelinize before it can be used.
Lots of tunings and optimizations are needed. There is much room for improvement.
Still migrating from imports -> jobs, so that part of the code and schema is still a mess.
* Implement search for similar items
* Finish import/planning rewrite; it compiles and tests pass
* Fix some bugs, probably introduce other bugs
* WIP new import planning page
* Fix Google Photos and Twitter recognition
* Finish most of import page UI; start button still WIP
* WIP: Start Import button
* Fixes to jobs, thumbnail job, import job, etc.
* Implement proper checkpointing support; jobs fixes
* Accept geojson files without a time property: do not return an error
if well-know time properties aren't found, which prevents the entire
feature from being ingested.
* Random properties aren't stored sometimes: do not modify the map while
iterating it, as that can have unpredictable effects according to the spec
(https://go.dev/ref/spec#For_range).
Certain property names related to time, altitude, heading, etc., are extracted to the best of our ability.
Updates #33
Also a minor fix for a bug in spa.js when creating a new timeline with no owner info (other than name).
Stores additiona feature properties as metadata, which makes for a nicer
rendered object:
- Name: name given to the feature
- Country: readable country name
- ISO country code
- Notes: arbitrary text notes
The spec[^1] doesn't seem to define the properties allowed here, it can
be an arbitrary JSON object, so maybe a better option in the future
would be to read and save all the properties available.
[^1]: https://datatracker.ietf.org/doc/html/rfc7946#section-3.2