Skip to content

Upstream 04.04.26#99

Merged
Bruh-24 merged 320 commits into
Alliance-codeBase:masterfrom
Artemchik542:upstream-5
Apr 6, 2026
Merged

Upstream 04.04.26#99
Bruh-24 merged 320 commits into
Alliance-codeBase:masterfrom
Artemchik542:upstream-5

Conversation

@Artemchik542

@Artemchik542 Artemchik542 commented Apr 4, 2026

Copy link
Copy Markdown
Contributor

Эти рефакторы...

🆑 MassMeta
add: Upstream 04.04.2026
/:cl:

MrMelbert and others added 30 commits March 19, 2026 05:25
…ey are active/moving) (#95311)

## About The Pull Request

When brand intelligence triggers, infected vending machines have a 50%
chance to deny you from using them unless you are moderately wealthy
(>=1000 cr)

When the vending machines activate/start moving, they outright deny
usage from everyone

## Why It's Good For The Game

We have some very good vendor deny icons but they are almost completely
impossible to trigger in game (with the exception of booze vendors and
some very edge cases)

Someone gave me the idea to use them in the brand intelligence event and
it feels pretty appropriate. Also helps you identify infected vendors
(whereas right now you can only tell by the occasional message). Maybe
it'll even incentivize people to actually hunt down the origin rather
than just wait it out.

## Changelog

:cl: Melbert
add: Intelligence vendors (from the event) have a 50% chance to deny
users who are not wealthy. When the vendors awake and start moving, they
instead get a 100% chance to deny anyone.
/:cl:
## About The Pull Request

This adds screentips for scanning raptors - both with the PDA RaptorDex
app, and the standalone handheld version.

Also fixed a bug where the "scanned" balloon alert didn't properly
appear for the, bc it'd try to display the balloon alert to the
raptor...

<img width="329" height="419" alt="2026-03-15 (1773602977)"
src="https://github.com/user-attachments/assets/8a16f5c4-f65b-4931-ac0b-7c165f4781de"
/>

<img width="285" height="349" alt="2026-03-15 (1773603014)"
src="https://github.com/user-attachments/assets/827e2e1a-5243-4763-8532-b4fe2246c745"
/>

## Why It's Good For The Game

I initially didn't realize that you had to _right click_ to scan raptors
with the PDA app, so like, I decided to add screentips to make that
clearer.

also bugfix good.

## Changelog
:cl:
qol: Added screentips for scanning raptors with the RaptorDex PDA app
and standalone handheld RaptorDex.
fix: Fixed the handheld RaptorDex not showing the "scanned" balloon
alert when scanning a raptor.
/:cl:
## About The Pull Request

No other sprite available, and no reason not to use the basic claymore
one. They use the basic claymore inhand sprite too.

## Why It's Good For The Game

closes #95451

## Changelog
:cl:

image: gave the worn ceremonial claymore the basic claymore's worn icon.

/:cl:
## About The Pull Request
#95197 made gene-produced webs drain the stamina of their makers, this
is a fix for that
## Why It's Good For The Game
## Changelog
:cl:
fix: webbing production webs no longer harm their maker
/:cl:

---------

Co-authored-by: l0 <-->
## About The Pull Request

### Main changes

Lavaland relics from boulders have a (mostly) unique suite of random
effects, differentiating them from normal station relics

<Details>

<Summary>Spoiler Effect list</Summary>

- Dimensional shift (same as normal)
- Summon monsters (Summon animals, but Lavaland/Cult creatures, has a
high chance of deleting itself.)
- Explode (same as normal)
- Low potency shield (When holding the relic, you get a shield that
blocks three normal attacks.)
- High potency shield (When holding the relic, you get a shield that
blocks one normal or overpowering attack.)
- Random teleport (same as normal)
- Random AOE teleport (Cult themed version of normal teleport that
affects all nearby objects/mobs. Blocked by antimagic, has a low chance
of deleting itself)
- Recharge (same as normal)
- Rockfall (Places rock turfs over nearby open turfs. These are weak, ie
they can be hand-mined. Stuns anyone caught in it, has a chance of
deleting itself)
- Blood spray (Consumes a chunk of the user's blood and sprays blood
around. Has a chance of swapping to Blood suck)
- Blood suck (Consumes a chuck of all nearby mob's blood and transfers
it to the user. Blocked by antimagic. Has a chance of swapping to Blood
spray)
- Cleaning foam (same as normal)
- Acid cleaning foam (spawn an ez-clean grenade, has a high chance of
deleting itself.)

</Details>

### Other changes

Relics spawned from gifts (ie Christmas) auto-reveal themselves

Blood sprays won't merge with each other

Better documentation, and relics now uses `deconstruct` when terminating
itself

## Why It's Good For The Game

- The flavor behind these cursed and cultish relics doing the same thing
as the cobbled together electronics found in maint is kinda weak. 90% of
the time I see them abandoned in a pile in mining. More flavorful and
potent effects may make people decide to investigate them more.

- The gift thing was just a fun random idea I had. Allows people to play
with their new toy immediately.

## Changelog

:cl: Melbert
add: Relics found from cracking boulders now have a (mostly) unique set
of mining and cultish related effects.
add: Relics found in gift boxes no longer need to be discovered first in
science.
/:cl:
…her than targeting chest. (Adds stumps) (#95252)

## About The Pull Request

- The `prosthetic replacement` surgical operation has been reverted to
be closer to how it used to work: The operation is done targeting the
limb that's missing

The change was made out of necessity, as surgical state was tied to
limbs - you had to operate on the chest to re-attach limbs because there
was no limb to operate on.

To circumvent that, I have done the unthinkable of adding stumps when
you are dismembered.

- Missing limbs are now represented as an invisible, un-removable,
un-interactable limb.

Making this change was not as difficult as originally anticipated, and
(at least surface level) seems to have broken very little.

Surprisingly little had to change to make this work. 

Direct accesses to `mob.bodyparts` was changed to `mob.get_bodyparts()`
with an optional `include_stumps` argument.
Similarly, `get_bodypart()` had an optional `include_stumps` added. 

This means we ultimately barely needed to change anything, and in fact,
some loops/checks were able to be streamlined.

## Why It's Good For The Game

- As mentioned, this change was out of necessity and was easily the
least intuitive part of the broader changes. Reverting it back to how it
used to work should make it far easier for people to pick up on, and
means we can cut out a bunch of bespoke instruction sets that I had to
include.

- The addition of stumps also adds a ton of future potential - code wise
it allows for stuff like better damage tracking (we can transfer damage
between limb <-> stump rather than limb <-> chest), and feature we can
do "fun" stuff like have stumps bleed on dismemberment that you can
bandage.

## Changelog

:cl: Melbert
del: "Add prosthetic limb" surgical operation has been reverted to be a
bit closer to how it used to work - you operate on the missing limb /
limb stump, rather than on the chest.
refactor: Missing limbs are now represented as limb stumps. In practice
this should change nothing (for now), as no features were rewritten to
make use of these besides surgery. Please report any oddities with
missing limbs, however.
/:cl:
## About The Pull Request

I want to do stuff with parallax (like placing stuff in the backdrop and
moving it around), but I'm in my not doing 100 things in one pr arc so
we're doing this piecemeal.

To start, I wanted to try adding oldspace back as a parallax layer. This
is something I was considering when it was first removed but never got
around to, so here we are.

I started by [writing a rust
program](https://github.com/LemonInTheDark/old_space_gen) to fabricate
the required icon state, then realized that all the different parts of
space have their own animation delays. There's no way I could make one
icon state with all them looping, so instead I split them up into
multiple components and then overlayed them together.

This works, but is infeasible (my gpu died) at the scale required for
parallax (17 480x480 sets, 15 unique delays per 1 set) so I used render
targets to render one copy, then mirror it to the rest of the overlays.
This works wonderfully, and gets us down to (on my machine) a gpu cost
comprable with about medium parallax intensity.

I'm open to making these tile bound but I thought making them look "far
away" feels better.

In the process of all this I got very mad at the existing parallax code,
soooooooo

Parallax layers are no longer stored on the client, they are stored on
and managed by the parallax home atom that holds them for display. Said
atom also tracks all the information about how they are selected.

Parallax layers no longer take a hud as input, instead expecting a
client. (we were just swapping them back and forth and I thought it was
dumb).

Parallax no longer tries to support passing in a mob that does not
actually own the hud it is displayed on. This feature wasn't even being
used anymore because it was fully broken, so all it was doing was making
the code worse.

Parallax no longer has to do a full refresh anytime something about WHAT
layers are displayed might have changed. We cache based off the
variables we care about, and use the change in state to determine what
should happen (this is improved by moving "rendering the layers" fully
to the control of the home datum).

Parallax no longer directly modifies the hud's plane masters, instead
relying on trait based signals to manipulate them (this avoids wasted
time in the common event of a needless parallax prefs check).

Parallax no longer has 2 procs that are only called together to
"remove/readd/update" the layers, instead doing both in a new check()
proc.

Cleans up some plane master cruft to do with tracking/managing huds
(might break, tested, think it's fine).

## Why It's Good For The Game


https://github.com/user-attachments/assets/79138a0f-9f6d-447d-843e-0d237db13276

## Changelog
:cl:
add: Added an option for rendering space parallax with old space sprites
(the ones from before we invented parallax), they're animated and I feel
quite pretty.
fix: Space parallax should hopefully behave a little more consistently
now
refactor: Rewrote a lot of how space parallax handled itself, please
yell at me if any bugs make themselves known
/:cl:
…ys (#95362)

## About The Pull Request

[Adds a visual tick helper, integrates it into SSmove and
such](tgstation/tgstation@e97035f)

Basically, if we do "stuff" during verb time then the next chance
clients have to actually see it is on the next visual tick (rather then
the normal "this tick"). This is cause clients get their next frame
during maptick, and maptick runs before verbs.

We want to be able to handle this properly because if you say, create an
object and then move it on the same VISUAL tick (NOT game tick), it will
just teleport instead of playing out the move. I don't want this for
stuff like sparks, so we need a way to work around it.

[Moves most users of the _FAST flag to
_INSTANT](tgstation/tgstation@6f96daa)

These are the kids that don't immediately spawn something and the move
it, and we want to allow them to move actually as soon as possible
(important for stuff like space)

[Improves basic effect systems, makes their products delete when they
stop
moving](tgstation/tgstation@172cb25)

Moves some stuff out to getters or vars so children can better decide
how long effects should last/how fast they should move. Uses this to
clean up weird dupe code used by explosions.

Makes all these effects delete on contact with something that stops
them. I'm doing this because an effect just hanging in the air looks
really really odd. Does have consequences for sparks that are already
moving at a wall though, might need a better way to handle that.

Makes all these effects use _FAST loops so they don't just hang in the
air for a second on spawn

Adds a setter proc on sparks for their duration, gonna use this to
improve their effects some

[Refactors overlay lights, adds support for animating their
images](tgstation/tgstation@3ad0083)

Implements light_render_source and relevant setters, this allows us to
replace the components of an overlay light with basically whatever we
want

Refactors overlay lighting to handle its images more consistently,
allowing us to hook into an image being modified

Combining the two of these will allow us to consistently copy a light's
image, modify it in some way, and then relay that modification back
down. Allowing us to animate it or do more advanced effects painlessly

Also, fixes ranges of 1 or less not rendering at all on initial set
(thank you kapu)

[In which I get fed up and add a macro helper for UID
generation](tgstation/tgstation@aab48b0)

[adds vv hooking for all existing lighting
vars](tgstation/tgstation@b81c620)

[Upgrade effect system's dir picking to avoid duplicates when
possible](tgstation/tgstation@18b6225)

[Uses the technique described above to animate spark's lights out as
they
move](tgstation/tgstation@67ba177)

This is a decently nice effect imo, it allows us to bump their power
(read, alpha) since it'll get animated away. I try to sync the animation
to the actual icon state's flow (it's 0.7s long). I also sped them up
somewhat to hopefully have a nicer looking effect? we'll see.

[Abstracts away intercepting overlay lights into a holder
datum](tgstation/tgstation@b3f1fe7)

This should make it far easier to reuse this pattern!

[Fixes overlay lights flashing to double intensity when picked up off
the
ground](tgstation/tgstation@1d83f20)

We needed to clear out their underlays BEFORE the animation

[Adds a flickering effect to flares and their
children](tgstation/tgstation@b7a858e)

I'm still not 100% happy with this, I was trying to avoid it feeling
like a heartbeat with random noise and I.. THINK it worked? it's
honestly quite hard to tell

[Adds the same flickering to lighters, welding tools and life
candles](tgstation/tgstation@3ec4402)

Also, updated light candles to mirror the appearance of normal candles
and use overlay lighting

EDIT:
I realized while working on flares that I accidentally double applied
color, so if you saw the sparks animations before now it was different
(less vibrant). IDK if I like this better or worse but it is RIGHT and
that's what matters.

## Why It's Good For The Game

I got mad about how bad these looked, and this is a start at improving
them.
Also, adds a framework for more dynamic effects applied to overlay
lights (you could use this to apply a sort of "emergency rotating"
effect, or flicker/buzz for example).

<details>
 <summary>Before</summary>


https://github.com/user-attachments/assets/66437f27-ee3c-4f14-a7ee-4a1c3e68533a


https://github.com/user-attachments/assets/ed14fff8-a7eb-47fe-bab5-9a490ac96629

</details>

<details>
 <summary>After</summary>


https://github.com/user-attachments/assets/fb24ff2e-c745-42a5-8e11-c8a1eeef35a5


https://github.com/user-attachments/assets/fd8c2116-cb92-4fe6-ad3e-786a6538e52a

</details>

## Changelog
:cl:
add: Reworks how sparks render. They're now a bit brighter, will fade
out as they move/if they hit something, will stack with each other less
and also won't start hang in the air on spawn.
add: Added a flickering effect to lighters, welding tools, flares,
torches and candles (since they're flames).
fix: Overlay based lights (think flashlights) will no longer flash to
double intensity while being picked up.
refactor: Reworked how some effects (explosion particles, sparks, some
reagent stuff) function, report any bugs!
/:cl:
## About The Pull Request
- Fixes
tgstation/tgstation#94993 (comment)
- Partially addresses #95310. That is deconstructing the floor tile of
the sink won't destroy it. This behaviour was caused by #95062 which
made sinks mount to floors & not walls

## Changelog
:cl:
fix: you can pry out/deconstruct floor tiles/reinforced tiles etc
without destroying any floor lights/sinks mounted on as long as there is
plating underneath that turf
/:cl:

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
## About The Pull Request

Ok so on the parallax pr I moved a bunch of dumb plane group signal
registration to the set home proc. Unfortunately because set_home is run
BEFORE update_offset, any created relays will then be offset down X from
where they should be.

For the master plate, this means #1's relay to transparent plate #0 will
instead draw to transparent plate #1 (which of course renders into
master plate #1)

To fix this I've moved update_offset to BEFORE set_home, so children can
hook into it and do things in a sane and normal way. Near as I can tell
there's no reason they're ordered as they currently are. I've also added
a failsafe check to prevent relay creation before update_offset is
called, and attached a CRASH() to such.

Interestingly enough this caused crashes on shift right click. That's
fun I think
## About The Pull Request

Exactly what it says on the tin - the Staff of Storms is now normal
sized instead of bulky, and will fit in a backpack.

## Why It's Good For The Game

The Staff of Lava fits in a backpack, and it arguably has far more
destructive/abuse capability than the Staff of Storms. The main use of
the Staff of Storms is dealing with ash storms, and like, I don't want
to take up my back slot for that.

## Changelog
:cl:
balance: The Staff of Storms is now normal-sized, and fits in a
backpack.
/:cl:
## About The Pull Request

So, the DNA vault is a 3x3 building, which spawns itself around the
machine frame in kind of a awkward pattern.
X represents the machine frame, and O represents the built vault's solid
tiles:

```
~X~
~~~
~~~
```
and upon built
```
OOO
O~O
O~O
```
Right now, building the vault doesn't required specific space, meaning
you can spawn it right into walls, hallways, whatever without
consideration. So, at the very least, this PR tweak it so that
<img width="285" height="349" alt="image"
src="https://github.com/user-attachments/assets/557a1ee1-d9a6-4d7e-8edd-d4381b8b2b3b"
/>
-> 
<img width="318" height="411" alt="image"
src="https://github.com/user-attachments/assets/dc7eaf4a-7c47-4e79-892c-8135f653183e"
/>

In doing so, this adds a new proc to machine construction onto circuit
boards called `completion_requirements` that can be used to check this
before completion.

This also adds a small QOL tweak to the debug BRPD by adding cables to
the parts list, as well as adding the same pointer arrows to the BSA
construction prompt for consistency with this change.

## Why It's Good For The Game

Seems like an oversight for the BSA to factor in space requirements
where the DNA vault, a similar multi-tile machine to not care in the
same way.
Absolucy and others added 20 commits April 3, 2026 15:26
## About The Pull Request

This adds experimental read-only support for `/alist`s in VV.

I'm not quite sure how to add support for properly changing alists, but
this is better than nothing at least.

### Before

<img width="474" height="262" alt="image"
src="https://github.com/user-attachments/assets/8701fc64-855b-429e-88d1-f6607000b2c8"
/>

### After

<img width="943" height="539" alt="2026-03-23 (1774313721) ~
dreamseeker"
src="https://github.com/user-attachments/assets/cb6caf2a-19fd-49a9-b228-1bccb2c315f3"
/>

## Why It's Good For The Game

Should be able to at least view alists with VV.

## Changelog
:cl:
admin: View Variables can now properly view alists, altho it cannot edit
them.
/:cl:
## About The Pull Request

<img width="444" height="318" alt="image"
src="https://github.com/user-attachments/assets/d2b21460-0b11-499a-b05e-33d3a9768e71"
/>

Walking through snow or sand leaves behind a trail of prints similar to
that of bloody footprints (they use the old sprites, in fact). Like
bloody footprints, you can examine them to get a hint at what left the
prints (shoe type or leg type if barefoot).

When weather comes through (snow storm or sand storm), all prints will
be cleared off. During a raging snow or sand storm, you won't leave
prints at all.

Snowprints can be filled with snow to remove them as well. 

Some equipment or effects will stop you from leaving snowprints (ski
shoes, ice shoes*, heretic's cloak of shadows). Also you obviously don't
leave prints if you're flying or crawling or riding something.

**We don't have snow shoes* 

## Why It's Good For The Game

Initially I made this as a cute little detail, but I realized it has far
reaching implications for play on Icebox (and many, many sandbox
applications)

On Icebox, any average joe can run into the wastes and become
untraceable, which makes it almost impossible to track down antagonists.
Snowprints... are a method for tracking people who run off into the
snow.

But you can play around it - You can make fake trails and retrace your
steps. You can wait for a snowstorm to clear your tracks. You can even
fill in your tracks with snow if you're patient. Alternatively,
acquiring snow shoes means you leave no trail... or you could learn to
fly, crawl through the snow, use a vehicle, so on.

If you're assigned to assassinate a miner, you can follow their
snowprint trail as they head into the wastes. However, this may only
works early in the round, as the caverns have no snowstorm to clear
prints - as miners come and go, it will become harder to follow trails.

Speaking of miners, they can follow their co-workers trail if they get
injured, or look for prints to see if a ruin has been looted. Similarly
if a crew member falls down to the mining layers, they could find a
miner's trail to follow it back to the station.

And If you're a paramedic and someone was wounded out in the wastes, you
might be able to find their trail to track them down. But you can't
dilly-dally, as the storm will wipe away any chance of that.

Ultimately I think a small detail like this has some big potential for
emergent gameplay which could be cool. My intent is not to affect
antagonists too negatively, so more tools to avoid leaving prints (snow
shoes) could be added.

## Changelog

:cl: Melbert
add: Walking in snow or sand leaves behind prints. You can examine the
turf to see what left the prints, like with bloodprints.
add: Snowstorms or sandstorms clear away any footprints left behind in
the snow or sand.
add: Some equipment or effects, like skis or snowshoes, prevent you from
leaving prints in the snow.
add: You can fill in snowprints with snow. 
/:cl:
…#95571)

## About The Pull Request

The Pneumatic Cannon: ~~god's greatest mistake~~

On live there's current a bug, almost certainly attack chain-based
causing the cannon to be unable to be placed on tables. This most often
occurs with the clown's pie cannon, as it will always try and fire at
the table instead of putting it down. This PR corrects this by adding a
small intermediary proc similar to the ones guns use in order to verify
some of the conditions that could prevent you from firing the pneumatic
cannon, while still letting you fire point blank at another mob.

Additionally, Autodocs some variables, as well as axing a variable that
was doing quite literally nothing that another variable was already
doing.

Finally, cleans up some of the logic on `examine()` for the cannon, such
as not looping through 50 pies that an automatic pie cannon can hold,
and cleaning up some magic numbers a bit with some self explanatory
logic regarding combined weight on self-charging pneumatic cannons.

## Why It's Good For The Game

Cleans up some attack chain code, and allows for everyone favorite
non-gun gun to behave in a similar way to a gun that we'd all expect.

Also, makes the examine text a bit more useful, such as displaying the
contents of the cannon in a way that doesn't require a CHECK_TICK for
something that can only hold pies.

Lastly, cleans up most of the var documentation because it's my pet
peeve

## Changelog

:cl:
qol: The pneumatic cannon's examine will now show the contents of the
cannon loaded.
fix: You may now place a pneumatic cannon (and the clown's pie cannon!)
onto tables.
/:cl:
## About The Pull Request

The cult barrier rune runtimes when destroyed because both the barrier
and the rune try to qdel each other in `Destroy()`
Spells runtime when using their last charge because they attempt to log
their action's name, which is deleted in `cast_spell()`
The cult master spell that moves your underlings around runtimes because
they pass no volume into `play_sound()`

## Why It's Good For The Game

Fixes runtimes

## Changelog
:cl:

fix: Three cult abilities no longer runtime

/:cl:
## About The Pull Request

They kept their dir from last time you kicked em out

## Why It's Good For The Game

You should turn when you turn

## Changelog
:cl:

fix: Wheelys dont turn you when you kick them out

/:cl:
…bited in a morgue tray (+makes it shake) (#95602)

## About The Pull Request

If you orbit a recovered crewmember or thanatorenasia body situated in a
morgue, the indicated will change from red to green, indicating the body
is revivable

Additionally, orbiting a recovered crewmember or thanatorenasia body
will cause morgues or bodybags to shake. This is an extension of the
existing behavior where orbiting the body causes it to twitch.

## Why It's Good For The Game

Allows doctors to store bodies in a safe place while they wait for a
ghost to occupy it, also means you don't have to repeatedly defib them.

## Changelog

:cl: Melbert
qol: Recovered crew/Thanatorenasia bodies in morgue trays change the
indicator to green when a ghost is orbiting them (to allow ghosts to
signal they want it to be revived)
qol: Recovered crew/Thanatorenasia bodies now cause morgue trays /
bodybags to shake when orbited, much like how the body itself shakes
when orbited (to allow ghosts to signal they want it to be revived)
/:cl:
## About The Pull Request

- Adds an `EGG` foodtype

- All food recipes are `CAT_FOOD`

Foods now have three sub categories to sort from
Cuisines - correspond to Lizard, Martian, Mexican, etc. 
Dishes - correspond to pizza, bread, pastry, etc. 
Meals - correspond to breakfast, main, dessert, etc. 

In the crafting menu, you can select any number or combination of
cuisine, dish, and meal.

<img width="557" height="559" alt="image"
src="https://github.com/user-attachments/assets/e4265c51-992c-415a-bfc6-cbf44255b3cc"
/>

You can even click two dishes or two cuisines to see results from those
two dish categories or cuisine categories specifically.

- De-capitalized (or \improper'd) several foods for proper formatting

## Why It's Good For The Game

- `EGG` foodtype was added solely to replace the old `CAT_EGG`. Now you
can filter by egg foodtype in the `types` subtab.

- I was playing chef recently and I was a little frustrated at the food
grouping. If you want to find all available pizzas, it's split between
moth and pizza. If you want to find all available soups, that's split
between soup, lizard, moth, and martian. Adding more granularity allows
for chefs to find exactly what they're looking a lot faster.

- Formatting

## Changelog

:cl: Melbert
qol: "Egg" foodtype now exists for better food sorting, though no
species in particular likes or dislikes it at the moment.
qol: Food crafting recipes now have three sub categories - Cuisine type,
Dish type, and Meal type. You can now filter between "Moth Pizzas" or
"Lizard Soups" rather than needing to guess if the recipe is in "Pizza"
or "Mothic".
spellcheck: de-capitalized several foods
/:cl:
@Bruh-24

Bruh-24 commented Apr 4, 2026

Copy link
Copy Markdown
Contributor

good to go?

@Bruh-24 Bruh-24 merged commit 17b5a2a into Alliance-codeBase:master Apr 6, 2026
18 of 42 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.