github exceptionptr/tsm-app-linux v2.0.0
TSM App v2.0.0

latest release: v2.0.1
one hour ago

A new major version: TSM retired the backend every earlier release talked to.
Everyone has to sign in once more, now through the browser.

Changed

  • Moved to the backend of the official TSM Desktop App 1.0.9. TSM replaced
    the old HMAC-signed app-server API with Keycloak sign-in, a few Bearer token
    REST services and a push socket. The app now talks to exactly those, the same
    way the official client does. See docs/api.md.
  • Sign in through the browser. The login dialog opens the TSM login page in
    the system browser (OIDC with PKCE on a local callback port), so two-factor
    login and every other Keycloak feature work. Passwords are no longer handled
    or stored: the keyring keeps only an offline refresh token, and a password
    saved by an earlier version is deleted on the next sign-in. Anyone signed in
    with an earlier version has to sign in once more, and the dialog says why.
  • Auction data is pushed, not polled. The five minute status poll is gone.
    The app keeps a socket open to app-backend-sockets.tradeskillmaster.com and
    downloads a realm's data the moment the server announces it, so AppData.lua
    is as fresh as with the official app. It reconnects on its own after a dropped
    connection or a sleep.
  • Followed realms live on the TSM account. Adding or removing a realm
    changes the account's realm list, which the official app shares. Realms added
    locally by earlier versions are moved to the account once. The tier limit is
    enforced: 10 realms free, 25 gold, unlimited platinum.
  • AppData.lua is written in the official client's current format: an
    auction house id in each meta comment, one line for all connected realms that
    share an auction house instead of a copy of the data per realm, and faction
    auction houses keyed Realm-Horde / Realm-Alliance. Lines it does not know
    are kept. Data for realms no longer followed is removed, and nothing is written
    into a game version that has neither TradeSkillMaster nor the AppHelper.
  • Addon updates arrive with the release. The server announces new addon
    releases over the socket; the app installs the single multi-client zip into
    every game version that already has the addon. Git checkouts and dev builds
    are never touched.

Added

  • World of Warcraft Forever (_forever_): detected, synced, backed up,
    shown in Realm Data, Addon Versions and Accounting like the other clients.
  • Hardcore, Season of Discovery and Fresh realms get their own region data
    (HC-, SoD-, Fresh-) as in the official app.
  • More install locations: every Wine prefix under ~/Games, Bottles
    (native and Flatpak) and Proton prefixes of Flatpak Steam. A WoW folder is
    recognised by any Wow*.exe or a WTF/Config.wtf.
  • Connection state in the status bar while the socket is connecting.
  • One column header for Realm Data and Addon Versions. Each game version
    group used to repeat the same header row. There is now a single header above
    the groups that stays in place while they scroll, and the columns line up
    across all groups. The Status column fits its text, so "Update available" is
    no longer cut off.

Fixed

  • The Flatpak crashed on start with libgssapi_krb5.so.2: cannot open shared object file (#26). The single instance check used QtNetwork, which links
    against Kerberos, and the Flatpak runtime has no Kerberos. It is now a file
    lock, and nothing loads QtNetwork any more.
  • AppImage sign-in failed with No module named 'concurrent.futures.thread'
    (#27). The bundled Python now runs isolated from the host: no PYTHONPATH,
    no user site-packages and no current directory on its module path.
  • Accounting no longer jumps back to the first account after a realm data
    update (#25). The account, realm and character picked there are remembered,
    across restarts too.
  • --self-test, which CI runs against every package, now also imports the
    whole app, takes a file lock, resolves a host name through the asyncio
    executor and loads the TLS certificates, so the failures above stop a
    release instead of reaching users.

Removed

  • The username and password fields, the five minute auction and auth refresh
    jobs, and AddonWriterService (writes now happen in AuctionDataService).

Don't miss a new tsm-app-linux release

NewReleases is sending notifications on new releases.