Releases: dataterminals/TFWCharModelSelFramework
Release list
CMSF v0.2.4 - the skin menu going missing for most of your characters
If the skin menu is missing for most of your characters — and works for the one or two you own a
DLC skin for — this is the one.
CMSFUnlock clears the filter that stops the game listing your base skins, and then leaves it to the
game to rebuild the menu. Rebuilding is the half that could quietly stop happening. The call that
forces a rebuild was tied to clearing the filter, so it ran at most once per menu panel, and a few
seconds into a session it stopped running at all.
That only matters for a character you own no DLC skin for. In vanilla such a character has nothing
to list, so the game never builds a menu for them, and nothing on CMSF's side made it. Own a skin
for a character and the game builds the list, CMSF unfilters it, and that character was fine —
which is why it looked like the mod worked for exactly one.
v0.2.4 forces the rebuild itself whenever a menu panel has nothing in it at all. It backs off if the
panel stays empty, so it is not doing that work every second forever.
There is also a new safety net that does not depend on the above being the whole story: if a menu
ends up holding tiles with none of them showing, the game's own skins are put back. An empty skin
menu is never correct, whatever caused it.
cmsfnoprune now actually restores tiles that were already hidden. It used to stop hiding new ones
and nothing else — so the one command the readme points you at when a skin is missing did nothing
about the skin that was already missing. cmsfprune still puts it back.
Nothing else changed. The framework pak is byte-identical to v0.2.3's; the runtime Lua is the only
thing in the player download that actually differs.
Honest caveat: this is not confirmed in-game. Reproducing it needs an account that owns no skin
for a character, and mine owns several — the diagnosis is the bug report plus the code. If your menu
is still missing after this, open the UE4SS console while standing at the broken character, type
cmsfunlock, and tell me the selector lists N skin(s) line. 0 and 39 are two different bugs, and
that number says which one you have.
Reported by TheLonerStar on Nexus. Thank you — it was a good report, and the detail about which
character worked is what made it findable.
Downloads
CMSF-v0.2.4.zip — what a player installs. Drop the Windows\ folder onto the game root.
Requires UE4SS.
CMSF-author-v0.2.4.zip — what a skin author runs. cmsf-author.exe plus retoc and a buildable
example skin. Authors supply their own usmap and AES key; CMSF ships neither. Unchanged from v0.2.3
apart from the version stamp — it is here so both halves of a release always match.
Licensing
CMSF exists under the MIT License, Copyright © 2026 dataterminals
The author tool bundle redistributes the following, all under the MIT License. Their notices ship in
licenses\ inside that download:
- retoc — Copyright © 2025 Truman Kilen and Archengius
- UAssetAPI — Copyright © 2020–2026 atenfyr
- Newtonsoft.Json — Copyright © 2007 James Newton-King
- ZstdSharp — Copyright © 2021 Oleg Stepanischev
UAssetAPI, Newtonsoft.Json and ZstdSharp are compiled into cmsf-author.exe rather than shipped as
separate DLLs, which is why you will not find them beside the executable.
Technical account of this fix, including what is measured and what is still assumed: the v0.2.4
stratum at the top of runtime/CMSFUnlock/Scripts/main.lua.
CMSF v0.2.3 - the skin menu stutter should hopefullyyyy be fixed
If the hub or the skin menu had a once-a-second hitch with CMSF installed, this is the one.
CMSFUnlock hides the placeholder tiles for CMSF slots that no skin has claimed. To decide which
those are, it looked up each tile's icon and compared it against the path that slot's texture would
live at — and it redid that for every tile on all four ready-room panels, every second. On a full
32-slot setup that is 128 tiles a second, on the thread that draws frames.
A slot's answer cannot change while the game is running: the texture either shipped in a mounted pak
or it did not. So v0.2.3 works each one out once and remembers it. Steady state is now a table
lookup instead of 128 asset-path comparisons.
Two earlier attempts went after a different suspect — the scan that locates the menu in the first
place. Those changes were real and are still in, but they were not what anyone was feeling.
No behaviour change. The selector still lists every skin, and unclaimed slots still hide.
New console commands, mostly for anyone who wants to check the difference themselves:
cmsfnoprune— stop hiding unclaimed slot tilescmsfprune— resume hiding them
Downloads
CMSF-v0.2.3.zip — what a player installs. Drop the Windows\ folder onto the game root.
Requires UE4SS.
CMSF-author-v0.2.3.zip — what a skin author runs. cmsf-author.exe plus retoc and a buildable
example skin. Authors supply their own usmap and AES key; CMSF ships neither.
Licensing
CMSF exists under the MIT License, Copyright © 2026 dataterminals
The author tool bundle redistributes the following, all under the MIT License. Their notices ship in
licenses\ inside that download:
- retoc — Copyright © 2025 Truman Kilen and Archengius
- UAssetAPI — Copyright © 2020–2026 atenfyr
- Newtonsoft.Json — Copyright © 2007 James Newton-King
- ZstdSharp — Copyright © 2021 Oleg Stepanischev
UAssetAPI, Newtonsoft.Json and ZstdSharp are compiled into cmsf-author.exe rather than shipped as
separate DLLs, which is why you will not find them beside the executable.
Full technical account of the stutter investigation, including what is measured and what is still
assumed: docs/09-stutter.md
CMSF v0.2.0 - skins that add instead of overwrite
Adds new character skins to The Forever Winter's select screen alongside the ones the game ships with, instead of overwriting them. New entry, its own name, description and portrait — nothing replaced, no slot taken, and two CMSF skins can never break each other.
It's worth installing before you have a single skin mod: the game ships base skins it never lets you select, and normally picking a DLC skin strands you on it until you die in a raid and get randomly reassigned. CMSF unlocks the selector.
Downloads
CMSF-v0.2.0.zip |
Players. The framework + CMSFUnlock. This is the one you want. |
CMSF-author-v0.2.0.zip |
Skin authors. cmsf-author.exe builds a skin into a pak. |
Installing (players)
Copy the Windows folder from the archive into your game folder so it merges with the one already there:
...\steamapps\common\The Forever Winter\
Launch, pick a character, open the skin menu.
Mod Organizer 2 users: don't copy anything into the game folder — install the archive as an ordinary MO2 mod. MO2 virtualises both target directories, so hand-copied files aren't what the game sees.
Requirements
- UE4SS — tested against
3.0.1-894-g2172883(take the build without thezDEV-prefix) - Signature Bypass — required for any content pak mod, not just this one
Note for skin authors: your antivirus may flag cmsf-author.exe
It's a self-contained, single-file, unsigned .NET build — a shape that trips heuristic scanners routinely, and the reason this bundle is hosted here rather than on Nexus. Nothing is obfuscated: the tool is ~700 lines of C# in this repo and you can build it yourself with dotnet publish tools/cmsf-author -c Release. Windows SmartScreen will also say "unknown publisher" once — More info → Run anyway.
The bundle ships retoc.exe (MIT, © Truman Kilen and Archengius) and no game data. You supply your own .usmap, dumped from your own copy — CMSF can't ship one without redistributing part of the game. Drag the bundled example-skin folder onto the exe to check your setup before building anything of your own.
What's tested, and what isn't
Validated in-game across all six characters against the full 192-slot framework: every menu populates and prunes, and an author's claim renders with its own name, portrait and mesh.
Not tested: multiplayer, and behaviour across a game patch. The framework has to be rebuilt from each new cook; author paks should survive untouched, since slot paths are append-only, but that hasn't been exercised against a real update yet.
Things that aren't bugs
- A skin can be missing for about a second when the menu first opens, then appear. The game reuses tile widgets across four panels, so the first pass reads a stale image. It corrects itself.
- Empty slots don't show. The framework provisions 32 per character; you only ever see ones a skin actually claimed.
If a skin you installed isn't showing, it's almost always load order — skin paks must load after the framework. Open the console and type cmsfnoprune to reveal every slot. If yours reads CMSF SLOT NN UNCLAIMED, the pak isn't loading, or is loading before the framework.
Authoring guide: docs/07-authoring-v2.md · Slot registry: docs/slots.md
MIT licensed.