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
- Honor ignore_singles/ignore_compilations at scanner read time so toggles
take effect immediately on the dashboard, artist page, and digest instead
of waiting for the MusicBrainz cache to expire and prune rows.
- Run notifier notify synchronously in the scheduler loop to avoid overlapping
read-send-mark runs double-sending the digest.
- Show artist name (with ID fallback) on the archive page instead of raw IDs.
- Select last_synced in GetAllArtistSettings for contract consistency.
- Fix stale startPeriodicSync comment and remove redundant error var.
- Remove dead ignored-branch from the artist template (never rendered).
- Add tests: CSRF sameOrigin, ArtistCacheFresh, secondary_types round-trip,
and scanner type-toggle filtering.
- Update Specification.md schema/config to reflect mbid, last_synced,
secondary_types, sync.interval, and server.public_url.
- Fix FK constraint violation in SyncArtistDiscography: delete
notifications_sent rows before external_releases to prevent
constraint failure when re-syncing artists with prior notifications.
- Implement per-artist type filtering: FilterReleaseGroups now accepts
FilterOptions with IgnoreSingles/IgnoreCompilations flags, read from
artist_settings table via getArtistFilterOptions.
- Fix inconsistent error wrapping: GetExternalRelease now wraps errors
with fmt.Errorf like all other functions in the package; updated test
to use errors.Is for sql.ErrNoRows check.
- Add tests: FilterReleaseGroups ignore singles/compilations,
SyncArtistDiscography per-artist type filtering, and FK-safe resync.