Skip to content

Feature/online midi#31

Open
damarasf wants to merge 13 commits into
Jed556:mainfrom
damarasf:feature/online-midi
Open

Feature/online midi#31
damarasf wants to merge 13 commits into
Jed556:mainfrom
damarasf:feature/online-midi

Conversation

@damarasf

Copy link
Copy Markdown

A new Discover page sourced from MidiShow, integrated into the main navigation:

  • Browse & search with category filter, sort, and paginated results
  • Sign in with the user's own MidiShow account (stored locally, DPAPI-encrypted)
  • Preview a track in-app before downloading
  • Download straight into the song library
image_2026-06-21_095551410

damarasf added 4 commits June 21, 2026 01:06
- Introduced OnlineMidiView to allow users to discover MIDI tracks online.
- Updated MainWindowViewModel to include OnlineMidiViewModel and handle navigation.
- Added UI elements in MainWindow.xaml for navigating to the new Discover section.
- Created OnlineMidi.xaml and OnlineMidi.cs for the new view, implementing search, sign-in, and track management functionalities.
- Enhanced user experience with sorting and filtering options for MIDI tracks.
- Cache remote images to optimize network and memory for thumbnails.
- Improve scrolling performance of online track lists through UI virtualization.
- Prevent endless paging when reaching the last available results.
- Ensure UI state and results are updated only by the latest asynchronous operations.
@Jed556 Jed556 linked an issue Jun 21, 2026 that may be closed by this pull request
@Jed556 Jed556 self-assigned this Jun 21, 2026
Jed556 and others added 9 commits June 21, 2026 19:25
The MidiShow service returns 403 Forbidden for multiple reasons, but previously, they were all treated as authentication failures. This often led to unnecessarily logging out users.

Now, the error response body is analyzed to correctly classify the problem into one of three distinct types:
- Temporarily disabled feature (server-side).
- Account download limit or points requirement.
- Genuine authentication failure.

This ensures only true authentication problems clear the user's session, offering more precise feedback and avoiding pointless re-logins.
Introduces a pool of MidiShow accounts to improve download reliability and availability.
Downloads now rotate through configured accounts and automatically fail over when one
hits a download limit or is flagged for unusual activity.

- Persists multiple password- or cookie-based accounts.
- Allows adding accounts using raw browser cookies to bypass sign-in issues.
- Migrates existing single-account logins to the new pool.
- Displays account health, status, and cooldowns in the interface.
- Provides options to export live session cookies for an account.
Show account addition errors directly within the flyout, as the snackbar can be obscured. A loading spinner on the button now indicates progress, replacing the general busy overlay. This provides clearer, localized feedback for the user.
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.

Add online MIDI discovery (browse, search & download)

2 participants