Adds a new build parameter to skip icon cutting, this build parameter is
--skip-icon-cutter
This allows users like myself who don't have a working hypnagogic to
build the game when we are trying to debug code issues and don't care
about icons being cut or not
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
## About The Pull Request
Bumps the cutter to my latest
[version](https://github.com/spacestation13/hypnagogic/releases/tag/v3.1.0)
See there for the full CL but in short:
### Fixes/Polish
Error handling actually works now (it prints instead of crashing the
program)
Pretty colors in CLI when running it

Release files are more portable (Windows version requires less cruft bs
dlls, and the linux version targets musl instead of glibc, making it far
less platform dependent)
### Features
The cutter supports a new mode called Reconstruction, which takes a
target dmi and does a good faith effort to convert it back to input png
and toml files. This only works for default bitmasking, and it doesn't
ALWAYS work, but it's really powerful.
It's what I used to make my initial cutter pr here. See
[here](https://github.com/spacestation13/hypnagogic/blob/v3.1.0/examples/bitmask-slice-restore.toml)
for more detail.
## About The Pull Request
Turns out I fucked up the os walk stuff so this never actually did
anything. (also a broken param but at this point does it even matter)
More then that, it wasn't build to handle being called by something not
in its folder. This fixed that, so the lint like actually works.
## 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
Every time someone asks what -DCBT means i lose sleep so here's a
slightly invasive solution.
Build will now check if the dm version is at least 515.1597 (first
version with -D switch), at the cost of having to run dry dm.exe run.
juke refuses to compile dm if it thinks nothing changed.
juke doesn't have a way to bypass this and force a given target to
compile (this is a complaint for another repo)
There are dm files inside of this folder that are compiled in.
## About The Pull Request
.jsx files were recently switched to by TGstation, but because they were
not in TGUITarget, when you make changes to a .jsx file, it doesn't
recompile TGUI! Yippee!
I SPENT HALF AN HOUR RECOMPILING MY TGUI AND HAVING IT JUST NOT SHOW UP.
IT'S THE WORST. PLEASE FREE ME.
This PR fixes that
## Why It's Good For The Game
This has no game impact, it just fixes something that infuriates me. It
will save coders from the pain I had to go through before I realized
what was wrong.
## Changelog
🆑 ReturnToZender
fix: JSX files, when edited, cause TGUI to recompile on build
/🆑
## About The Pull Request
Ok so you know all the dmis we have that are made to work with the
smoothing system? carpets, walls, etc.
The proper way to edit those is to convert them into a png with 5
"states' it in (one for 0 connections, one for horizontal, one for
vertical, one for all cardinals and one for all directions) and then
modify THAT, then run it through [the cutter
tool.](https://github.com/tgstation/icon-cutter)
But none ever does that, because we explain it fucking nowhere. So
instead, let's keep all those "base" files in the repo, alongside the
configs they work with, and "cut" the pngs into dmis as a part of the
build process.
I wrote a guide for how to interact with this system as a spriter, you
can find it
[HERE](https://github.com/LemonInTheDark/tgstation/blob/slice-the-sky/icons/Cutter.md).
[Adds a icon cutter build
task](52143d2e96)
This relies on action ninja's hypnagogic (find more
[here](https://github.com/actioninja/hypnagogic)), a rust based icon
cutter.
It operates inline with the file structure, searching the codebase for
templates and resource files and compiling them down to dmis.
It can do way more then just bitmask stuff, but that is what we are
using it for rn.
Hope is to prevent for eternity the "I'm just gonna edit each of these
255 icon states that's how this carpet was made right?" meme, and allow
more expansive use of smoothing in future
[Adds a lint that ensures config files work
right](21eeab9cf8)
Checks to ensure they have a paired png and dmi, and also avoids issues
with uncompiled changes by double checking that nothing happens
before/after a cutter run
[Pulls all non smoothed states out of structures into bespoke
dmis](a730e0cb47)
This is required because the cutter cannot output named icon states,
only the actual cut icon
[Does something similar to
walls](40780e9481)
Moves reinforced walls decon stuff from their icon to a var on the type
and a set of states in the reinforced_states dmi
Moves falsewalls into their own dmi, this involved some changes to
gamecode to ensure falsewalls knew which dmi to use and what key.
Makes falsewalls display as such in editor rather then just walls
Moves smoothrock's gibonite overlays into their own file for similar
reasons
[Same thing different day
(Floors)](9a3da3b697)
Pulls bespoke floor icon states into their own file, splits up neon
carpets into multiple files to make cutting possible
[Actually adds the cut templates and their matching png
files](1bd8920dc9)
Not much to report here, outside of I changed the prefix for bamboo
walls to bamboo_wall so it works with false_walls
## Why It's Good For The Game

None should have to manually edit cut dmis. Ever.
Also this makes adding a new smoothed thing trivial, don't even need to
know what tool you're using to do it. V good v good.
Sets us up nicely for wallening's well, wall of sprites.
Some structural decisions, we are essentially committing build artifacts
here. That's the best way of handling it because otherwise mappers could
need to run build.bat before opening a map, and that is stupid!
## Changelog
🆑
refactor: (Almost) all smoothed icons can now be edited in their pre cut
forms
/🆑
You can now specify few named versions in `tools/build/dm_versions.json`
file and either set them as default (overriding anything but env vars)
or just use them with new --dm-version parameter.
Makes juggling versions bit easier during testing. I'll look into adding
support in sdmm so debugging is in line later.
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
* Removes Goon from Build.js
Hey there,
This folder doesn't exist any more on the repository, so we should probably drop it since it is no longer relevant to the function of this script.
I assume my changing of nearly every line in this file is related to Prettier running on the Javascript.
* Revert "Removes Goon from Build.js"
This reverts commit 1c5ab76fa9bbb1474a6ad615eef1bea27091f323.
* Does it without Prettier
Adds a /datum/autowiki template which can be derived in order to create wiki pages and queue file uploads. This is then kickstarted by the new tgs target autowiki (using the AUTOWIKI define) in order to upload these pages.
The pages generated are, in a best case scenario, raw data. This means that wiki editors can decide what the actual theme is without ever having to touch the repository. In the future, MSO will hopefully sandbox the wiki and install Scribunto to let us separate data and style even more.
These will, when done, upload to templates, such as Template:Autowiki/VendingMachines. The actual pages (in this case "Vending Machines") will include this, and thus can write down their own prose and whatnot without ever having to touch repo.
This will also be run on a daily GitHub action, with some secrets setup to link to the account. Currently this is on a bot password (my forum account will not be leaked in the event of a collapse), but at some point I would like to create a dedicated bot account.
This PR adds a Techweb and Vending Machine autowiki. You can look at the Vending Machines one here and the Techweb one here.
I have absolutely no idea what to label this PR (other than note the unit tests I've added). Feel free to add whatever gives GBP 😉
Added a package that allows precisely benchmarking tgui components on IE11 without having the game launched.
It has a convenient syntax for writing tests, just create a file packages/tgui-bench/tests/*.test.tsx, and export a function which you want to benchmark
Performance improvements
As part of this PR, I have also improved the raw performance of some tgui components:
Button component - 1.8x faster
Flex component - 1.1x faster
Stack component - 1.3x faster
This improves performance of heavy UIs by a tiny bit.
A light version of the revert to help builds work on TGS3.
(TGS3 builds were locking up on live, causing servers to be unable to testmerge or update things because of something to do with the recent juke build. I don't into the build tool, otherwise I'd be more clear)
Added an option to tools/build/build to treat DreamMaker warnings as errors. Enabled this option only for Windows Build (tools/ci/build.ps1).
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
* Juke Build 0.9.0
* Fix a small bug with build.js
* Distill cmds
* Return sonar
* Revert those build.cmd changes
* Some improvements
* Treat all sonar warnings as errors because they should fail the sonar target
* Do not clean up bootstrap cache because it locks up on removing it
## About The Pull Request
**Upgrades:**
- Yarn 3.0
- TypeScript 4.3
- Sass 1.37
- Required some refactoring of `/` into `math.div()` in CSS
**Dependency removals:**
- Removed ESM package, see: https://github.com/standard-things/esm/pull/902
I initially thought it was impossible to stop relying on this package, but fortunately, ES module support in Node 12+ now comes standard and I only had to convert the very few external module imports to `require()` (because Yarn PnP).
I also moved `logging.js` directly into `tgui-dev-server` package, because that's where it is used. One less internal dependency.
**Sidegrades:**
- Removed creation of a common tgui chunk, because in practice it creates unnecessary complexity (devs sometimes get a white screen due to this chunk being invalid) and doesn't really save that much data on CDN, and **definitely** doesn't make tgui load faster.
I think that is all. I tested it a bit and everything seemingly works.
Basically, saves developer's time by yelling that the compiler can't write to dmb/rsc, because they are locked by Dream Daemon.
Added myself as a code owner for /tools/build.
Updated Juke Build to version 0.4.0
Main new feature: dependsOn, inputs, outputs, and onlyWhen fields now all accept a function of format ({ get }) => ..., and all of them can be async. This means that you can easily parametrize every part of the build.
Added references to Juke Build to README in the build folder
This PR adds a minor note about needing to compile rust-g to Linux building instructions. I'm not sure if this is the appropriate place for it, but I don't see a better place to put it.
Adds a new CBT define which is automatically created when building. If this define is absent, the build will fail.
This is what Cyberboss tried to do with USE_BUILD_BAT_INSTEAD_OF_DREAM_MAKER.dm, but couldn't.
The reasoning behind this is CBT is already a requirement to build a fresh project, otherwise the tgui bundle files won't exist. This gives a readable error to go along with that. However, you can currently build once then just use Dream Maker. This is a footgun - not only are we already adding new things to CBT like tgfont which will fail later on, but also it will create weird scenarios when we add tasks to CBT that don't immediately fail if not ran, or otherwise create out of sync builds.
Also replaces rmSync with unlinkSync, which works on older Node versions.
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
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).