merge: conflict-blocklist filenames + path-based vehicle signal

Bring in two narrow additions previously sitting on a feature branch:

- api/diagnostics.py: \_IGNORED_FILENAMES skip-list for /api/conflicts.
  PZ engine-concatenated and framework-hook files (sandbox-options.txt
  etc.) ship with intentionally distinct sha1s across mods; they are
  not real conflicts. Live cache had 33 providers of sandbox-options.txt
  with 31 distinct hashes generating false-positive conflict rows.

- worker/build_manifest_and_types: extend the path-based Vehicles signal
  to include models_x/vehicles/ and models/vehicles/, catching mods that
  ship 3D vehicle assets without scripts. Existing mods need their
  manifest rebuilt before mod_types reflects the new signal.
This commit is contained in:
2026-05-06 21:35:35 +00:00
2 changed files with 38 additions and 2 deletions

View File

@@ -365,7 +365,13 @@ def build_manifest_and_types(
or suffix in {".png", ".dds"}):
if path.name.lower() != "poster.png":
tags.add("Textures")
if rel_below.startswith(("scripts/vehicles/", "scripts/vehicle")):
# Path-based vehicle detection. scripts/vehicles is the universal
# signal; models[_x]/vehicles/ catches mods that ship 3D assets
# without scripts (rarer, but real — borrowed from HellDrinx Mod
# Manager's heuristic). rel_below is already lowercased so the
# capital "X" in the original PZ "models_X" path lands as "models_x".
if rel_below.startswith(("scripts/vehicles/", "scripts/vehicle",
"models_x/vehicles/", "models/vehicles/")):
tags.add("Vehicles")
if rel_below.startswith(("clothing/", "scripts/clothing/")):
tags.add("Clothing")