This commit includes:
1. Live/Remix Filtering Feature:
- Added ignore_live and ignore_remix columns to artist_settings table (migration 010)
- Updated ArtistSettings struct with IgnoreLive and IgnoreRemix fields
- Modified SaveArtistSettings and UpdateArtistSettings to handle new fields
- Extended FilterOptions struct with IgnoreLive and IgnoreRemix
- Updated ApplyTypeToggles and ApplyTypeTogglesToReleaseGroups to filter Live/Remix types
- Added toggleIgnoreLive and toggleIgnoreRemix handlers in web layer
- Updated ArtistData view model and artist.html template with new toggle UI
- Comprehensive test coverage for all new functionality
2. CI/CD Pipeline with Gitea Actions:
- Added .gitea/workflows/docker-build.yml for automated Docker builds
- Workflow triggers on pushes to main/master and tags, plus PRs
- Runs Go tests before building
- Builds and pushes multi-architecture Docker images to gitea.mrixs.me
- Includes caching for faster subsequent builds
- Proper tagging strategy (branch, semver, SHA)
- CI-CD-GUIDE.md documentation
3. Cleanup:
- Removed temporary build artifacts and coverage files
- notifier: show artist display names (not internal IDs) in digest; resolve
names from artist_settings and fall back to ID when unavailable
- notifier: skip sending an empty digest to avoid daily spam
- config: require telegram token/chat_id when enabled
- web: warn loudly when auth is disabled on a non-loopback bind; add HTTP
server timeouts
- web: treat SetReleaseIgnored "release not found" as benign redirect (0 rows)
- musicbrainz: reject low-score/name-mismatched MBID resolutions instead of
silently caching the wrong artist
- database: remove dead duplicate err check; harden DSN param appending
- musicbrainz: check rows.Err() after iterating existing releases
Add ResolveArtistMBID to query the MB artist search endpoint and return the
first matching artist ID, with httptest-backed tests for match, no-match,
HTTP error, and invalid-JSON paths.