• 2.0.0 2ab5a080a9

    AniTrack-2.0.0
    Release / release (push) Successful in 3m20s
    Stable

    john-okeefe released this 2026-09-16 16:56:31 -04:00 | 1 commits to main since this release

    Bug Fixes

    • (frontend) Star rating hover via StarInput, retire overlay slider (f63563c)
    • (frontend) Svelte 5 mount API and route-driven refresh (515678f)
    • (frontend) Submit-time data flow (rating scale, table reactivity) (e2c8ba1)
    • (frontend) Header swap breakpoint down to mobile width (60ff980)

    Documentation

    • Record toolchain completion and version-source move (e8a5768)

    Miscellaneous Tasks

    • (frontend) Svelte 5 / Vite 8 / Tailwind CSS 4 dependency set (577c7d0)
    • (frontend) Tailwind v4 CSS-first config (4087599)
    • (deps) Wails v3 beta.20 to beta.22 lockstep (de808db)
    • (release) Bump version to 2.0.0 (2ab5a08)

    Refactor

    • (frontend) Svelte 5 mount API, router v5, dependency-free table (59b8139)
    • (frontend) Flowbite-svelte v1 APIs, bindings-aligned store types (8d5d8ac)
    • Retire wails.json, config.yml is the version source (2a6397b)
    Downloads
  • 1.99.1 5ce1094b90

    AniTrack-1.99.1
    Release / release (push) Successful in 2m33s
    Stable

    john-okeefe released this 2026-09-16 09:24:38 -04:00 | 13 commits to main since this release

    Bug Fixes

    • (install) Install webkitgtk-6.0 runtime per distro, refuse on musl (5036e34)
    • (release) Make version bump re-runnable when already current (5ce1094)

    Documentation

    • Point runners at install script, document self-updates (bc1f4b1)
    • Record self-updates design and correct branch map (948c2d3)

    Features

    • (updater) Custom Gitea releases provider with fail-closed verification (e9b04c0)
    • (updater) Wire startup check for desktop production builds (52fc656)

    Miscellaneous Tasks

    • (release) Publish signed updater assets alongside tarball (0149b24)
    • (release) Bump version to 1.99.1 (0b9f19c)
    Downloads
  • 1.99.0 8bae7f65f8

    AniTrack-1.99.0
    Release / release (push) Successful in 3m8s
    Stable

    john-okeefe released this 2026-09-15 22:29:43 -04:00 | 21 commits to main since this release

    Documentation

    • Note webkitgtk-6.0 runtime requirement for running releases (e3eecc5)
    • List webkitgtk-6.0 build packages and open 1.99.x beta series (2881370)
    • Record dual version-file release automation (4d31eda)

    Miscellaneous Tasks

    • (release) Bump version to 1.99.0 (4c34a57)
    • (release) Bump build/config.yml alongside wails.json (ba2b49b)
    • (release) Bump version to 1.99.0 (8bae7f6)
    Downloads
  • 1.6.8 336a1f353f

    AniTrack-1.6.8
    Release / release (push) Canceled after 20s
    Stable

    john-okeefe released this 2026-09-12 21:27:12 -04:00 | 41 commits to main since this release

    Bug Fixes

    • (auth) Handle keyring open/set errors per service (3bf5d82)

    Documentation

    • Add Wails v3 + Android migration plan (2bddc6a)

    Miscellaneous Tasks

    • (release) Bump version to 1.6.8 (336a1f3)

    Other

    • Revert "docs: add Wails v3 + Android migration plan"

    The migration plan belongs to the wailsv3 branch, not main. It was merged forward into wailsv3 (now at origin/wailsv3) before this revert, so no content is lost. Main keeps only the v2 keyring error-handling fix. (a19080e)

    Downloads
  • 1.6.7 a5da544dd7

    AniTrack-1.6.7
    Release / release (push) Successful in 11m52s
    Stable

    john-okeefe released this 2026-09-11 16:22:46 -04:00 | 45 commits to main since this release

    Miscellaneous Tasks

    • (release) Bump version to 1.6.7 (a5da544)
    Downloads
  • AniTrack-1.6.6-secrets-test
    Release / release (push) Successful in 13m50s
    Pre-Release

    john-okeefe released this 2026-09-11 16:00:37 -04:00 | 46 commits to main since this release

    feat(ci): automate Linux release builds and Gitea releases

    Local flow is now ./release 1.6.7 (or make release VERSION=1.6.7):
    bump wails.json productVersion, commit the bump, generate git-cliff
    notes into an annotated plain-version tag, and push commit plus tag.
    The tag push fires the new Gitea Actions workflow.

    • cliff.toml: git-cliff groups matching Bookhoard, tag_pattern for
      plain versions so --latest scopes correctly.
    • Makefile release target: strict plain-semver validation, dirty-tree
      and existing-tag guards, python3 wails.json bump committed as
      chore(release), throwaway-tag notes generation, push of main + tag.
    • release: wrapper normalizing v/AniTrack- prefixes to plain versions.
    • .gitea/workflows/release.yml: version guard (wails.json vs tag,
      base-match for -suffix pre-releases), Go 1.25 / Node 20 / Wails
      v2.15.0 + webkit2_41 system deps, environment.go from Actions
      secrets, make build, AniTrack-.tar.gz packaged from
      build/ (bin, icon, desktop, install script, README), idempotent
      Release create/update named AniTrack- with archive
      attached via REGISTRY_TOKEN PAT.
    Downloads
  • 1.6.5 0cca48adb1

    john-okeefe released this 2026-09-03 19:15:11 -04:00 | 50 commits to main since this release

    Search Reliability Release

    What changed

    Search used to fail silently: when the AniList API hiccuped, the header
    search box would just sit there (or never open) with no explanation.
    This release makes every search outcome visible and stops the UI from
    ever spinning forever.

    Fixed

    • Search errors are now shown, not swallowed. Failures display a
      Search failed panel in the dropdown with the reason and a
      Retry search button.
    • Empty results have their own message. A search with no matches now
      says No results found for "x". Try a different title. instead of
      showing a blank dropdown.
    • No more indefinite spinner. The search button disables while a
      request is in flight, stale late responses are ignored, and the
      dropdown uses explicit open/close (plus Escape and outside-click to
      dismiss) instead of a blind toggle.
    • Backend no longer panics on transport failures. AniListQuery
      returns early with user-safe messages on encode/request/network
      errors and guards against nil responses and bodies.

    Slow AniList days

    • Backend request timeout set to 20s.
    • The UI shows Searching AniList... normally, flips to
      AniList is slow today, still trying... at 8s, and only fails
      with AniList is taking too long to respond. Please try again. at
      30s — so a slow-but-alive API still succeeds instead of
      false-failing.
    • Going offline fails immediately with You appear to be offline.
      instead of waiting out the timeout.
    • Rate limits (429) and outages (5xx) now surface plain-language
      messages, and GraphQL errors[] are reported even on HTTP 200.

    Commits

    • fcbcda7 — fix(anilist): harden AniList query transport and search errors
    • d2f2f8a — fix(ui): make header search states explicit with slow-day timeouts

    To verify

    1. Normal search → results list, selecting an entry navigates and closes.
    2. Offline search → immediate offline message, Retry once back online.
    3. Slow API → slow notice at ~8s, results still land if the API answers.
    4. Hung API → error with Retry at ~30s, never an endless spinner.
    Downloads
  • 1.6.2 0a89ec3652

    john-okeefe released this 2026-09-01 20:26:29 -04:00 | 53 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
  • 1.6.0 a16c804692

    john-okeefe released this 2026-08-29 13:26:40 -04:00 | 55 commits to main since this release

    AniTrack v1.6.0

    More reliable MyAnimeList login

    Two MyAnimeList login quirks are fixed:

    • The "It is now safe to close your browser tab" dialog no longer appears for a silent background token refresh — it is now shown only when you actually complete a browser login.
    • If both the access token and the refresh token are invalid, AniTrack now clears the stale tokens and automatically takes you through a fresh browser login, instead of leaving the app looking logged in without a username.

    Login status indicators

    When the app starts and verifies your accounts, the header now shows exactly what it's doing — Checking AniList, Checking MAL, and Checking Simkl — with spinners while each service is being resolved. The same spinners appear on the login entries in the user menu. No more wondering whether the app is stuck or whether you're actually signed in.

    Toolchain & dependency updates

    • Bumped the build toolchain to Go 1.25 and updated the associated golang.org/x dependencies.
    • Upgraded Wails to v2.15.0, which unlocks the cross-platform notification API in the runtime bindings.
    • Cleaned up .gitignore so compiled binaries and packaging archives are never committed.

    Supported Services

    Service Status
    AniList Sync, search, browse, genres, tags, sorting
    MyAnimeList Sync, search, automatic re-auth
    Simkl Sync, search

    What's Changed

    • Rewrite the standard AniList media call with a shared typed model
    • Regenerate Wails Go bindings for the AniList Browse feature
    • Fix MyAnimeList silent token refresh showing a spurious browser dialog
    • Auto re-login MyAnimeList when the refresh token is no longer valid
    • Add per-service login status spinners to the header and user menu
    • Upgrade Wails to v2.15.0 and Go to 1.25
    • Ignore build binaries and archive artifacts in .gitignore
    Downloads
  • 1.5.5 23960e0613

    john-okeefe released this 2026-05-27 20:59:33 -04:00 | 64 commits to main since this release

    Release Notes

    v1.5.5

    Bug Fixes

    • Linux install script reliability and idempotency — Fixed tilde expansion by replacing quoted ~ paths with $HOME so they resolve correctly. Added existence checks before copying files so the script is idempotent and skips already-installed resources. Added progress/status echo messages for each installation step.

    Chores

    • Upgrade Go to 1.25 and update dependencies
      • Bump Go toolchain from 1.24.0 to 1.25.0
      • Upgrade Wails from v2.10.1 to v2.12.0
      • Upgrade tidwall/gjson from v1.18.0 to v1.19.0
      • Upgrade labstack/echo from v4.13.3 to v4.15.2
      • Upgrade labstack/gommon from v0.4.2 to v0.5.0
      • Upgrade samber/lo from v1.49.1 to v1.53.0
      • Upgrade gorilla/websocket to v1.5.3 (new transitive dep)
      • Upgrade go-webview2 from v1.0.19 to v1.0.23
      • Upgrade danieljoos/wincred from v1.2.2 to v1.2.3
      • Upgrade godbus/dbus/v5 from v5.1.0 to v5.2.2
      • Upgrade jchv/go-winloader to latest
      • Upgrade mattn/go-isatty from v0.0.20 to v0.0.22
      • Upgrade tidwall/match from v1.1.1 to v1.2.0
      • Upgrade golang.org/x/crypto, net, sys, term to latest
      • Add go-toast/v2 as new transitive dependency from Wails
    • Bump version to 1.5.5
    Downloads