Allow TLZ_ORIGIN to accept multiple origins separated by commas for more
flexible CORS configuration. Whitespace around each origin is trimmed and
empty values are filtered out.
Example: TLZ_ORIGIN="http://localhost:3000,http://example.com:8080"
Co-authored-by: Dulanic <Dulanic@users.noreply.github.com>
Co-authored-by: Matt Holt <mholt@users.noreply.github.com>
- New config parameter "resume_jobs" which can disable auto-resuming jobs at timeline open. (closes#159)
- Renamed "a" to "app" in one method using "Rename symbol" (not "Change all occurrences"), which surprisingly updated the identifier in ALL methods. That must be new. Anyway, that's the huge diff.
- Minor fix to metadata merge that does a more proper nil check to avoid a panic.
- Changed some omitempty to omitzero
This is not ideal... should probably be a blurry video instead, (or animated webp!?) but ain't nobody got time for that right now when there's DB corruption happening
- iCloud logo was just a rasterized SVG, derp. Now it's a true SVG. Much smaller.
- Contact lists and vcards are pretty slow to import due to downloading profile pictures, so move those last
I don't love that the type has to be stored in the table... it would be great if we could infer it, but I don't know how that would work for strings that look like another type.
Fixed several bugs introduced by the pipeline refactoring.
Updated goexif2 fork to use my latest commit which fixes not being able to find EXIF data on some JPEG images.
Embeddings now refer to the item they are for, rather than an item referring to a single embedding. This allows items to have multiple embeddings if necessary, which gives us some flexibility when models change/improve, etc.
Also reworked the Python server to use a smaller model (base siglip2 instead of so400m) so that it will fit on more GPUs, including my 4070; as well as a new "DeviceManager" that ChatGPT helped me figure out, to choose GPU when it has enough memory for it, as conditions change.
This is useful if a My Timeline subfolder is (sort-of) implicitly created for the user, and the user doesn't realize that is where their timeline is. They should be able to select the same folder to open the timeline as they did to create it.
The sorting can help imports go faster if we put DB-heavy sources first, when the database is still small.
The data source names were also standardized to use snake_case like most other word-IDs in the app.
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.
Also change the checkbox dropdown to a more interactive tomselect (type-to-search dropdown with chips) with pictures.
This makes it so data sources can be added to a timeline dynamically.
In the future, data sources can be implemented externally and push data to the timeline, so these need to not be rigidly hard-coded into the app and assumed to never change.
This essentially adds all their info (name, title, description, image, etc) into each timeline DB.
* ci: Attempt to fix broken CI
It broke out of the blue several months ago. I think ubuntu-latest
updated, but there's no PPA for libheif in that distro I guess
* Try tests next
* More fixing
* Try again
* Yada yada
* Woops
* I don't really know what I'm doing
iMessage db may send a reaction graph for a message before sending the message itself to the pipeline, thus an empty item with only an original ID gets inserted, and later the full message item comes in, but I had neglected to add attribute_id to updateOverrides.
Settings page is started; non-functional, but location picker works.
Moving maps between container elements is improved by moving to nearest to mouse pointer, rather than just most center to the viewport. It also emits an event when the map is moved, allowing us to change/reset map configurations for certain displays.
More progress on interactive imports. More thought is needed before continuing.
Upgraded Mapbox libraries.