• 1.6.2 0a89ec3652

    john-okeefe released this 2026-09-01 20:26:29 -04:00 | 0 commits to main since this release

    Summary

    This release fixes a long-standing breakage in the AniList "Sync Changes" flow on the anime page, along with the follow-up issues it uncovered in the MAL/Simkl sync path. Submitting changes now correctly saves to all connected services and updates the on-page services table.

    Note: tag 1.6.1 was an intermediate fix for the same overall issue. The changes below cover everything since 1.6.0.

    What was broken

    Clicking Sync Changes on an anime page:

    • Sent a malformed GraphQL mutation to AniList, so changes were never actually saved to your AniList list.
    • Because the app ignored AniList's error response, the page's AniList data was replaced with empty values — making it look like AniList had logged you off.
    • Once errors were surfaced (1.6.1), a separate decoding bug caused the AniList response to fail parsing, which skipped the MyAnimeList and Simkl syncs entirely and left the services table unrefreshed.

    Fixes

    AniList

    • Repaired the SaveMediaListEntry mutation. The standardized media field block had been pasted in without its media { … } wrapper, leaving media-level fields on the wrong type, list-level fields at the mutation root, and an unbalanced brace. The mutation now matches the tested API request, and entries save correctly again.
    • Fixed response decoding for array-shaped fields. AniList returns airingSchedule.nodes and relations.nodes as arrays, but the app's internal types declared them as single objects. Every full-media response failed to decode partway through. Both are now proper lists (with named sub-types), so responses decode completely — which also means genres and tags now refresh properly after a submit (the old copy-from-previous-value workaround has been removed).
    • Update and delete failures are no longer silent. The app previously discarded AniList's HTTP status and returned zeroed data on failure. Both AniListUpdateEntry and AniListDeleteEntry now report authentication errors, non-200 responses, and unparseable payloads, and log the status plus response body to the terminal for diagnosis.

    Multi-service sync resilience

    • One service failing no longer skips the others. Sync Changes and Delete Entries previously ran all three services inside a single error handler, so any AniList failure aborted the MyAnimeList and Simkl syncs without notice. Each service now runs in its own error-isolated block.
    • Visible error reporting. If a service fails to sync, an error modal now names the service and the reason (with a retry option), instead of only logging to the developer console.

    Internal

    • Regenerated Wails frontend bindings for the corrected AniList types (MediaAiringSchedule, MediaRelations, AiringScheduleNode, etc.).
    • Bumped productVersion to 1.6.2.

    Known issues

    • svelte-check still reports pre-existing type errors in frontend/wailsjs/go/models.ts and frontend/src/helperDefaults/AniListGetSingleAnime.ts (generated/legacy types); these do not affect the build or runtime.
    Downloads