Skip to content

Conversation

@badhon495
Copy link

Overview

This PR adds MyAnimeList (MAL) support as an alternative anime tracking provider alongside AniList, plus several UX improvements including back navigation throughout the application.

Key Features

1. MyAnimeList (MAL) Integration

  • Full OAuth2 authentication with PKCE support
  • Sync anime lists (Watching, Completed, On Hold, Dropped, Plan to Watch)
  • Automatic progress tracking and status updates
  • Search and add anime to MAL lists
  • Provider abstraction layer for easy switching between AniList and MAL
  • Configurable via AnimeProvider, MALClientID, and MALClientSecret settings

2. Back Navigation

  • Navigate back from anime selection to category selection
  • Return to anime selection after episode completion
  • Proper state management to preserve user context
  • Category re-selection support after back navigation

3. Enhanced Anime Matching

  • Multi-strategy auto-matching with timeout (15s) for better reliability
  • Fallback to manual selection when auto-match fails or times out

Documentation

  • Comprehensive README update with step-by-step MAL setup guide
  • Configuration table updated with new MAL-related options
  • Troubleshooting section for common issues
  • MAL vs AniList comparison table

Testing

Clone and test:

git clone https://github.com/badhon495/curd-MAL
cd curd-MAL
go build -o curd ./cmd/curd/main.go
sudo mv curd /usr/bin/

Files Changed

  • internal/mal.go - MAL API implementation
  • internal/provider.go - Provider abstraction layer
  • internal/config.go - Added MAL configuration options
  • internal/curd.go - Back navigation logic and enhanced matching
  • README.md - Complete MAL setup guide

Notes

Users can now choose their preferred anime tracking service (AniList or MAL) and enjoy seamless back navigation for a better user experience.

}

// Default to AniList
return RateAnime(token, animeID)
Copy link
Owner

@Wraient Wraient Nov 3, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

RateAnime() would ask user for rating twice, remove the prompting logic from the RateAnime() function since we are doing it all here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants