Commit Graph

469 Commits

Author SHA1 Message Date
Claudio Ortolina 7cf9b4e7f8 First pass at uniformed types, specs and docs
- spec public functions (skipping controllers, views, live views and
components)
- use types instead of explanations in docs
- remove redundant docs
- fix typos
2026-03-06 08:33:11 +00:00
Claudio Ortolina a3ccc06d14 Extract shared SQL builder for scrobble rules 2026-03-05 20:52:25 +00:00
Claudio Ortolina d738032f8a Add string length validations to user-input schemas 2026-03-05 20:42:44 +00:00
Claudio Ortolina e8f393c5a0 Guard against nil medium in scrobble_medium
Closes #76
2026-03-05 19:54:32 +00:00
Claudio Ortolina d4376e5fa0 Extract DB queries from MaintenanceLive into context 2026-03-05 18:01:50 +00:00
Claudio Ortolina f109057be5 Persist telemetry data in local sqlite database 2026-03-05 13:39:38 +00:00
Claudio Ortolina 73a943bc63 Server records on this day email assets from a public endpoint 2026-03-05 10:50:35 +00:00
Claudio Ortolina 478832249b Send record of the day email 2026-03-05 10:37:04 +00:00
Claudio Ortolina c831b20317 Move error tracker notifier files to correct namespace 2026-03-04 19:39:36 +00:00
Claudio Ortolina ad9bcd8481 Inline error tracker notification code
As we don't need the Discord functionality which brings quite a lot of
extra libraries/code
2026-03-04 17:19:14 +00:00
Claudio Ortolina ed1dd2b440 Mount error tracker notifier 2026-03-04 15:55:32 +00:00
Claudio Ortolina 1c04eea88f Install and configure Swoosh with Mailgun 2026-03-04 15:52:17 +00:00
Claudio Ortolina 6d451481b7 Remove obsolete color extraction strategies 2026-03-03 16:01:25 +00:00
Claudio Ortolina 1d3361c425 BETA: accurate color extractor 2026-03-03 15:41:24 +00:00
Claudio Ortolina de14ec3e25 Consolidate completely stateless tests into doctests
Removing dupes
2026-03-03 11:30:52 +00:00
Claudio Ortolina a992c1f0dd Introduce a Req.RateLimiter module to fix API rate limit issues 2026-03-02 15:04:45 +00:00
Claudio Ortolina 919a42d355 Parameterize API cooldowns 2026-03-01 17:17:32 +00:00
Claudio Ortolina 6836cf5c9e Integrate refresh of Last.fm data (both per artist and batch) 2026-03-01 09:46:27 +00:00
Claudio Ortolina b35f4aed1d EXP: enrich artist info data via Last.fm and produce better embeddings 2026-03-01 08:22:35 +00:00
Claudio Ortolina 871f4b3554 Extract ListeningStats out of ScrobbleActivity 2026-02-27 12:16:38 +00:00
Claudio Ortolina 6bf13486a3 Do not crash on & search 2026-02-27 07:56:44 +00:00
Claudio Ortolina 1b934537ea Remove Sentry and Honeybadger 2026-02-26 21:52:57 +00:00
Claudio Ortolina 561cd02ec7 Fixes error in matching multiple colums during search 2026-02-25 07:54:59 +00:00
Claudio Ortolina 8eaaa3cfec Use custom country module to resolve flags more accurately
Ported from https://github.com/wojtekmaj/country-code-to-flag-emoji
(MIT)
2026-02-24 08:57:30 +00:00
Claudio Ortolina 60d81e14de Enable chat for artists 2026-02-22 15:31:09 +00:00
Claudio Ortolina 78025eba69 Use gpt 4.1 with search 2026-02-22 10:27:44 +00:00
Claudio Ortolina 8d38512712 Fix review blockers in record chat
- Add Task.Supervisor to app supervision tree
- Use tagged tuples instead of rescue for error handling
- Pass embedding_text from parent LiveView as prop
- Remove dead Completion struct fields
- Extract socket assigns before Task closure
- Log errors server-side, show generic user message
- Make build_system_prompt private, remove thin wrapper
- Extract do_send_message for retry reuse

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 10:20:58 +00:00
Claudio Ortolina 6e6e419801 Add record chat sheet with OpenAI streaming
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 10:13:05 +00:00
Claudio Ortolina 1dfb2d2a6f Use Wikipedia data for record similarity and raise similarity threshold 2026-02-19 15:51:12 +00:00
Claudio Ortolina 082c0cc0b3 Remove unused bin/vacuum command 2026-02-18 22:12:32 +00:00
Copilot 2faddbf0c6 Add audit tooling for scrobbled tracks data quality (#89) 2026-02-17 11:24:45 +00:00
Claudio Ortolina 3e1da2cb19 Uniform repo usage for Oban jobs 2026-02-17 09:01:46 +00:00
Claudio Ortolina 10b6a0703c Centralize pagination settings 2026-02-17 08:24:07 +00:00
Claudio Ortolina 98f901c020 Materialize record releases to improve performance 2026-02-16 12:30:41 +00:00
Claudio Ortolina 583789850c Normalize top artist and top album counts
- Make sure joins don't discard tracks
- Make sure we group by names as MB ids can be empty
2026-02-15 20:35:23 +00:00
Claudio Ortolina d19f2062c5 Recalculate record embedding after their artist changes 2026-02-15 20:16:34 +00:00
Claudio Ortolina 08da5bb272 Fix parsing of record type from MB response 2026-02-15 11:38:26 +00:00
Claudio Ortolina 2872d14a8a Refresh all data at the beginning of the month 2026-02-14 12:09:06 +00:00
Claudio Ortolina 01b3d64b82 Refresh records MusicBrainz data every first day of the month 2026-02-14 11:50:05 +00:00
Claudio Ortolina 8862e1d374 Show record sets in records detail pages 2026-02-13 12:00:12 +00:00
Claudio Ortolina 29b1c04433 Remove shallow color wrapper 2026-02-10 19:32:28 +00:00
Claudio Ortolina 4ef09b47f4 Unify batching logic 2026-02-10 19:29:54 +00:00
Claudio Ortolina fe748782c7 Reorder record sets via drag and drop 2026-02-10 11:16:41 +00:00
Claudio Ortolina c3deecb56b Make sure worker doesn't swallow errors 2026-02-09 21:14:05 +00:00
Claudio Ortolina a5520e076d Fix typo 2026-02-09 21:11:28 +00:00
Claudio Ortolina ebf3dc616e Improve Wikipedia worker
- No need to sleep, Wikipedia API is not rate-limited
- Account for non-retryable failures (no english found)
2026-02-09 17:00:30 +00:00
Claudio Ortolina 25bd4b10c4 Add maintenance tasks to refresh all artist wikipedia bios 2026-02-09 15:24:29 +00:00
Claudio Ortolina bcae291cff Support getting artist bios from Wikipedia (experimental) 2026-02-09 15:20:06 +00:00
Claudio Ortolina 0bdad096d0 Explicit error handling when dealing with secrets 2026-02-09 11:08:57 +00:00
Claudio Ortolina 9da995bce8 Extract helpers to handle async jobs 2026-02-09 11:07:33 +00:00