Commit Graph

119 Commits

Author SHA1 Message Date
529e6fdfaf [release] Bump to version 66.0
Some checks failed
ci / test (push) Failing after 1m53s
ci / build-and-deploy (push) Has been skipped
- Do a deep dive on making homepage clearer and more efficient
2026-08-24 10:16:15 -04:00
2d80c26e6c [books] Add goodreads exports 2026-08-23 19:05:52 -04:00
1206dee290 [tasks] Clean up fields and simplify form 2026-08-23 17:28:46 -04:00
74d0c67f02 [backups] Fix pg_dump not found in celery backup task 2026-08-13 18:56:11 -04:00
8a392f4fa2 [trails] Add geo-derived names, terminus and route tags to trail imports 2026-08-13 15:06:58 -04:00
bef416b7a1 Add WebDAV backup push to backup_database 2026-08-10 12:14:57 -04:00
bce6639b04 [scrobbles] Add dedup_scrobbles command to remove duplicate scrobbles (69f22940)
All checks were successful
ci / test (push) Successful in 2m6s
ci / build-and-deploy (push) Has been skipped
2026-08-10 00:31:54 -04:00
cbf027203c [music] Report and fix mismatched track metadata (0b98a1b9) 2026-08-09 10:23:09 -04:00
5e3b0055dc [music] Resolve artist identity before splitting (fd86a11a) 2026-08-08 20:35:45 -04:00
5f88d97c69 [scrobbles] Trust webhook POST data and enrich tracks async (db6b05f8) 2026-08-08 20:16:29 -04:00
d5a753146f Fix LastFM rate limiting dropping scrobbles (f91fdd53 follow-up) 2026-08-08 00:40:29 -04:00
4e46bcd5c1 Fix historical LastFM import resume and dedup (f91fdd53) 2026-08-07 23:56:37 -04:00
dc17a285c1 [scrobbles] Share log data on shared scrobble links (46de9f0e) 2026-08-07 20:19:32 -04:00
c61823f881 [workouts] Mark imported workout scrobbles as complete (not in progress) 2026-08-07 14:36:51 -04:00
fbb1725d10 [scrobbles] Fix LookupError in scrobble start and long-plays media lookups (868e2a91) 2026-08-07 13:02:43 -04:00
b815ca4e80 [workouts] Add Flexify workout importer (96c9fbf5)
All checks were successful
ci / test (push) Successful in 2m26s
ci / build-and-deploy (push) Has been skipped
2026-08-07 12:46:32 -04:00
5def87e7f1 [workouts] Add workouts app with exercise catalog and workout routines (ca613753) 2026-08-06 20:36:24 -04:00
6cd05ff6c8 [tasks] Clean up org-mode note syncing for emacs webhooks (aa3dae85)
All checks were successful
ci / test (push) Successful in 2m10s
ci / build-and-deploy (push) Has been skipped
2026-08-03 12:02:08 -04:00
b8eb13083f [agents] Notify on agent responses and retry failed prompts 2026-08-03 10:25:39 -04:00
42ccdf5507 [agents] Offer Gemini as a model option alongside OpenRouter
Some checks failed
ci / test (push) Has been cancelled
ci / build-and-deploy (push) Has been cancelled
2026-07-31 23:52:54 -04:00
1e338dec2d [agents] Swap agent flow to OpenRouter with model selection
All checks were successful
ci / test (push) Successful in 2m35s
ci / build-and-deploy (push) Has been skipped
2026-07-31 23:06:09 -04:00
de84e191df [geoloc] Handle Nominatim 429 rate limits with throttle and retry
All checks were successful
ci / test (push) Successful in 2m45s
ci / build-and-deploy (push) Has been skipped
2026-07-31 22:31:13 -04:00
668570188a [agents] Use dedicated GOOGLE_AI_API_KEY for Gemini agent provider
Some checks failed
ci / test (push) Has been cancelled
ci / build-and-deploy (push) Has been cancelled
2026-07-31 09:50:02 -04:00
af84e1419b [agents] Auto-complete agent session scrobbles after 10 minutes
All checks were successful
ci / test (push) Successful in 2m51s
ci / build-and-deploy (push) Has been skipped
2026-07-31 08:19:23 -04:00
eb991dbf0e [agents] Show agent sessions on homepage with first-prompt title
Some checks failed
ci / build-and-deploy (push) Has been cancelled
ci / test (push) Has been cancelled
2026-07-31 00:26:58 -04:00
0c92174440 [agents] Add agent-session scrobbling for Gemini and opencode providers
All checks were successful
ci / test (push) Successful in 3m2s
ci / build-and-deploy (push) Has been skipped
2026-07-31 00:21:24 -04:00
124eb86b74 Remove concurrent-reading trend, replace with concurrent-media-listening 2026-07-30 12:07:55 -04:00
c21d6f5668 fix(tests): fix fasting custom threshold tests using Django ORM cache
The user_with_custom_thresholds fixture used UserProfile.objects.get_or_create()
which returns a separate Python instance from the one cached in
user._state.fields_cache['profile']. When the fixture modified and saved
the get_or_create instance, the cached instance on the user object still
held default values (periodic=16, full=24). compute_fasting() accessed
u.profile which returned the stale cached object.

Fixed by modifying through u.profile directly, which operates on the
same cached instance. Also applied black formatting to fasting.py.
2026-07-19 13:50:54 -04:00
29fc493cc2 Rewrite fasting trend algorithm and add comprehensive tests
- Replace day-iteration algorithm with pair-based approach for fasting
  detection. Iterate consecutive food scrobble pairs and mark foodless
  days between them as fasting days.

