Commit Graph

1910 Commits

Author SHA1 Message Date
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
17706f3f56 [project] Groom backlog 2026-08-08 12:33:15 -04:00
f7087ebe4e [celery] Queue-based task prioritization (672c81bf) 2026-08-08 12:11:08 -04:00
d5a753146f Fix LastFM rate limiting dropping scrobbles (f91fdd53 follow-up) 2026-08-08 00:40:29 -04:00
f8094fb1b0 [agent] Add opencode ignore file 2026-08-08 00:05:31 -04:00
3cec979d0a [release] Bump to version 65.0
All checks were successful
ci / test (push) Successful in 2m22s
ci / build-and-deploy (push) Successful in 1m26s
- Investigate how historice lastfm imports work
- Fix LookupError on scrobble start/long-plays views
- Add Flexify workout importer
- Add workouts app with exercise catalog and workout routines
- When sharing a scrobble, share the log data too
65.0
2026-08-08 00:04:53 -04:00
4e46bcd5c1 Fix historical LastFM import resume and dedup (f91fdd53) 2026-08-07 23:56:37 -04:00
080814d839 Split version history out of PROJECT.org into CHANGELOG.org 2026-08-07 21:54:24 -04:00
f04b7238b5 [tasks] Mark 868e2a91 scrobble lookup bug as done 2026-08-07 20:24:44 -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
89e95d2424 [workouts] Add the base for a workouts tracking app 2026-08-07 11:44:16 -04:00
5def87e7f1 [workouts] Add workouts app with exercise catalog and workout routines (ca613753) 2026-08-06 20:36:24 -04:00
550e17c5c5 [release] Bump to version 64.5
All checks were successful
ci / test (push) Successful in 1m59s
ci / build-and-deploy (push) Successful in 38s
- Clean up issues with org-mode notes
64.5
2026-08-03 12:06:19 -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
d19f931d21 [release] Bump to version 64.4
All checks were successful
ci / test (push) Successful in 2m1s
ci / build-and-deploy (push) Successful in 37s
- Fix raw HTML output from agent response
64.4
2026-08-03 11:10:14 -04:00
6dfdf0f1cb [agents] Fix raw HTML in agent session responses 2026-08-03 11:09:50 -04:00
937f431d7a [release] Bump to version 64.3
All checks were successful
ci / test (push) Successful in 2m1s
ci / build-and-deploy (push) Successful in 41s
- Add notifications when agent prompts return responses
- Make agent prompts more resilient
64.3
2026-08-03 10:27:59 -04:00
b8eb13083f [agents] Notify on agent responses and retry failed prompts 2026-08-03 10:25:39 -04:00
2ce3b756e6 [data] Add example data files 2026-08-02 09:59:30 -04:00
c874fb8c6d [release] Bump to version 64.2
All checks were successful
ci / test (push) Successful in 2m35s
ci / build-and-deploy (push) Successful in 1m11s
- Fix a bug in koreader imports using a static tmp file
64.2
2026-08-02 09:26:40 -04:00
8be6c7c5f3 [koreader] Use unique temp file for WebDAV import downloads 2026-08-02 09:25:52 -04:00
5c3583e7f0 [release] Bump to version 64.1
All checks were successful
ci / test (push) Successful in 2m36s
ci / build-and-deploy (push) Successful in 52s
- Add search for agent sessiosn
- Add rc.d files for FreeBSD process management
64.1
2026-08-01 21:43:20 -04:00
20e03dd686 [rc.d] Fix FreeBSD service scripts and switch deploy tooling to service(8) 2026-08-01 21:26:14 -04:00
8e16c8f91e [agents] Add search across agent prompts and responses 2026-08-01 20:34:39 -04:00
27b2f603ab [release] Bump to version 64.0
All checks were successful
ci / test (push) Successful in 2m28s
ci / build-and-deploy (push) Has been skipped
- Add Google Gemini as a model option back for agent sessions
- Update agent flow to use OpenRouter and select model
64.0
2026-07-31 23:55:01 -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
25f83bf08d [css] Bummp font on notes 2026-07-31 22:36:24 -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
d12a42adeb [release] Bump to version 63.2
All checks were successful
ci / test (push) Successful in 2m37s
ci / build-and-deploy (push) Successful in 41s
- Swap around AI API key for Google so Youtube still works
63.2
2026-07-31 09:51:25 -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
66fa555f63 [release] Bump to version 63.1
All checks were successful
ci / test (push) Successful in 2m31s
ci / build-and-deploy (push) Successful in 52s
- Fix agent scrobble bug with duration
- Swap around AI API key for Google so Youtube still works
63.1
2026-07-31 09:09:19 -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
63589c3fcc [release] Bump to version 63.0
All checks were successful
ci / test (push) Successful in 2m40s
ci / build-and-deploy (push) Successful in 56s
- Add agent-session scrobbling
- Fix small bug in nature importer if geojson is missing
63.0
2026-07-31 00:27:42 -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
952ed596da [nature] Fix bug in importer when geojson is missing 2026-07-30 23:04:55 -04:00
2d2f77cfb4 [release] Bump to version 62.2
All checks were successful
ci / test (push) Successful in 2m25s
ci / build-and-deploy (push) Successful in 1m42s
- Fix concurrent trend to be more useful
- Add a public blog feature for scrobbles with notes
- Add drf-spectacular for OpenAPI schema generation
62.2
2026-07-30 12:09:56 -04:00
124eb86b74 Remove concurrent-reading trend, replace with concurrent-media-listening 2026-07-30 12:07:55 -04:00
b437e2a970 Add blog endpoint at /blog/<username>/ showing scrobbles with notes 2026-07-30 11:25:58 -04:00
d08aedbe2a Add filters to scrobble API endpoint
Add django-filter support to the ScrobbleViewSet with filters for:
- in_progress: boolean filter for active scrobbles
- visibility: enum filter (public/shared/private)
- media_type: enum filter for all 25 media types
- source: text search filter (icontains)
- played_to_completion: boolean filter
- timestamp_after/before: datetime range filters

