## About The Pull Request
No player facing changes. Excludes the node_modules folder from vscode
search by default. With the new package management, we don't want to
always see all the module files while searching through tgui files.
## Changelog
Excludes node_modules from vscode search
## About The Pull Request
Swaps out node & yarn in favor of [bun](https://bun.sh/)

sub tasks
- [x] add bun setup script
- [x] fix tgui-dev-server (bun glob is different)
- [x] set juke to run bun
- [x] remove all yarn stuff
- [x] convert all tests from vitest to bun
- [x] fight with CI/tgs
## Why It's Good For The Game
Yarn has served us over the years as our package manager but the method
it bundles dependencies has lead to issues and setbacks, notably needing
to wait on rspack support, but more recently in trying to switch to
biome
1. I can add in packages that do not need these workarounds, like god
intended
2. We won't need to [keep around
sdks](https://yarnpkg.com/getting-started/editor-sdks) which rely on
yarn to even publish
3. We're not committing the yarn cache or .pnp file, which kind of
defeats the purpose
4. Native typescript support and testing
5. Because it'd be cool
## Caveats
Rspack was throwing errors on TGS while doing this. I needed to switch
back to webpack/swc, which seems to work flawlessly. It was too tiring
for anyone involved to debug and this was the simplest route. It adds a
completely negligible amount of time to build. It might even resolve
some issues elsewhere.
Making this switch extends that very first setup time! I'm working on
cutting it down, but as of right now, it takes about 80 seconds just for
TGUI to download all the packages. Afterwards, it's the same.
## Changelog
Prettier (an auto formatter) is set to only run within the tgui folder
currently. This removes that limitation, allowing it to automatically
format all supported files in the repo (.js, .html, .yml
[etc](https://prettier.io/docs/))
I made a few exceptions for bundled and generated files
I'm of the opinion that code should look uniform and am lazy enough to
want CTRL-S to format files without having to think beyond that
## About The Pull Request
Small change that not only saves a few lines from our current config but
also enforces prettier on other file types (INSIDE tgui).
VS Code is kind of confusing in re: formatter settings and which setting
takes precedence. I've learned that adding this just fixes weirdness
with user-set formatters. This overrides local configuration, which we
are trying to do anyway with .editorconfig.
Based on [this informative
tweet](https://x.com/colinhacks/status/1841934672647094599) by
colinhacks, creator of zod
## Why It's Good For The Game
More PRs can pass linters on CI
## Changelog
N/A
## About The Pull Request
#82333
I was mistaken
The inconsistent indentation warnings are killing me
I tried
## Why It's Good For The Game
Developer sanity
## About The Pull Request
(Correct me if I'm wrong here but) this is made obsolete by prettier and
our vscode settings
## Why It's Good For The Game
Removes obsolete tools
## Changelog
N/A nothing player facing
## About The Pull Request
If you're jim the new dev and you're using vscode to make commits to
master, let's add a "what's this" message for you before you do so
accidentially.
## Why It's Good For The Game
Should hopefully save some heartache for people who do not yet know how
branches work
## About The Pull Request
Oh god the file diff... I'm so, so sorry.
No need to worry though. This just replaces the prettierx version that
we were using and replaces it with normal prettier. Most of the settings
were default or no longer valid with this version.
## Why It's Good For The Game
You no longer get this warning #70484
It actually drives me up the wall and I have to click it each time I
open my editor.
## Changelog
N/A nothing player facing
Why It's Good For The Game
Further reducing reliance on reading the chat box. Previously it wasn't obvious someone pointing at themselves was pointing at something on them, and not just, them.
Changelog
cl
qol: Pointing at something on yourself now shows the item.
/cl
Added column 80 rulers to all javascript and scss files.
Added a "prettier" config to have sensible defaults for those who prefer to use it.
Added RadarJS (fork of SonarQube's SonarJS). Launchable only via bin/tgui --lint-harder for now.
Disabled ESLint rule for parens around arrow function arguments, because in TypeScript they're pretty much always required, and I don't want to replace it throughout the codebase.
Removed unused javascript extensions from tooling (jsx, mjs).
* Fix finding of dreamseeker instances and not die on cache copy failures
* Upgrade dependencies, resolve webpack dependencies explicitly
* Preload tgui asset to fix reloading of a not yet sent tgui asset
* Rewrite node bootstrap and DM build task
* Redundant array accessor
* Add install-state.gz to tgui build dependencies
* Update build.js
* Use a proper dmlang vscode var
Add Common Build Tooling
## Information for Developers
On Windows, the build scripts will automatically install Node. Other
platforms should use their package manager or download it from
https://nodejs.org/en/download/
Pick one:
- VSCode: `Ctrl+Shift+B`
- VSCode: `F5` (build & run with debugger) or `Ctrl+F5` (build & run
without debugger)
- Windows: double-click root `Build.bat` (pause to see output) or
`tools/build/build.bat` (no pause)
- Git Bash and non-Windows: `tools/build/build`
## Information for Server Admins
- TGS scripts will automatically install the version of Node specified
in `dependencies.sh`
- Either use this build script, or compile tgui by running any script
in `tgui/bin` folder.
## Details
Both dm and tgui are now built with a single script. It's pretty easy
to launch: just press `Ctrl+Shift+B` in VSCode, and tada! 🎉
**It's smart.** It will skip certain steps if source files were
untouched for that step. So, if you're only touching dm code, it will
only rebuild dm code, and will skip tgui.
**Syntax is fairly readable and maintainable.**
```js
const { Task, runTasks, exec } = require('./cbt');
const taskTgui = new Task('tgui')
.depends('tgui/yarn.lock')
.depends('tgui/packages/**/*.js')
.provides('tgui/public/*.bundle.*')
.provides('tgui/public/*.chunk.*')
.build(async () => {
await exec('tgui/bin/tgui');
});
runTasks([taskTgui]);
```
**This is a long term solution to the js bundle hell.** Now that we
have a single script to build everything, bundles have been excluded
from the repo, and they will no longer cause conflicts in PRs. This
results in quicker PR turnaround time and less time wasted on
rebuilding tgui for PRs.
**CI pipelines have been updated.** They're not coded in the most
optimal way, just making them green for now.
## Possible future work
- Support compiling with DM defines by passing them as an argument,
like `-D LOWMEMORYMODE`.
- Instead of explicitly listing the task sequence in `runTasks()`,
support specifying tasks in `.depends()`, which in turn will allow
building a graph of dependencies and running things in parallel.
Co-authored-by: Tad Hardesty <tad@platymuus.com>
- Add root Build.bat
- Add trio of tools/bootstrap/ scripts for Node
- Add tools/build/README.md
- Ensure build script and VSC configuration works properly on Linux
- Update TGS4 PreCompile scripts
Co-authored-by: Jordan Brown <Cyberboss@users.noreply.github.com>
- Keep PreCompile scripts compatible with TGS3 as well
- Update LinuxOneShot PreCompile scripts
- Update TGS4 configuration
Link to the test explorer: https://marketplace.visualstudio.com/items?itemName=Donkie.vscode-tgstation-test-adapter
The test explorer adapter lets you compile and run the code in one click of a button, with no messing about with defines necessary
The extension supports reading test results from the unit test logs, but its shitty having to parse logs for that, so this PR also adds support for a somewhat standardized method of logging unit test results to a json file instead.
* Initial tgui-next commit
* Improve dev server, slight changes to layout.
* Add more components, fix dragging, finalize scrubber list
* Complete an air alarm interface.
* Multiple improvements based on feedback
- LabeledList now has a "buttons" prop, where you can put buttons.
- Improved Box and Flex components
- Whole UI is now dimmable if non-interactive
- Basic documentation of components (Box and Flex so far).
- Icon and Box now accept a "color" prop.
- Routing improved in "Layout" component, you can now specify whether an interface is scrollable.
* Less harsh dimming
* Redux, Toasts
- Fixed inconsistent backend updates with Redux.
- Added Toasts which are currently unused, but are functional.
* acclimator + ai airlock ui
* Add a progress bar component, implement resizing
* Fix a zero in title bar
* Add a linter to keep shit tidy, fix danger level mapping, add some more docs
* better ai door interact ui
* final ai airlock interface
* Fix issues with code, enforce hard 120 line length cap, automerge binaries
* Implement hot module reloading
* Fix progress bar, add color support
* Fix ProgressBar baseline alignment issues
* Remove unwanted padding on the bottom of the LabeledList.
* Component improvements
- Fix baseline issues with Button and ProgressBar components
- Box how inherits props from Box
- Atomic colors and Button colors are now auto-generated, all range of colors supported
* Chem Dispenser UI, animated numbers, more style fixes
* Add an IE8 polyfill
* Intermediate state of fixing IE8
* Lots of shimming and general misery
* Fully working old TGUI chainloader for IE8, more pipeline improvements
* Support title-less Sections
* Delete Yarn, use Lerna for workspace management
* Improve maths and animated numbers
* Fix loss of focus for scrollable content, activate buttons with keyboard
* Attempt to bust the cache, grab focus on keyboard presses too
* Fix hot module replacement by manually pulling replaced modules.
* backend logging
un-nuke line endings
changes without insane line endings
* helper procs + href support
* slight optimization
* compiles
* Redux, Hotkeys, Kitchen Sink (for UI testing), Tabs component
* Push logs to backend, small kitchen sink changes, tab fixes
* Update component reference in README
* Small fixes
* Next bunch of IE8 fixes, PureComponent optimization for Inferno
* Delete old tgui html
* Log the event of loading the old tgui
* Enable tgui logging on server by default
* Final solution
* Extract routes into a separate file, fix ChemDispenser bug
- Chem dispenser was needlessly disabling transfer amount buttons
* Disable baseline alignment for vertical tabs
* Fix tabs and box units
- Tab content was not taking full page width
- Box can now accepts strings as units, which will be treated as raw style values.
* Fix tgui on Terry
* Fix sending all logs with an "error" flag
* Some macro UI component changes and improvements
- Refer to README.md diff to see what's new
* Tooltip component
* Add support for themes, nanotrasen logo is back
* Clockwork theme hotfix
* Slight adjustment to logo positioning
* Actually proper solution for logo positioning
* Fix color maps
* tgui-next thermomachine interface
* tgui-next canister interface
* Add icon_class_name proc to asset cache
* Lots of stuff backported from actioninja's repo
* Cleanup oopsies
* Cargo UI adjustments
* Nuke lodash
* Minor fixes and cleanup
- Remove local Inferno package in favor of upstream Inferno
- Fix "initial" prop on AnimatedNumber
- Force fancy=0 for IE8
- Click-through dimmer
* Add a bat file for dummies
* podlauncher interface fix
* Update README, assert code dominance
* Clarify usage of event handlers in Inferno
* Document LabeledList.Divider
* Fukken grammar
* fixes cellular emporium readapt button not working
* fixes incorrect action on button in atmos control interface
* remove unneeded data from airlock electronics ui
* Set +x mode on bin/tgui
* Fix filename cases
- They were untracked by git on windows
* Ignore package lock, make batch more robust
- package-lock.json is very random and unreliable as fuck. Yarn was better.
* Build tgui-next in travis
* bruh
- fixes tgui error reporting
* logging cleanup + always log