- Handle consecutive-day periodic fasting: when two food scrobbles are on
  consecutive days with a gap >= periodic_threshold but < full_threshold,
  mark the later day as a periodic fast (user's original bug fix).

- Fix _dt test helper to use replace() instead of subtracting hours,
  producing correct timestamps (e.g., '3 days ago at 18:46' instead of
  '3 days + 18h46m ago').

- Fix total_days off-by-one: removed +1 from inclusive day count so a
  'last_30' period correctly reports 30 days.

- Add _drinks_on_day() for per-day drink detection (replaces whole-
  window _drinks_in_window for more accurate liquid fasting detection).

- Fix Beer test fixture to use styles M2M field instead of non-existent
  beer_style attribute.

- Add 26 test cases covering: classification, short gaps, periodic/
  full/liquid fasting, multi-day gaps, vacation exemptions, custom
  thresholds, streaks, mixed types, edge cases.

Reasoning:
The original day-iteration algorithm had fundamental issues: it marked
days with food as fasting (since it only checked prev/next food times),
it didn't filter out normal (< periodic) gaps, and the _dt helper was
misinterpreting hour parameters. The new pair-based approach is cleaner:
for each consecutive food scrobble pair, we mark the foodless days
between them. This naturally handles multi-day fasts and correctly
avoids marking food-eating days as fasting. The consecutive-day periodic
rule preserves the user's original intent of detecting overnight fasts
between meals.
2026-07-19 13:11:29 -04:00
dccc80c615 [discgolf] Fix tests and naming scheme
Some checks failed
build / test (push) Has been cancelled
2026-06-20 00:55:16 -04:00
033239260f [perf] Add caching and lock protections
All checks were successful
build / test (push) Successful in 1m57s
2026-06-19 13:37:30 -04:00
c6b1e42d7a [scrobbles] Use IDs not UUIDs in URLs
All checks were successful
build / test (push) Successful in 1m59s
2026-06-18 11:25:57 -04:00
ed2ed59f65 [scrobbles] Fix tests around visbility 2026-06-09 12:48:01 -04:00
58639c6fc1 [importers] Add error_log to surface import errors
All checks were successful
build / test (push) Successful in 2m2s
2026-06-08 10:58:02 -04:00
8d069df9d1 [scrobbles] Fix log saving tests 2026-05-31 23:24:22 -04:00
22956c7c7f [music] Tracks can have multiple artists
All checks were successful
build & deploy / test (push) Successful in 1m54s
build & deploy / build-and-deploy (push) Successful in 33s
2026-05-28 23:37:46 -04:00
83e7061b92 [birds] Fix tests
All checks were successful
build & deploy / test (push) Successful in 1m54s
build & deploy / build-and-deploy (push) Successful in 27s
2026-05-23 18:29:16 -04:00
9bafe45951 [trails] Use half way waypoints
All checks were successful
build & deploy / test (push) Successful in 1m51s
build & deploy / build-and-deploy (push) Successful in 29s
2026-05-21 17:13:04 -04:00
62c200ab05 [trails] Fix webdav importer
All checks were successful
build & deploy / test (push) Successful in 1m54s
build & deploy / build-and-deploy (push) Successful in 26s
2026-05-21 13:54:28 -04:00
7c33095d87 [trails] Pull data out of FIT/GPX files
All checks were successful
build & deploy / test (push) Successful in 1m50s
build & deploy / build-and-deploy (push) Successful in 27s
2026-05-21 11:17:13 -04:00
cb50de13c0 [trails] Add auto GPX and FIT file importing
All checks were successful
build & deploy / test (push) Successful in 1m51s
build & deploy / build-and-deploy (push) Successful in 32s
2026-05-21 10:52:23 -04:00
e85d6ec779 [birds] Fix importer not finishing, and add formjs 2026-05-15 12:20:27 -04:00
f160f5a7b8 [birds] Add much better bird importing
Some checks failed
build & deploy / test (push) Failing after 1m19s
build & deploy / build-and-deploy (push) Has been skipped
2026-05-15 12:10:20 -04:00
b1d6f4726b [deploy] Fix deploy failing
Some checks failed
build & deploy / test (push) Successful in 1m57s
build & deploy / build-and-deploy (push) Failing after 16s
2026-05-01 16:57:51 -04:00
cbdb5c49d0 [deploy] Add commit catpure to deploy step
Some checks failed
build & deploy / test (push) Failing after 1m31s
build & deploy / build-and-deploy (push) Has been skipped
2026-05-01 16:48:58 -04:00
f486b1614b [videos] Blow out imdb tests
All checks were successful
build & deploy / test (push) Successful in 1m54s
build & deploy / deploy (push) Successful in 19s
2026-04-28 17:29:25 -04:00
78651af802 [tasks] Fix Todoist callback to lookup by user 2026-04-01 11:53:04 -04:00
59998ac849 [scrobbles] Allow Bearer or Token
All checks were successful
build & deploy / test (push) Successful in 1m40s
build & deploy / deploy (push) Successful in 23s
2026-03-31 14:43:40 -04:00
2ca3dd1ed9 [scrobbles] Update webhook view permissions and small template changes 2026-03-30 12:54:21 -04:00
ea66ee376d [tests] Fix scrobble tests
Some checks failed
build & deploy / test (push) Successful in 1m49s
build & deploy / deploy (push) Failing after 2m3s
2026-03-27 16:06:24 -04:00