1
0
Fork 0
Commit graph

57 commits

Author SHA1 Message Date
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
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
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
7c843cbd81
Fix autoplay for videos on item page 2025-09-20 14:14:02 -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
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
c8c1b65ce2
Try generating thumbhashes during import pipeline
Also show loading spinner for videos
2025-09-18 09:07:05 -06:00
Matthew Holt
9c62428389
Fix image loader flow/layout 2025-09-17 17:08:39 -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
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
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
0758f9a588 Some map page improvements
- Hopefully (!?) fixed map element sizing bug on page load
- Hopefully (!?) fixed bug where polyline layers wouldn't render sometimes
- Added time labels between points
- Made marker tooltips/popups more informative, though they still require lots of work
- Made lines slightly more legible

I suspect there are still some weird/sporadic bugs in the map page... but it's harder to find them now. Not sure if good or bad, haha.
2025-07-01 14:00:57 -06:00
Matthew Holt
ae647fadaa
Fix the mysteriously disappearing slow loader
I think
2025-05-13 13:31:06 -06:00
Matthew Holt
874be1a9ca
Add UI for unique constraints and item update preferences 2025-05-12 12:34:48 -06:00
Matthew Holt
4633061631
Show detected faces on hover in sidebar 2025-05-05 21:40:23 -06:00
Matthew Holt
c374a7ccf7
Highlight entities in pictures! (from Apple Photos)
This is a very temporary PoC.
2025-05-05 17:37:32 -06:00
Matthew Holt
3d2222fce2
Fix thumbnail job size count and paging; other minor fixes
Including one fix for a panic introduced by obfuscated logging during processing
2025-05-01 11:15:13 -06:00
Matthew Holt
a0b3bcc2bb
Fix the look of alerts/toasts with Tabler 1.1/1.2 changes 2025-04-28 21:28:37 -06:00
Matthew Holt
058e933742
Refine file picker styles slightly 2025-04-25 21:49:39 -06:00
Matthew Holt
6a19bf891e
Aesthetic improvements/fixes
- No more jiggly lines on the job throughput chart
- Gallery/image fixes for thumbhash element overflow and rounded corners
2025-04-21 16:15:03 -06:00
Matthew Holt
b88485a84b
A few fixes/enhancements
googlelocation: Allow iOS on-device location filename to be renamed, but it should still contain "location-history" and be a .json file.

- Upgrade mapbox-gl-js to 3.11

- Run thumbnail+embedding jobs even if import failed; WIP
2025-04-19 13:44:51 -06:00
Matthew Holt
b4d4f4b88e
Variety of minor UI enhancements 2025-04-13 22:51:30 -06:00
Matthew Holt
b4f43b662d
Super minor tweaks 2025-04-11 16:31:25 -06:00
Matthew Holt
a749c74747
Fix map size; auto-detect locale 2025-04-11 14:18:04 -06:00
Matthew Holt
70d8090c4e
ui: Add date picker to conversations view 2025-04-11 11:01:23 -06:00
Matthew Holt
2992c87fcf Upgrade to Tabler v1.1.1 2025-04-09 07:50:38 -06:00
Matthew Holt
cce63835c5 Add toggle for hidden files in file picker (close #69) 2025-04-09 07:50:38 -06:00
Matthew Holt
932831db47
Refactor data sources to make them dynamic
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.
2025-02-11 16:49:20 -07:00
Matthew Holt
a6da2ee542
applecontacts: Split out this data source; imessage: FIxes & improvements 2025-01-22 22:35:46 -07:00
Matthew Holt
83635f444d
WIP entity page 2025-01-16 14:43:46 -07:00
Matthew Holt
7123e0d409
Replace ApexCharts with ECharts; UI fixes and improvements 2025-01-15 14:21:55 -07:00
Matthew Holt
8b36413457
Upgrade Tabler to beta 23; minor fix on Entity page 2025-01-08 12:38:47 -07:00
Matthew Holt
bb9151628f
WIP: new entity page; delete almost all DB indexes
Imports are now 4-5x faster and queries are still just about as fast. New indexes should only be created after proving their usefulness.
2025-01-07 13:42:05 -07:00
Matthew Holt
5ec783ecb8
Coupla fixes; also file picker now remembers last path 2025-01-02 20:33:50 -07:00
Matthew Holt
a00e478f32
Fix entity select in conversations view 2025-01-02 13:12:05 -07:00
Matthew Holt
ec5c6eb479
Upgrade Tabler to beta 22; new chat UI for messages 2025-01-02 11:26:35 -07:00
Matthew Holt
9a78d60ef9
Fix some UI filter related issues 2025-01-02 08:10:15 -07:00
Matthew Holt
5816c571c6
WIP settings: save is starting to function 2024-12-31 20:58:07 -07:00
Matthew Holt
a1577ca24a
Upgrade to Tabler beta 21, with fixes for breaking changes 2024-12-30 14:17:37 -07:00
Matthew Holt
3d11d65b8d
WIP settings page; #map mobility; WIP interactive imports
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.
2024-12-26 11:51:47 -07:00
Matthew Holt
ce297389b0
Thumbnail job streaming; WIP: interactive imports 2024-12-19 06:51:06 -07:00
Matthew Holt
fcaa238634
Implement pause/unpause 2024-12-13 13:02:06 -07:00
Matthew Holt
b4149dc649
More live job stats/rendering improvements 2024-12-11 14:04:07 -07:00
Matthew Holt
aa12d85c22
Fix job cancellation; wire up more of job UI 2024-12-10 23:13:14 -07:00