1
0
Fork 0
Commit graph

162 commits

Author SHA1 Message Date
TherionAcribus
2063b9e308
frontend: Add svg for document (#182) 2026-01-12 14:39:05 -07:00
changeling
2cddac7c2b
Add Select All checkbox to Entities page. (#174)
Add checkbox to table header in entities.html.
Add logic to handle `Select All` checkbox to entities.js.
2025-11-12 13:10:46 -07:00
Matthew Holt
c04438c51a
frontend: Improve avatar initials; support wss:// 2025-11-04 13:43:33 -07:00
Matthew Holt
01d9ea43dd
frontend: Fix remaining issues in #158 2025-10-23 12:15:20 -06:00
Matthew Holt
073524ccb3
frontend: Upgrade to Echarts 6.0.0 2025-10-23 11:30:19 -06:00
Matthew Holt
716b63edde
frontend: Reset throughput chart on restarted job (fix #158) 2025-10-22 22:30:52 -06:00
Matthew Holt
765a7f0780 Improve hidden file management (close #134)
And minor fix to regression in KML recognition
2025-10-11 16:33:49 -06:00
Matthew Holt
6fa22bed8b
Support rendering of event class items 2025-10-07 09:53:31 -06:00
Matthew Holt
7dc9312237
Super minor fixes for obfuscation mode 2025-10-04 13:14:25 -06:00
Matthew Holt
41273050b0
Just a couple more tiny tweaks 2025-10-01 22:32:33 -06:00
Matthew Holt
5b10b3b59c
Fix item display styles (again...)
There are many situations to consider:
- Gallery page
- Preview modal on gallery page
- Item mini displays (timeline page, map page)
- Items page
- Item page

And then, for each of those, additionally:
- Demo mode off
- Demo mode on (images don't have the actual content image, only the thumbhash)

-And then, for each of those, additionally:
- Image cached
- Image not cached

(When an image is cached, no thumbhash is needed because it is immediately available.)

It's tricky to get everything looking right everywhere!
2025-10-01 22:07:28 -06:00
Matthew Holt
92dc1c7664
Show up to 100 KB of job config instead of 10 2025-09-30 15:20:55 -06:00
Matthew Holt
64aaa2a13c
Support thumbnails for PDFs
Also a few very minor frontend fixes/tweaks
2025-09-25 22:44:57 -06:00
Matthew Holt
ae3dde3e4c
Minor tweaks to the import page
- The return of the accordion button chevrons!
- Hid the Interactive option since it's not yet finished
- Moved a couple options into the advanced settings dialog
2025-09-23 21:47:18 -06:00
Matthew Holt
dab1adbf24
Force-update repo owner info when opening timeline
Bust the session storage cache in the browser

(Also load entity stored timestamp when loading entity)
2025-09-23 14:03:29 -06:00
Matthew Holt
8ac13e9b8e
Try to fix Tabler bug
See https://github.com/tabler/tabler/issues/2271
2025-09-23 11:33:32 -06:00
Matthew Holt
daac54cf92
Couple more style fixes 2025-09-23 11:30:48 -06:00
Matthew Holt
5541e49c5e
Upgrade Tabler from v1.1 to v1.4; minor style fixes 2025-09-23 11:00:34 -06:00
Matthew Holt
e44daa85df
Refactor location processing options
Add clustering strength parameter
2025-09-20 22:18:40 -06:00
Matthew Holt
7c843cbd81
Fix autoplay for videos on item page 2025-09-20 14:14:02 -06:00
Matthew Holt
35cecb9601
facebook: A few more fixes based on feedback 2025-09-20 13:25:36 -06:00
Matthew Holt
16a7d99fda
Actually fix map colors, kind of
The rendering seems inconsistent. If I refresh the page or load the results again, it fixes the color mismatches. I can't explain why they vary like this, other than potential mapbox bugs??
2025-09-20 10:08:42 -06:00
Matthew Holt
e3021dec26
Fix map path coloring 2025-09-20 08:52:27 -06:00
Matthew Holt
26f8b7da6f
Minor fixes; improve thumbnail job DB query speed
Also increase quality of transcoded videos on mac. 256k was horrendous. 512k is better but we might need 1024k.
2025-09-19 22:48:35 -06:00
Matthew Holt
63db7ebe80
Minor fix for avatars on conversations page 2025-09-19 15:05:37 -06:00
Matthew Holt
3c40bbc182
Minor UI fixes 2025-09-19 09:37:00 -06:00
Matthew Holt
6fef8ae50f
Fixes for obfuscated images and videos incl. thumbnails 2025-09-18 23:24:33 -06:00
Matthew Holt
1568874a59
Minor fixes for obfuscation mode 2025-09-18 21:18:05 -06:00
Matthew Holt
11acad7d0e
Minor UI tweaks, increase video thumbnail quality 2025-09-18 17:50:53 -06:00
Matthew Holt
4bd1ae8856
Optionally generate thumbnails during import
This does away with the experimental generation of thumbhashes during import. It's easier to generate the thumbnails and thumbhashes at the same time.

Does add a DB lock to phase1, but at this point the DB isn't the bottleneck in that phase.
2025-09-18 17:37:53 -06:00
Matthew Holt
68aff57517
facebook: Support missing profile info, require username 2025-09-18 14:17:57 -06:00
Matthew Holt
c8c1b65ce2
Try generating thumbhashes during import pipeline
Also show loading spinner for videos
2025-09-18 09:07:05 -06:00
Matthew Holt
5b583636bb
Ugh, stupid editor shortcut 2025-09-17 17:09:50 -06:00
Matthew Holt
9c62428389
Fix image loader flow/layout 2025-09-17 17:08:39 -06:00
Matthew Holt
55d65912ad
Show "Sent to" on item page when relevant 2025-09-17 13:17:03 -06:00
Matthew Holt
31dd7fd6f5 Try to support multi-archive Facebook exports; fix conversation loading
Conversations with more than ~6 participants should now load properly, also faster thanks to a simplified query
2025-09-16 11:26:23 -06:00
Matthew Holt
dd8c6e05cb Cocoa epoch dates are UTC
Also minor fix for map path coloring; should start from end of timespan'ed item, not beginning, otherwise gradient is skewed
2025-09-12 21:48:35 -06:00
Matthew Holt
2f40596ef4
Teensy tiny fix for word wrap in import plan table 2025-09-12 21:45:55 -06:00
Matthew Holt
201042da6e
Add simplification DS options for NMEA and GeoJSON 2025-09-12 13:14:04 -06:00
Matthew Holt
2b5fd57259
Proper support for mixed timestamps and time zones
This will be a long-time WIP, but we now support full timestamps with local time offsets, absolute ones with UTC times only, and wall times only.

Several other fixes/enhancements. Making an effort to display time zone in time displays throughout the app.

Can now try to infer time zones during import, which is the default setting.

This will take a while to fully implement but it's a good start. Just have to be really careful about date crafting/manipulation/parsing.
2025-09-12 11:17:49 -06:00
Matthew Holt
c9db392d20
Implement timeline settings stored in DB; toggle semantic features
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.
2025-09-05 16:27:17 -06:00
Matthew Holt
967f3ab28b
Fix panic from EXIF parsing; checkpoint resumption in Google Photos
Also show what file path information we do have for some imports that lack filename and preview, on the import job page.
2025-09-05 09:39:13 -06:00
Matthew Holt
b3376b5298
Fix pipeline bugs; rethink embeddings
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.
2025-09-04 21:40:50 -06:00
Matthew Holt
b68b33c7bb
Honor timeframe on Apple Photos/iMessage imports 2025-09-02 22:41:03 -06:00
Matthew Holt
55053f8096
Fixes from job logging refactoring 2025-09-02 14:14:32 -06:00
Matthew Holt
8d48eecdf1
Fix entity circles on item page
Instead of using px values, use %, since the layout can shift after computing the circle positions
2025-09-02 12:45:24 -06:00
Matt Holt
a85f47f1a3
Major processor refactor (#112)
* Major processor refactor

- New processing pipeline, vastly simplified
- Several edge case bug fixes related to Google Photos (but applies generally too)
- Major import speed improvements
- UI bug fixes
- Update dependencies

The previous 3-phase pipeline would first check for an existing row in the DB, then decide what to do (insert, update, skip, etc.), then would download data file, then would update the row and apply lots of logic to see if the row was a duplicate, etc. Very messy, actually. The reason was to avoid downloading files that may not need to be downloaded.

In practice, the data almost always needs to be downloaded, and I had to keep hacking on the pipeline to handle edge cases related to concurrency and not having the data in many cases while making decisions regarding the item/row. I was able to get all the tests to pass until the final boss, an edge case bug in Google Photos -- but a very important one that happened to be exposed by my wedding album, of all things -- exhibited, I was unable to fix the problem without a rewrite of the processor.

The problem was that Google Photos splits the data and metadata into separate files, and sometimes separate archives. The filename is in the metadata, and worse yet, there are duplicates if the media appears in different albums/folders, where the only way to know they're a duplicate is by filename+content. Retrieval keys just weren't enough to solve this, and I narrowed it down to a design flaw in the processor. That flaw was downloading the data files in phase 2, after making the decisions about how to handle the item in phase 1, then having to re-apply decision logic in phase 3.

The new processing pipeline downloads the data up front in phase 1 (and there's a phase 0 that splits out some validation/sanitization logic, but is of no major consequence). This can run concurrently for the whole batch. Then in phase 2, we obtain an exclusive write lock on the DB and, now that we have ALL the item information available, we can check for existing row, make decisions on what to do, even rename/move the data file if needed, all in one phase, rather than split across 2 separate phases.

This simpler pipeline still has lots of nuance, but in my testing, imports run much faster! And the code is easy to reason about.

On my system (which is quite fast), I was able to import most kinds of data at a rate of over 2,000 items per second. And for media like Google Photos, it's a 10x increase from before thanks to the concurrency in phase 1: up from about 3-5/second to around 30-50/second, depending on file size.

An import of about 200,000 text messages, including media attachments, finished in about 2 minutes.

My Google Photos library, which used to take almost a whole day, now takes only a couple hours to import. And that's over USB.

Also fixed several other minor bugs/edge cases.

This is a WIP. Some more cleanup and fixes are coming. For example, my solution to fix the Google Photos import bug is currently hard-coded (it happens to work for everything else so far, but is not a good general solution). So I need to implement a general fix for that before this is ready to merge.

* Round out a few corners; fix some bugs

* Appease linter

* Try to fix linter again

* See if this works

* Try again

* See what actually fixed it

* See if allow list is necessary for replace in go.mod

* Ok fine just move it into place

* Refine retrieval keys a bit

* One more test
2025-09-02 11:18:39 -06:00
Matthew Holt
9554343b6f
Further tune heat map based on feedback and more sample data 2025-08-22 12:16:00 -06:00
Matthew Holt
6c0abef275
Tuned heatmap to be more useful/accurate 2025-08-21 13:53:07 -06:00
Matthew Holt
eae7e1806d
Minor enhancements to logo/icon
Improves legibility and more optical balancing
2025-07-09 11:43:33 -06:00