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.
About The Pull Request
This pull request updates the vendored Node version from 14 to 20.
Why It's Good For The Game
The primary reason for staying on Node 14 was Windows 7 support, a feature only MSO cares about. He isn't a CitadelStation developer and doing a quick poll of the CitadelStation Discord led me to the impression that the other CitadelStation developers also don't care about this.
Switching to Node 20 unbreaks a bizarre behavior I have started seeing when I run the tgui-eslint target. Here's how it looks on Node 14:
Given that we use lockfiles, it's surprising that it's possible for this to be broken on my computer and working on GitHub Actions. That is itself a problem that someone should dig into -- I haven't dug into Juke enough to figure out why this happens.
However, setting this particular case aside -- this feature has existed in JavaScript since 2020 and was supported in Node 15: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_OR_assignment . Library authors are increasingly going to use stuff like this, so if we stay on Node 14, our build is going to break for increasingly esoteric reasons.
Will This Break Anything?
Other than Windows 7? No. Node is primarily used to generate the TGUI bundle, so I tested the behavior of the code we have by generating two bundles, then checking the shasums. On Node 14 I got
tgui.bundle.css:
f35775208ffbf8cfa60f6536401f4ae3e80ebe77
tgui.bundle.js:
2a0a01e8163e7e07e3a5db9cd0929c67e67ae1e3
tgui-panel.bundle.css:
e3d2dc64c2a550a2dfb83ed7d42e0680b6b25c67
tgui-panel.bundle.js:
f8c58cf5c4d59019bfc56a766496a4984c3f3866
On Node 20 I got:
tgui.bundle.css:
f35775208ffbf8cfa60f6536401f4ae3e80ebe77
tgui.bundle.js:
2a0a01e8163e7e07e3a5db9cd0929c67e67ae1e3
tgui-panel.bundle.css:
e3d2dc64c2a550a2dfb83ed7d42e0680b6b25c67
tgui-panel.bundle.js:
f8c58cf5c4d59019bfc56a766496a4984c3f3866
So, it generates apparently identical files.
Also, I spent a while clicking on random objects on Triumph and none of them spawned with broken TGUI.
Changelog
🆑 Pyrex
tweak: Update to Node 20 in the build system.
/:cl: