Changelog - Version 4.7
[4.7] - 2026-06-10
Fixed
- World model flat path generation — the flat candidate in
_world_base_candidates()now correctly drops thec_<name>subfolder when building thew_models/path. Previously generatedw_models/c_<name>/w_<name>(wrong); now correctly generatesw_models/w_<name>. World models for flat-structure weapons like the minigun now pack correctly. - Windows pip PATH warning — pip auto-installs now pass
--no-warn-script-locationso the harmless but alarming PATH warning no longer appears on first run. - Custom path filename — custom output paths with no
.vpkextension now have the generated filename appended automatically, consistent with folder path behaviour. - Invalid character check — expanded to catch shell-special characters (
|,&,;, etc.) in addition to null bytes and non-printable characters. Now also applied correctly in CLI mode and dry-run paths. - Ornament models in weapon search —
c_xms_festive_ornamentand similar schema-less non-weapon models are now excluded via a path-based blocklist, preventing them appearing in festive weapon searches.
Changed
- All-class items with no class-specific variants now appear in all class searches rather than being silently excluded.
Added
- Schema caching —
items_game.txtis parsed once and saved tooutput/schema_cache.json. Subsequent runs load the cache instead of re-parsing, significantly reducing startup time. Cache automatically refreshes if TF2 updatesitems_game.txt. - Startup risk warning — shown on every run. First run requires typing
agreebefore continuing. Covers VAC risk, competitive league policies, and using the tool while TF2 is closed. Retries on wrong input rather than exiting. - Acknowledgement flag — stored in
output/.acknowledgedas a SHA256 hash rather than plain text. Not to hide anything (source is fully open); provides light tamper-resistance for liability purposes. Verifiable with:hashlib.sha256(b"tf2autoswap_acknowledged").hexdigest()
Author Notes
4.7 ended up being a bigger release than planned. What started as a world model path fix turned into a proper testing session that caught several issues that had slipped through — the ornament filter, the invalid character check missing CLI paths, and the flat path bug being more broken than originally thought.
The risk warning and acknowledgement system were added this release for liability reasons. If you're wondering about the hashed flag file — it's documented in the changelog, the source is fully readable, and the verification snippet is right there. Nothing is hidden, it's just not plain text for tamper-resistance purposes.
Also switching to GPL v3 this release to align with the mods.tf source code license, making future integration work cleaner. This was always the plan before v5 — it just happened a little earlier than expected.
Thanks to everyone who's downloaded, tested, or given feedback so far. Still very much learning as I go.