bvandeusen and Claude Opus 4.8
cce928e584
test-go / test (push) Successful in 29s
test-go / integration (push) Failing after 4m43s
feat(api): admin tag-sources endpoints ( #1490 Step 4 backend)
...
Expose the tag-enrichment provider settings over the admin API, mirroring
the cover-sources surface so a Last.fm key can be pasted and sources
toggled from the web admin UI (rules #25/#27).
- GET /api/admin/tag-sources — list providers + version
- PATCH/api/admin/tag-sources/{id} — enable / set api_key
- POST /api/admin/tag-sources/{id}/test — test connection
- POST /api/admin/tag-sources/research — bump version, re-open
settled rows for re-enrich
- Thread tags.SettingsService through server.New (struct field, like
RecSettings) → Router → api.Mount → handlers.tagSettings; main.go sets
srv.TagSettings.
Handler tests mirror admin_cover_sources_test (list / flip-bumps-version /
key-only-no-bump / unknown-404 / non-admin-403 / not-testable-ok-false),
integration-tier (skip without MINSTREL_TEST_DATABASE_URL).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-13 22:24:28 -04:00
..
2026-05-17 21:05:36 -04:00
2026-05-07 20:10:18 -04:00
2026-06-02 18:11:25 -04:00
2026-05-07 20:10:18 -04:00
2026-05-07 07:59:40 -04:00
2026-05-07 20:10:18 -04:00
2026-05-16 18:41:21 -04:00
2026-05-16 18:41:21 -04:00
2026-05-07 12:01:16 -04:00
2026-05-08 10:46:43 -04:00
2026-05-17 20:22:30 -04:00
2026-05-08 23:07:15 -04:00
2026-05-08 10:40:03 -04:00
2026-05-12 21:28:05 -04:00
2026-07-03 09:29:33 -04:00
2026-07-03 09:29:33 -04:00
2026-07-03 09:22:03 -04:00
2026-07-03 09:29:33 -04:00
2026-05-18 12:24:20 -04:00
2026-05-12 20:55:33 -04:00
2026-05-04 20:13:31 -04:00
2026-05-07 20:10:18 -04:00
2026-05-07 12:43:44 -04:00
2026-05-08 10:18:35 -04:00
2026-07-13 22:24:28 -04:00
2026-07-13 22:24:28 -04:00
2026-05-08 10:40:03 -04:00
2026-05-08 10:46:43 -04:00
2026-05-17 20:22:30 -04:00
2026-06-29 18:38:56 -04:00
2026-07-13 22:24:28 -04:00
2026-05-07 12:49:30 -04:00
2026-05-07 21:33:14 -04:00
2026-05-07 11:56:19 -04:00
2026-05-13 11:58:24 -04:00
2026-05-07 12:49:30 -04:00
2026-05-07 21:33:14 -04:00
2026-07-03 09:22:03 -04:00
2026-05-07 20:25:26 -04:00
2026-06-04 07:44:33 -04:00
2026-06-04 08:29:51 -04:00
2026-05-10 20:28:27 -04:00
2026-05-10 20:28:27 -04:00
2026-04-21 23:02:20 -04:00
2026-06-04 08:29:51 -04:00
2026-06-30 16:33:01 -04:00
2026-05-07 19:48:25 -04:00
2026-05-07 19:48:25 -04:00
2026-06-20 12:59:27 -04:00
2026-05-12 20:44:37 -04:00
2026-05-08 11:29:36 -04:00
2026-07-02 17:29:41 -04:00
2026-05-13 20:41:44 -04:00
2026-06-11 19:33:46 -04:00
2026-05-01 18:00:59 -04:00
2026-05-07 20:48:20 -04:00
2026-04-28 09:27:06 -04:00
2026-05-09 22:47:25 -04:00
2026-05-10 18:47:30 -04:00
2026-05-10 18:47:30 -04:00
2026-05-10 18:47:30 -04:00
2026-07-13 22:24:28 -04:00
2026-06-06 22:30:41 -04:00
2026-04-29 17:35:45 -04:00
2026-05-07 21:19:35 -04:00
2026-05-08 10:40:03 -04:00
2026-05-13 14:27:23 -04:00
2026-04-28 09:27:06 -04:00
2026-05-08 08:26:43 -04:00
2026-05-04 07:05:49 -04:00
2026-05-08 08:44:50 -04:00
2026-05-07 12:38:48 -04:00
2026-05-08 08:44:50 -04:00
2026-05-07 12:38:48 -04:00
2026-06-29 18:38:56 -04:00
2026-07-13 18:16:04 -04:00
2026-07-13 18:16:04 -04:00
2026-05-04 18:13:13 -04:00
2026-05-08 08:44:50 -04:00
2026-06-02 18:24:23 -04:00
2026-05-17 20:22:30 -04:00
2026-05-13 11:58:24 -04:00
2026-05-07 12:38:48 -04:00
2026-05-08 08:26:43 -04:00
2026-06-02 18:24:23 -04:00
2026-05-04 15:21:24 -04:00
2026-06-04 08:29:51 -04:00
2026-06-02 11:25:50 -04:00
2026-06-20 12:59:27 -04:00
2026-05-17 20:22:30 -04:00
2026-05-08 10:40:03 -04:00
2026-06-04 08:29:51 -04:00
2026-05-17 20:22:30 -04:00
2026-04-30 20:19:39 -04:00
2026-05-12 21:28:05 -04:00
2026-05-08 11:05:25 -04:00
2026-07-03 09:22:03 -04:00
2026-05-08 12:05:35 -04:00
2026-05-12 20:55:33 -04:00
2026-05-07 22:18:40 -04:00
2026-05-07 21:28:20 -04:00
2026-04-21 08:29:28 -04:00
2026-05-08 10:46:43 -04:00
2026-06-03 11:34:02 -04:00
2026-06-03 13:41:54 -04:00
2026-05-01 06:23:08 -04:00
2026-05-16 20:16:56 -04:00
2026-06-11 19:33:46 -04:00