v2.0.29 patch
A clothing-pack scanner that stays off the main thread, and update notices in your console
8changes

A clothing-pack scanner that stays off the main thread, and update notices in your console
8changes

[02] Release
The scanner that finds your clothing packs was rebuilt. It used to run in a .NET library on the main thread, so a server with many packs could stutter while it worked; it now runs natively in the background, with a queue limit, a timeout and a clean cancel when the resource stops. A failed scan says why in the console instead of hanging, and resources it could not read are reported rather than silently dropped. There is a new console command for diagnosing it, and the resource now checks Quasar Store for updates and prints what is pending. One requirement changed: your FXServer artifact must be recent enough for node 22.
node_version '22'. Any reasonably recent artifact has it; a very old one will refuse to start the resource. In exchange, nothing in the script uses .NET or Mono any more.config/ as it is.A new console command reports the scanner's health:
qs_appearance_scanner status
qs_appearance_scanner info
It prints whether the scanner loaded, which runtime it picked, how many calls and failures it has had, its timings and your node version. This is the first thing support will ask for on any ticket about clothing packs.
The resource also checks Quasar Store for updates now. On start it prints one line with your local version, the latest version and whether you are up to date, and when a newer version exists it prints the pending changelog. The old check against GitHub is gone, so there is only one notice instead of two.
Replace every file in the resource, except what you edited yourself:
config/ — nothing changed. Keep yours.locales/ — nothing changed. Keep yours.server/ — this is where the work happened. The server/dotnet/ folder is gone, server/native-scanner/ and server/scanner.lua are new, and server/modules/updater.lua is new. Replace the whole folder.fxmanifest.lua — changed. Replace it.Run qs_appearance_scanner status or qs_appearance_scanner info in the server console to see whether the scanner loaded, which runtime it picked, how many calls and failures it has had, its timings and your node version.
If the scanner cannot read a resource it now says how many it skipped and names the first one, instead of quietly leaving them out of the results.
On start the console prints one line with your local version, the latest published version and whether you are up to date. When a newer version exists it also prints the pending changelog and a link to the full notes.
The resource declares node_version '22'. Any reasonably recent artifact has it; a very old one will refuse to start the resource, so check your artifact before updating. Nothing in the script needs .NET or Mono any more.
A scan now gives up after 90 seconds and refuses new work past eight queued requests, and stopping the resource cancels whatever was running instead of leaving it behind. When something does go wrong, the console names the operation and the reason.
Scanning your server's resources for clothing packs used to happen in a .NET library on the main thread, so a server with many packs could stutter while it worked. The scanner is now a native module that does the work in the background; the main thread only hands it the list of resources, which takes milliseconds. Everything it does is unchanged: detecting packs, telling a replace pack from an addon pack and diagnosing one resource.
server/dotnet/ and its DLL are gone, replaced by server/native-scanner/ with a binary for Windows and one for Linux. The right one is chosen automatically from your platform.
It read a file from a GitHub repository and could disagree with the store, so servers saw two different update notices in the console. There is one now.