Changes:
- Create scrobbles/api/filters.py with ScrobbleFilter class
- Add filterset_class to ScrobbleViewSet
- Filters appear in OpenAPI schema at /api/v1/scrobbles/
2026-07-23 21:45:50 -04:00
408475f159 Add videogame API and register ViewSets for scrobble relationships
VideoGame was missing from the API router, causing
HyperlinkedModelSerializer to fail when generating URLs for scrobble
relationships.

Changes:
- Create videogames/api/ with serializers and views
- Register VideoGameViewSet at /api/v1/videogames/
- Register VideoGameCollectionViewSet at /api/v1/videogame-collections/
- Register VideoGamePlatformViewSet at /api/v1/videogame-platforms/
2026-07-23 21:42:39 -04:00
caff69c714 Register missing trail and food-category ViewSets in API router
TrailViewSet and FoodCategoryViewSet were imported but never registered
in the DRF router, causing HyperlinkedModelSerializer to fail when
trying to generate URLs for scrobble relationships.

Changes:
- Add router.register(r'trails', TrailViewSet)
- Add router.register(r'food-categories', FoodCategoryViewSet)
2026-07-23 21:40:45 -04:00
b0d3029541 Switch scrobble API from UUID to pk lookup
The ScrobbleViewSet was using lookup_field="uuid" which caused
API detail views to fail for scrobbles with NULL UUIDs. Rather
than backfilling all NULL UUIDs, switch to pk lookup which is
always populated.

Changes:
- Remove lookup_field="uuid" from ScrobbleViewSet (defaults to pk)
- Remove extra_kwargs from ScrobbleSerializer (URL now uses pk)
- Update regenerate_share_token action signature to use **kwargs
2026-07-23 21:35:30 -04:00
7e222c9a8a Fix ImproperlyConfigured for scrobble-detail by backfilling NULL UUIDs
The ScrobbleSerializer uses HyperlinkedModelSerializer with
lookup_field='uuid', but 3,273 of 6,155 Scrobbles had NULL UUIDs,
causing URL resolution to fail.

Fix:
- Add migration 0104 to backfill NULL UUIDs with uuid4()
- All Scrobbles now have valid UUIDs for URL resolution
2026-07-23 20:37:52 -04:00
dcbb4034d0 Fix ImproperlyConfigured for paper-detail in scrobbles API
Same issue as drink-detail: Paper model had a template URL but no API
ViewSet, causing HyperlinkedModelSerializer to fail.

Fix:
- Add PaperSerializer and PaperViewSet to books/api/
- Register PaperViewSet as 'papers' in the DRF router
2026-07-23 20:28:35 -04:00