feat: HellDrinx takeaways — conflict blocklist + vehicle path signal
Two narrow additions adopted from a review of HellDrinx Mod Manager (/tmp/helldrinx-modmanager-PZ-main.zip), per docs/plans/ (planning conversation, no spec checked in). A. _IGNORED_FILENAMES in api/diagnostics.py — skip filenames that are intended merge points (PZ engine-concatenated or framework hooks) from /api/conflicts output. Multiple distinct sha1s for these files is by-design, not a conflict. Live cache had 33 providers shipping sandbox-options.txt with 31 distinct hashes — those would have been 31 false-positive conflict rows on any sort spanning them. B. Path-based Vehicles signal in worker.build_manifest_and_types — extended the existing scripts/vehicles[/] check with models_x/vehicles/ and models/vehicles/. Catches vehicle mods that ship 3D assets without scripts (rare but real); still requires the user-build's manifest to be rebuilt before mod_types reflects it.
This commit is contained in:
@@ -431,7 +431,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")
|
||||
|
||||
Reference in New Issue
Block a user