fix: ship menuIcon.dds for the Esc RF door badge - #22
Open
TheCodingDad-TisonK wants to merge 9 commits into
Open
fix: ship menuIcon.dds for the Esc RF door badge#22TheCodingDad-TisonK wants to merge 9 commits into
TheCodingDad-TisonK wants to merge 9 commits into
Conversation
A Lua parse error does not stop FS25 loading the mod. The mod loads, the game runs, and the offending FILE is silently dropped, so one feature is simply absent with nothing but a compiler line nobody reads. On 2026-08-05 seven files across four repos shipped with a UTF-8 BOM, every one of which would have died exactly that way. Lua does not skip a byte order mark the way it skips a shebang, so the BOM is read as part of the first token. - tools/git-hooks/pre-commit: parses the staged .lua set with luaparse pinned to Lua 5.1, then runs the repo lint where one exists. Syntax blocks the commit, lint only advises. - tools/test/check-staged.mjs: the checker. A BOM was already caught, but only as "Cannot read properties of undefined (reading 'range')", which tells you nothing. It now names the BOM and says how to fix it. - node_modules/ gitignored; luaparse is fetched on the hook's first run. Dev tooling only, never shipped: build.sh repos use an INCLUDE allowlist that omits tools/, and the build.py repos exclude it via EXCLUDE_DIRS. Install on a fresh clone: bash tools/test/install-hooks.sh Skip once: git commit --no-verify
Wizard lane OUT 2026-08-08: one PR onto origin/development (no GPortal). Co-authored-by: Cursor <cursoragent@cursor.com>
Esc RF densify / RfEscModules whitelist guest deltas
The Esc RF door host builds RfPdaMenuPage which loads textures/ui/menuIcon.dds as the module badge. TaxMod never shipped the file; the build script walks the whole tree so it was missing only the asset, not an include change. Add the suite menuIcon.dds.
The previous menuIcon was an uncompressed dds (raw format), which FS25 does not reliably render as a tab icon, so the Esc RF door showed no badge. Swap to the suite's DXT5 256x256 badge.
The shared Esc door is built by whichever carrier loads first, and load
order is alphabetical, so FS25_DairyCore won it. Its copy of
RfPdaMenuPage had the Soil footer frozen at { Back, Help }, so Rotation
Planner and Field Detail were simply absent from the chrome the player
got, no matter what SoilFertilizer itself shipped.
Four lineages were live in the field:
2260 MarketDynamics 67 fns, full Soil footer
2110 DairyCore + 4 others 67 fns, Soil footer short 2
1858 SoilFertilizer 61 fns
1855 SeasonalCropStress, WorkerCosts 61 fns
MarketDynamics was a strict function-level superset - zero functions
existed only in SoilFertilizer - so it becomes canonical, with the two
SoilFertilizer deltas re-applied on top:
- Help is no longer seeded into menuButtonInfo at initialize time. It
leaked onto every module's footer until the first chrome sync ran.
- the long rf_pda_side_info_* fallback strings are restored over the
shortened rewrite.
All nine now ship one identical file, so who wins the door race stops
mattering. Creation order is untouched, so this does not reintroduce the
load-timing regression that got 7f8b21b2 reverted.
Line 44 ended without a line continuation, so the zip command stopped there and the --exclude "./tools/*" on line 45 ran as its own command and did nothing. The test harness, including tools/test/node_modules, was being packed into the mod players download. The python fallback path had the same hole: EXCLUDE_DIRS did not list tools either. Zip drops 384K -> 328K, and no longer carries 8 node_modules files.
Swaps the suite badge from the Soil sprout to Wizard's RF monogram. He shipped it in FS25_NPCFavor (bb70571) but it never reached the mod that actually owns the badge, so nobody saw it: RfEscBootstrap resolves ICON_OWNER to FS25_SoilFertilizer, so SoilFertilizer's copy is the one that renders whenever SF is installed, whoever built the door. The other carriers hold the fallback for a no-SF install and are updated in step. Format: Wizard's source was 256x256 DXT5 with zero mipmaps, while the badge proven to render in game is 256x256 DXT5 with a 9 level mip chain. Rebuilt with the full chain by reusing that working file's 128 byte header verbatim, so dimensions, fourCC and mip count are provably identical to the icon already known good. 87536 bytes, unchanged. The sprout is preserved at textures/ui/menuIcon_sprout.dds in SoilFertilizer so it can be restored without digging through history. MarketDynamics keeps its own price-chart icon: that is module branding, not the suite badge.
Member
Author
|
Heads up for review: this PR has picked up the 2026-08-08 Esc door work since it was opened, so it now carries more than the title says.
Verified: parses clean under Pattern doc for future footer work: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The Esc RF door host builds RfPdaMenuPage which loads textures/ui/menuIcon.dds as the module badge. TaxMod never shipped the file; the build script walks the whole tree so only the asset was missing. Adds the suite menuIcon.dds. Built and deployed.