1
0
Fork 0
Commit graph

137 commits

Author SHA1 Message Date
Matthew Holt
a4ec710f9f
Various fixes and improvements (imessage, duplicate rows, etc) 2025-01-21 10:16:38 -07:00
Matthew Holt
29e2bc8fef
Fix iphone/imessage: Update attribute_id in DB if inserting item piecewise
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.
2025-01-09 18:09:58 -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
ec5c6eb479
Upgrade Tabler to beta 22; new chat UI for messages 2025-01-02 11:26:35 -07:00
Matthew Holt
294e2a72a9
Reconnect after disconnection; improve checkpointing 2024-12-17 14:27:50 -07:00
Matthew Holt
e34667bcce
googlelocation: Fix checkpoints 2024-12-16 20:21:16 -07:00
Matthew Holt
d7b1d73796
Auto-resume jobs on start; improve checkpoint performance 2024-12-16 16:23:26 -07:00
Matthew Holt
e319e1f60d
Checkpoints for Google Location; minor jobs fix 2024-12-16 10:57:34 -07:00
Matthew Holt
a4d8bc923d
Data source checkpoints; refine import concurrency
And related improvements and fixes
2024-12-15 22:40:58 -07:00
Matthew Holt
5844c5755b
Fix most (all?) lint warnings 2024-12-11 18:59:24 -07:00
Matthew Holt
aa12d85c22
Fix job cancellation; wire up more of job UI 2024-12-10 23:13:14 -07:00
Matthew Holt
13131aba65
Run ANALYZE after imports and at startup; add NMEA icon 2024-12-08 05:29:17 -07:00
Matthew Holt
37461545be
Fix fs.SkipDir usage; and minor bug in NMEA
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.
2024-12-07 21:16:36 -07:00
Matthew Holt
53ca6063ab
Several fixes, performance improvements 2024-12-07 12:36:42 -07:00
Matt Holt
746e5d6b5c
Refactored import flow, new import UI, thumbnails stored in timeline, etc. (close #3) (#43)
* 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
2024-12-06 11:03:29 -07:00
Matthew Holt
b8feef6b44
Make bookmark mini display look nicer 2024-09-15 21:55:12 -06:00
Matthew Holt
23f4aa3cb9 nmea: Tolerate variable newlines 2024-09-12 06:05:05 -06:00
Sergio Rubio
ec57f1740e
chore: clean github ds leftovers (#56)
* chore: clean gitub ds leftovers

Missed this in https://github.com/timelinize/timelinize/pull/48 after
refactoring the code.

* One more
2024-09-11 14:13:18 -06:00
Matthew Holt
332bf09ac6
Fix new lint errors 2024-09-11 12:39:27 -06:00
Matthew Holt
2aac6affc9
nmea: Ignore VTG, GSA sentences; convert knots to m/s
Now tested with Kenwood and Yaesu radio GPS logs
2024-09-11 11:11:07 -06:00
Sergio Rubio
0c0a8770de
generic: Fix dot filename when importing a single file (#47)
* Invalid file path when importing a single file

Adds a test that proves importing a single file sets the file name to
'.'

* Clean test a bit

* Expand test

* 💄 test

* One more test

* Appease the linter

* 💄

* Add missing fixture

* Set the right Filepath when processing single files

* Simpler fix suggested by @mholt

* Simplify tests

* Add clarifying comment

* Rename the test
2024-09-06 14:03:26 -06:00
Sergio Rubio
ef287c1bb9
GitHub data source (#48)
* GitHub stars data source

Data source that imports GitHub starred repositories in JSON format.

Each starred repo is imported individually, the starred repo
metadata comes from the GitHub API.

The item timestamp is set to the starred date, so they appear in the
timeline the day the repo was starred.

A small json file is saved in the timeline repository data directory
with the metadata retrieved from the GitHub API, which looks like:

```
{
 "id": 841044067,
 "name": "timelinize",
 "html_url": "https://github.com/timelinize/timelinize",
 "description": "Store your data from all your accounts and devices in a single cohesive timeline on your own computer",
 "created_at": "2024-08-11T13:27:39Z",
 "updated_at": "2024-09-03T07:17:29Z",
 "pushed_at": "2024-09-02T15:31:59Z",
 "stargazers_count": 504,
 "language": "Go",
 "full_name": "timelinize/timelinize",
 "topics": null,
 "is_template": false,
 "Topics": "archival,data-archiving,data-import,timeline",
 "private": false,
 "starred_at": "2024-08-12T17:55:48Z"
}
```

The data source currently expects the JSON file to be named like:

- ghstars.json
- ghstars-<ISO date>.json
- ghstars-<UNIX timestamp>.json

* Linter fixes

* Remove optional options

* Add the URL label to the bookmark class

* Change the data source name to GitHub

* Rename data source directory also

* Rename datasource main file

* Store GitHub starred repo URL only

* rename symbols

* Add basic tests

* moar tests

* Linter fix

* You can read on closed channels

* Add bookmark svg for the frontend

* Update package docs

* 💄 docs

* Update datasources/github/github.go

Co-authored-by: Matt Holt <mholt@users.noreply.github.com>

* Update datasources/github/github.go

Co-authored-by: Matt Holt <mholt@users.noreply.github.com>

* Update datasources/github/github.go

Co-authored-by: Matt Holt <mholt@users.noreply.github.com>

* Remove content from item

---------

Co-authored-by: Matt Holt <mholt@users.noreply.github.com>
2024-09-06 11:22:07 -06:00
Matthew Holt
95fcafb96c
vcard: Fix name and address formatting 2024-09-02 06:46:37 -06:00
Sergio Rubio
ff1dfc4afc
ci: add workflow to run go test (#40)
* chore: add workflow to run go test

* fix a test failure

* Downgrade heif to be able to test

* run all tests by default

* Revert typo fix

* Fix metadata test
2024-08-30 13:10:34 -06:00
Matthew Holt
e3680c219b
Fix more lint errors; couple of minor regressions 2024-08-30 07:19:42 -06:00
Sergio Rubio
ac29bbd26b
chore: linter fixes (#39)
* chore: linter fix, remove unused argument

* min is a built-in function (predeclared identifier)
2024-08-30 06:31:12 -06:00
Matthew Holt
55b503ae4d
More lint fixes 2024-08-29 20:39:56 -06:00
Matthew Holt
3066ddbeb9
Major linting overhaul
I've addressed most of the "fast" linters errors locally in my editor.

Some linters are broken or buggy.
2024-08-29 16:43:52 -06:00
Matthew Holt
21d5a2ed8e
chore: Fix some lint errors (add package comments) 2024-08-28 16:05:43 -06:00
Sergio Rubio
12300753a9
geojson: property parsing fixes (#35)
* 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).
2024-08-23 07:53:20 -06:00
Matthew Holt
bc5c07d706
geojson: Accept freeform feature properties as metadata
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).
2024-08-22 16:55:53 -06:00
Sergio Rubio
a24d575883
GeoJSON: save and display additional metadata (#33)
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
2024-08-22 14:06:25 -06:00
Michael Bolli
48b1dd3e55
geojson: location(): enhance timestamp detection if array has more than 4 members (#29) 2024-08-20 10:27:03 -06:00
Michael Bolli
2abf8443c8
geojson: Add UI for data source options (#27)
* add geojson import options ui

* geojson: `location()`: fix positions with more than two values were not processed
2024-08-19 11:46:51 -06:00
Matthew Holt
a581abf765
geojson: Accept noncompliant positions; refactor & fix bug (fix #23) 2024-08-16 15:05:25 -06:00
Matthew Holt
e296b73d2d
googlelocation: Support on-device location history (close #20) 2024-08-14 16:31:27 -06:00
Matthew Holt
1daf6f4157
Initial open source commit 2024-08-11 08:02:27 -06:00