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-signedapp-serverAPI 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. Seedocs/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 toapp-backend-sockets.tradeskillmaster.comand
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 keyedRealm-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 anyWow*.exeor aWTF/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: noPYTHONPATH,
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, andAddonWriterService(writes now happen inAuctionDataService).