You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-**Source Health Diagnostics**: Introduced health checks and diagnostics for scraper sources to proactively monitor and ensure source reliability.
8
-
-**Enhanced Stream & Download Stability**: Fixed playback and download issues for direct streams by properly passing required `Referer` headers for AllAnime and AnimeFire CDNs.
9
-
-**Windows Auto-Updater Fix**: Resolved a critical issue on Windows where the updater failed to extract the `.exe` binary from the downloaded zip archive.
10
-
-**AllAnime Key Rotation Fix**: Updated the AES-GCM decryption key handling to accommodate AllAnime's latest API changes, restoring access to its catalog.
7
+
-**AllAnime Encryption Update**: Updated AllAnime stream decryption from AES-GCM to AES-256-CTR cipher mode to maintain compatibility with their latest API changes.
8
+
-**Zenpen/Kouhen Title Fix**: Fixed critical bug where anime titles with meaningful suffixes (e.g., "Jujutsu Kaisen - Zenpen") were being incorrectly stripped, causing incorrect metadata binding to sibling entries. Now preserves legitimate episode part markers while still removing PT-BR noise.
9
+
-**Distinct ID Tracking**: Added support for keeping MyAnimeList (MAL) and AniList IDs separate throughout the playback pipeline. Previously they were conflated, causing incorrect skip intros and tracking data.
10
+
-**AnimeFire Quality Menu Improvements**: Fixed three UX bugs in the quality picker: items now sort in descending resolution order, duplicate qualities are disambiguated with mirror labels, and pressing Esc now routes back instead of silently playing the first source.
11
+
-**Source Health Diagnostics Enhancement**: Added post-timeout origin probing to distinguish between "client timeout waiting" and "upstream actively down" (Cloudflare 521-524), producing more actionable diagnostic messages.
12
+
-**Cloudflare Challenge Detection Refinement**: Fixed false-positive challenge detection that was blocking legitimate Goyabu episode pages mentioning "cloudflare" in footers/comments/ToS. Now targets specific challenge markers instead of the bare word.
11
13
12
14
## Features
13
15
14
-
- Implement source diagnostics and health checks for scrapers to monitor their status.
16
+
- Add regression tests for AllAnime cipher-mode and transport changes.
- Fix Goyabu `batchexecute` index payload structure for search queries.
20
-
- Fix the player to properly pass the `Referer` header to direct streams, resolving playback failures.
21
-
- Fix AllAnime source selection to preserve the `fast4speed` direct source as a fallback.
22
-
-Stop waiting unnecessarily after failed stream sources in AllAnime.
23
-
- Fix downloads by adding the `Referer` header for AllAnime CDN URLs.
24
-
- Fix downloads by setting the `Referer` header for AnimeFire's CDN (`lightspeedst.net`).
25
-
-Fix the auto-updater on Windows to extract the `.exe` file from the zip archive before replacing the application binary.
26
-
-Fix potential crashes by adding a nil guard to the tracker.
27
-
-Fix flaky FlixHQ tests and unblock Codacy CI checks.
24
+
-**Critical**: Fix Zenpen/Kouhen title mismatch by preserving meaningful anime title suffixes. CleanTitle now only strips known PT-BR noise patterns, preventing data corruption where "Jujutsu Kaisen: Shimetsu Kaiyuu - Zenpen" was misbound to the Kouhen (Part 2) entry instead of Zenpen (Part 1). This affected Discord RPC, AniSkip, file naming, and tracking.
25
+
- Fix AllAnime cipher-mode decryption: update from AES-GCM to AES-256-CTR to maintain stream extraction compatibility.
26
+
- Fix case-sensitive source matching for AnimeFire ("Animefire.io" vs "AnimeFire") causing source breakdown diagnostics to report zero AnimeFire results despite successful searches.
27
+
- Fix false-positive Cloudflare challenge detection that was blocking legitimate Goyabu episode pages. Relaxed body-text scan from bare "cloudflare" match to specific challenge phrases ("cf-error", "checking your browser", "ray id", etc.) while preserving all real challenge detection.
28
+
-Fix AnimeFire quality selection bug: properly index into sorted sources by user selection instead of matching on rendered labels, fixing silent loss of selection when duplicates exist.
29
+
- Fix AnimeFire quality picker handling of Esc/Ctrl-C to return ErrBackRequested instead of silently playing the first source.
30
+
- Fix dead Blogger token fast-fail by detecting empty batchexecute responses (anti-hijacking prefix only) instead of wasting ~6 seconds on doomed retries.
31
+
-Add nil guard to tracker to prevent crashes on update tracking attempts.
32
+
-Improve Blogger video URL extraction robustness to handle edge cases and malformed responses.
33
+
-Update error messages and log output throughout the codebase for improved clarity and consistency.
28
34
29
35
## Improvements
30
36
31
-
- Update comments and error messages throughout the codebase for improved clarity and consistency.
32
-
- Update Linux installation instructions.
33
-
- Add test coverage for download retry exhaustion and referer handling.
37
+
- Refactor quality menu sorting and labeling logic into buildQualityMenu helper for testability and maintainability.
38
+
- Add comprehensive regression test suites for all major bug fixes (Zenpen/Kouhen, source breakdown, season selection abort, quality menu, Blogger unavailable token, Cloudflare challenges, origin probing).
39
+
- Enhance debug logging throughout Goyabu scraper to aid diagnostics of extraction failures.
40
+
- Add episode page diagnostic dumps (HTML snapshot) when all Goyabu extraction strategies fail in debug mode.
41
+
- Improve download header handling with centralized applyDownloadAuthHeaders function for consistency.
42
+
- Add MarginTop/Priority fields to SuperFlix media results for better UI presentation.
43
+
- Use slices.Sort instead of deprecated sort.Slice in unified scraper manager.
returnfmt.Errorf("%s endpoint returned HTML (status %d, url=%q) — provider may have moved or is blocking the request", label, resp.StatusCode, finalURL)
807
+
}
808
+
ifresp.StatusCode<200||resp.StatusCode>=300 {
809
+
returnfmt.Errorf("%s endpoint returned status %d", label, resp.StatusCode)
810
+
}
811
+
returnnil
812
+
}
813
+
771
814
// Helper: split string by separator and trim each part
0 commit comments