diff --git a/content/articles/playground-p3/playground-p3.pagex.js b/content/articles/playground-p3/playground-p3.pagex.js index adcef39..386f4de 100644 --- a/content/articles/playground-p3/playground-p3.pagex.js +++ b/content/articles/playground-p3/playground-p3.pagex.js @@ -64,7 +64,6 @@ export default { }, authors: [testauthorPagex], collections: [ - videogamesCollection.id, testCollection.id, featuredCollection.id ] diff --git a/content/articles/playground-totk/playground-totk.pagex.js b/content/articles/playground-totk/playground-totk.pagex.js index e96a209..e02e37d 100644 --- a/content/articles/playground-totk/playground-totk.pagex.js +++ b/content/articles/playground-totk/playground-totk.pagex.js @@ -54,7 +54,6 @@ export default { }, authors: [testauthorPagex], collections: [ - videogamesCollection.id, testCollection.id, featuredCollection.id ] diff --git a/content/articles/playground/content.md b/content/articles/playground/content.md index d54c45e..53a1de1 100644 --- a/content/articles/playground/content.md +++ b/content/articles/playground/content.md @@ -22,6 +22,8 @@ Voidcannon supports ||spoiler|| syntax to hide text until the user manually reve ||Spoilers will cover everything within them (i.e :p3smile:) but will not visually adapt their height to them (due to the way they're made).|| +||Spoilers can also handle wrapping content
which is pretty nifty|| + ```md Voidcannon supports ||spoiler|| syntax to hide text until the user manually reveals it. ``` diff --git a/content/articles/playground/playground.pagex.js b/content/articles/playground/playground.pagex.js index de7349c..1ebabed 100644 --- a/content/articles/playground/playground.pagex.js +++ b/content/articles/playground/playground.pagex.js @@ -64,7 +64,7 @@ export default { }, color: "#D02843" }, - authors: [bignutty, testauthorPagex, placeholder], + authors: [placeholder, testauthorPagex, placeholder], collections: [ testCollection.id, featuredCollection.id diff --git a/content/articles/resident-evil-requiem/assets/_source/carousel-environments/hallway.png b/content/articles/resident-evil-requiem/assets/_source/carousel-environments/hallway.png new file mode 100644 index 0000000..3318360 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/_source/carousel-environments/hallway.png differ diff --git a/content/articles/resident-evil-requiem/assets/_source/carousel-environments/horse.png b/content/articles/resident-evil-requiem/assets/_source/carousel-environments/horse.png new file mode 100644 index 0000000..b76a35b Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/_source/carousel-environments/horse.png differ diff --git a/content/articles/resident-evil-requiem/assets/_source/carousel-environments/hotel.png b/content/articles/resident-evil-requiem/assets/_source/carousel-environments/hotel.png new file mode 100644 index 0000000..e63ccd8 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/_source/carousel-environments/hotel.png differ diff --git a/content/articles/resident-evil-requiem/assets/_source/carousel-environments/isolationward.png b/content/articles/resident-evil-requiem/assets/_source/carousel-environments/isolationward.png new file mode 100644 index 0000000..eb3db07 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/_source/carousel-environments/isolationward.png differ diff --git a/content/articles/resident-evil-requiem/assets/_source/carousel-environments/raccooncity.png b/content/articles/resident-evil-requiem/assets/_source/carousel-environments/raccooncity.png new file mode 100644 index 0000000..0a54d28 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/_source/carousel-environments/raccooncity.png differ diff --git a/content/articles/resident-evil-requiem/assets/_source/carousel-environments/rcwall.png b/content/articles/resident-evil-requiem/assets/_source/carousel-environments/rcwall.png new file mode 100644 index 0000000..6dc9779 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/_source/carousel-environments/rcwall.png differ diff --git a/content/articles/resident-evil-requiem/assets/_source/carousel/img0.png b/content/articles/resident-evil-requiem/assets/_source/carousel/img0.png new file mode 100644 index 0000000..c167163 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/_source/carousel/img0.png differ diff --git a/content/articles/resident-evil-requiem/assets/_source/carousel/img1.png b/content/articles/resident-evil-requiem/assets/_source/carousel/img1.png new file mode 100644 index 0000000..6a6af7f Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/_source/carousel/img1.png differ diff --git a/content/articles/resident-evil-requiem/assets/_source/carousel/img2.png b/content/articles/resident-evil-requiem/assets/_source/carousel/img2.png new file mode 100644 index 0000000..3d5e921 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/_source/carousel/img2.png differ diff --git a/content/articles/resident-evil-requiem/assets/_source/carousel/img3.png b/content/articles/resident-evil-requiem/assets/_source/carousel/img3.png new file mode 100644 index 0000000..c38dc71 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/_source/carousel/img3.png differ diff --git a/content/articles/resident-evil-requiem/assets/_source/grace_intro.png b/content/articles/resident-evil-requiem/assets/_source/grace_intro.png new file mode 100644 index 0000000..c34d7b2 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/_source/grace_intro.png differ diff --git a/content/articles/resident-evil-requiem/assets/_source/grace_inventory.png b/content/articles/resident-evil-requiem/assets/_source/grace_inventory.png new file mode 100644 index 0000000..fd491e1 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/_source/grace_inventory.png differ diff --git a/content/articles/resident-evil-requiem/assets/_source/header/background_re9.png b/content/articles/resident-evil-requiem/assets/_source/header/background_re9.png new file mode 100644 index 0000000..3bbce47 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/_source/header/background_re9.png differ diff --git a/content/articles/resident-evil-requiem/assets/_source/header/immersive_full_re9.png b/content/articles/resident-evil-requiem/assets/_source/header/immersive_full_re9.png new file mode 100644 index 0000000..dec8ff7 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/_source/header/immersive_full_re9.png differ diff --git a/content/articles/resident-evil-requiem/assets/_source/header/immersive_inner_re9.png b/content/articles/resident-evil-requiem/assets/_source/header/immersive_inner_re9.png new file mode 100644 index 0000000..23e6721 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/_source/header/immersive_inner_re9.png differ diff --git a/content/articles/resident-evil-requiem/assets/_source/header/immersive_outer_re9.png b/content/articles/resident-evil-requiem/assets/_source/header/immersive_outer_re9.png new file mode 100644 index 0000000..bb449a0 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/_source/header/immersive_outer_re9.png differ diff --git a/content/articles/resident-evil-requiem/assets/_source/header/logo_re9.png b/content/articles/resident-evil-requiem/assets/_source/header/logo_re9.png new file mode 100644 index 0000000..4b335b5 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/_source/header/logo_re9.png differ diff --git a/content/articles/resident-evil-requiem/assets/_source/leon_inventory.png b/content/articles/resident-evil-requiem/assets/_source/leon_inventory.png new file mode 100644 index 0000000..a17b923 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/_source/leon_inventory.png differ diff --git a/content/articles/resident-evil-requiem/assets/_source/leon_motorcycle.png b/content/articles/resident-evil-requiem/assets/_source/leon_motorcycle.png new file mode 100644 index 0000000..a12dce6 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/_source/leon_motorcycle.png differ diff --git a/content/articles/resident-evil-requiem/assets/_source/leon_rpd.png b/content/articles/resident-evil-requiem/assets/_source/leon_rpd.png new file mode 100644 index 0000000..e7087d1 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/_source/leon_rpd.png differ diff --git a/content/articles/resident-evil-requiem/assets/_source/plot_gideon.png b/content/articles/resident-evil-requiem/assets/_source/plot_gideon.png new file mode 100644 index 0000000..1369236 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/_source/plot_gideon.png differ diff --git a/content/articles/resident-evil-requiem/assets/_source/plot_zesker.png b/content/articles/resident-evil-requiem/assets/_source/plot_zesker.png new file mode 100644 index 0000000..a17c181 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/_source/plot_zesker.png differ diff --git a/content/articles/resident-evil-requiem/assets/_source/spider.png b/content/articles/resident-evil-requiem/assets/_source/spider.png new file mode 100644 index 0000000..d8b7db6 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/_source/spider.png differ diff --git a/content/articles/resident-evil-requiem/assets/carousel-environments/hallway.webp b/content/articles/resident-evil-requiem/assets/carousel-environments/hallway.webp new file mode 100644 index 0000000..acadb33 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/carousel-environments/hallway.webp differ diff --git a/content/articles/resident-evil-requiem/assets/carousel-environments/horse.webp b/content/articles/resident-evil-requiem/assets/carousel-environments/horse.webp new file mode 100644 index 0000000..3e91b9e Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/carousel-environments/horse.webp differ diff --git a/content/articles/resident-evil-requiem/assets/carousel-environments/hotel.webp b/content/articles/resident-evil-requiem/assets/carousel-environments/hotel.webp new file mode 100644 index 0000000..4d4ff54 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/carousel-environments/hotel.webp differ diff --git a/content/articles/resident-evil-requiem/assets/carousel-environments/isolationward.webp b/content/articles/resident-evil-requiem/assets/carousel-environments/isolationward.webp new file mode 100644 index 0000000..5fb0fbc Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/carousel-environments/isolationward.webp differ diff --git a/content/articles/resident-evil-requiem/assets/carousel-environments/raccooncity.webp b/content/articles/resident-evil-requiem/assets/carousel-environments/raccooncity.webp new file mode 100644 index 0000000..7dc107d Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/carousel-environments/raccooncity.webp differ diff --git a/content/articles/resident-evil-requiem/assets/carousel-environments/rcwall.webp b/content/articles/resident-evil-requiem/assets/carousel-environments/rcwall.webp new file mode 100644 index 0000000..52c76d7 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/carousel-environments/rcwall.webp differ diff --git a/content/articles/resident-evil-requiem/assets/carousel/img0.webp b/content/articles/resident-evil-requiem/assets/carousel/img0.webp new file mode 100644 index 0000000..9b6b50a Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/carousel/img0.webp differ diff --git a/content/articles/resident-evil-requiem/assets/carousel/img1.webp b/content/articles/resident-evil-requiem/assets/carousel/img1.webp new file mode 100644 index 0000000..7235d2c Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/carousel/img1.webp differ diff --git a/content/articles/resident-evil-requiem/assets/carousel/img2.webp b/content/articles/resident-evil-requiem/assets/carousel/img2.webp new file mode 100644 index 0000000..bc9dab2 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/carousel/img2.webp differ diff --git a/content/articles/resident-evil-requiem/assets/carousel/img3.webp b/content/articles/resident-evil-requiem/assets/carousel/img3.webp new file mode 100644 index 0000000..d06c13f Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/carousel/img3.webp differ diff --git a/content/articles/resident-evil-requiem/assets/grace_intro.webp b/content/articles/resident-evil-requiem/assets/grace_intro.webp new file mode 100644 index 0000000..7ab508c Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/grace_intro.webp differ diff --git a/content/articles/resident-evil-requiem/assets/grace_inventory.webp b/content/articles/resident-evil-requiem/assets/grace_inventory.webp new file mode 100644 index 0000000..2af8d94 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/grace_inventory.webp differ diff --git a/content/articles/resident-evil-requiem/assets/header/background_re9.webp b/content/articles/resident-evil-requiem/assets/header/background_re9.webp new file mode 100644 index 0000000..82e5b2a Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/header/background_re9.webp differ diff --git a/content/articles/resident-evil-requiem/assets/header/immersive_full_re9.webp b/content/articles/resident-evil-requiem/assets/header/immersive_full_re9.webp new file mode 100644 index 0000000..8ded73a Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/header/immersive_full_re9.webp differ diff --git a/content/articles/resident-evil-requiem/assets/header/immersive_inner_re9.webp b/content/articles/resident-evil-requiem/assets/header/immersive_inner_re9.webp new file mode 100644 index 0000000..dd1ca19 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/header/immersive_inner_re9.webp differ diff --git a/content/articles/resident-evil-requiem/assets/header/immersive_outer_re9.webp b/content/articles/resident-evil-requiem/assets/header/immersive_outer_re9.webp new file mode 100644 index 0000000..69dedcb Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/header/immersive_outer_re9.webp differ diff --git a/content/articles/resident-evil-requiem/assets/header/logo_re9.webp b/content/articles/resident-evil-requiem/assets/header/logo_re9.webp new file mode 100644 index 0000000..4fe00e0 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/header/logo_re9.webp differ diff --git a/content/articles/resident-evil-requiem/assets/leon_inventory.webp b/content/articles/resident-evil-requiem/assets/leon_inventory.webp new file mode 100644 index 0000000..44a78fa Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/leon_inventory.webp differ diff --git a/content/articles/resident-evil-requiem/assets/leon_motorcycle.webp b/content/articles/resident-evil-requiem/assets/leon_motorcycle.webp new file mode 100644 index 0000000..2e8ac86 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/leon_motorcycle.webp differ diff --git a/content/articles/resident-evil-requiem/assets/leon_rpd.webp b/content/articles/resident-evil-requiem/assets/leon_rpd.webp new file mode 100644 index 0000000..781eede Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/leon_rpd.webp differ diff --git a/content/articles/resident-evil-requiem/assets/plot_gideon.webp b/content/articles/resident-evil-requiem/assets/plot_gideon.webp new file mode 100644 index 0000000..976fbc2 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/plot_gideon.webp differ diff --git a/content/articles/resident-evil-requiem/assets/plot_zesker.webp b/content/articles/resident-evil-requiem/assets/plot_zesker.webp new file mode 100644 index 0000000..d85d1b5 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/plot_zesker.webp differ diff --git a/content/articles/resident-evil-requiem/assets/spider.webp b/content/articles/resident-evil-requiem/assets/spider.webp new file mode 100644 index 0000000..5b853f2 Binary files /dev/null and b/content/articles/resident-evil-requiem/assets/spider.webp differ diff --git a/content/articles/resident-evil-requiem/content.md b/content/articles/resident-evil-requiem/content.md new file mode 100644 index 0000000..9e516c7 --- /dev/null +++ b/content/articles/resident-evil-requiem/content.md @@ -0,0 +1,285 @@ + + preview + Later parts of this post will contain spoilers for the story, ending, and specific gameplay sections. + + +## Starting with what's best + +The game looks gorgeous and runs flawlessly. Even on my hardware. + + + + +![Invested all his Resident Evil 4 wealth into a custom Porsche](assets/carousel/img0.webp) + + + + + +![Evil and intimidating horse](assets/carousel/img1.webp) + + + + + +![Evil and intimidating curtain](assets/carousel/img2.webp) + + + + + +![Sleepover](assets/carousel/img3.webp) + + + + +My graphics card (Radeon RX 5500 XT) is the lowest one listed under the "minimum requirements," I'm running on 8 GB of +RAM, and my CPU is probably below what they recommend. The game still looks great, even on low (not lowest!) settings. + +Admittedly, frame generation was necessary to keep the game at or above 60 FPS throughout the entire experience. This +resulted in occasional Vsync issues, but it didn't degrade the experience for me. The RE Engine continues to be the +prime example of what a modern game engine *can* be if developers actually care. The game does a great job of utilizing +its lighting to draw attention to what matters, or simply to create mesmerizing set pieces. + +The attention to detail and care really shines throughout the various environments you visit. Each and every material +looks real, every area has small props lying around, but never to the point where it feels artificial. Something new in +this game are the dynamic blood splatter decals that can get applied to the environment after an encounter. Some of +these even manage to stick around for quite some time, which is nice when you play larger sections in one sitting. + + + + +![Hospital Hallway](assets/carousel-environments/hallway.webp) + + + + +![The evil and intimidating horse.](assets/carousel-environments/horse.webp) + + + + +![Five star hotel room](assets/carousel-environments/hotel.webp) + + + + +![I didn't want to go in there](assets/carousel-environments/isolationward.webp) + + + + +![Beige buildings](assets/carousel-environments/raccooncity.webp) + + + + +![Beige buildings and the sun](assets/carousel-environments/rcwall.webp) + + + + +My only critique regarding visuals would be that the Raccoon City half of the game could use a little more color. It +gets a bit repetitive to spend four hours running through gray and beige buildings. + +## Grace gets real + +I believe that Grace feels unlike any other character I've played in a Resident Evil game before. She reacts the way +you'd expect someone to react given the situation. She's not combat-trained; she's an office worker thrown into the most +horrifying scenario imaginable. The previous two games, Resident Evil 7 and Resident Evil Village, were held back in +their horror by having a walking quip machine, Ethan Winters, who could not be fazed by anything. That man could lose +every last limb on his body and still have a "Fuck you" left for whoever was responsible. + +![Grace isn't looking too good](./assets/grace_intro.webp) + +This is also reflected in her gameplay sections; the area design and item placements are meant to keep the tension high +while offering stealth as a preferred option. This does work for the opening hours of the game, but by the end of her +hospital section, I had around 40 spare bullets and more health items than I could count, despite killing every enemy +in my way. + +![Inventory at the end of the game](./assets/grace_inventory.webp) + +One unfortunate aspect of Grace's campaign is the complete lack of boss fights. Her gameplay includes one section that +could be considered a boss encounter, except you don't actually fight anything (more on that later). I suppose the +intention was to keep her underpowered throughout the entire experience, but I still would have preferred having to +actually fight back for once. + +## Leon gets unreal + +Leon's gameplay is essentially the Resident Evil 4 remake on crack. + +I actually ended up having the complete opposite problem to Grace's campaign by the end: I had an inventory full of +crafting supplies, while health remained a scarce resource. A look at my inventory right before heading to the final +boss pretty much says everything (click to reveal): + +||![Leon's inventory management skills](assets/leon_inventory.webp)|| + +Even though the available selection of guns is almost identical to the Resident Evil 4 remake, I found that the enemy +variety made the pistol and rifle the right answers most of the time. I rarely used grenades, as the environments seldom +presented good opportunities for them. The few sections that did ended up so hectic that I'd grab my trusty shotgun +instead of trying to line everyone up for a grenade strike. + +I was also pretty consistently low on credits for the supply crate, despite my continued strategy of killing anything +that moves. It is a little unfortunate that, at least during the campaign, you only get access to one alternative +pistol. + +## All together now! + +I had a great time with the dual-protagonist campaign. Especially in the first large section of the game, being able to +experience the same area from two play styles is a lot of fun. + +I do wish they had balanced the lengths of each section better. The "meat" of the game is one large section where you +play as Grace for two to three hours, and another where you play as Leon for three to four hours. At the beginning and +end of these, the game quickly cuts between the two perspectives to show you what was happening "in the meantime" or +somewhere else. + +This works from a storytelling perspective, but it results in neither gameplay style really being able to shine outside +its "dedicated" large section. Some of the changes last for maybe 10 minutes before switching back to the character +you were playing as previously. I'd love to see more of this style of gameplay in the future, though (maybe even a +proper Resident Evil 6 reimagining that combines the best parts into one cohesive campaign). + + + preview + From here on out I'll focus on the story and specific sections of gameplay.
If you haven't played the game I'd recommend you stop reading. +
+ +## Game Design (0/3) + +One major gripe I have with the game is the overreliance on "do/get three things." + +During my playthrough, I can remember encountering all of these: + +- Collect three quartz blocks +- Obtain three security clearances +- Get three substances to analyze (Crafting Recipes) +- Find and open three safes +- Gather three spark plugs +- Turn on three generators +- Find three detonator parts +- Find and open ~~four~~ three containers (One was already open) + +No matter what our protagonist(s) have to do, it's three or nothing. There are a few exceptions where an item has two ( + +2) uses or you have to do two things, but most of your playtime is spent watching (0/3) turn into ~~(3/3)~~. + +Three is a nice middle ground between "this could have just been a linear section" and "this is too much, I'm getting +tired," but once everything relies on the rule of three, it starts to feel repetitive and artificial. + +In addition to everything requiring you to do three of something, the game also heavily suffers from "Resident Evil +logic", meaning the protagonists often act unreasonably given the situation. The most egregious example of this is the +third Puzzle Box, which is lacking its Sun, Moon, and Star icons. Every other puzzle box in the hospital, two of which +we have already encountered and solved, has Braille text above or on all the buttons. However, for Plot Reasons, we have +to go get Emily to decipher them. I don't have high demands for the logic behind puzzles, but they really could have +tried to find another reason to bring Emily here instead of making Grace inexplicably incapable of solving the puzzle +box through trial and error. + +One variant I was able to come up with would've been hiding the solution to the puzzle box in a longer piece of text in +Braille, perhaps even across several documents. That would still require Grace to go get help from Emily, after which +she obviously couldn't leave her alone in the now-open cell. + +## Linear excitement during the latter half + +This is an issue that all the recent Resident Evil titles have had: the game gets way more linear the further you +progress. + +They did a great job of balancing open-exploration sections and linear progression with short, fun sections to blow off +steam in between. + +![Unlike Metroid Prime, Resident Evil Requiem knows how to handle a motorcycle section.](assets/leon_motorcycle.webp) + +However, the RPD, and everything after it for that matter, marks a turning point. Playing these sections felt like the +game tried to show me a lot of cool things while also running out of time. + +![Welcome back](assets/leon_rpd.webp) + +The RPD itself consists of the following steps: + +1. Get to the Library to pick up a key item +2. Use the key item to open up a door +3. Watch a cutscene and play a short stealth section +4. Run away +5. Leave the RPD + +There are two additional things you can do: a short scavenger hunt and unlocking a briefcase. I believe the area has two +other enemies you can defeat for some credits. That's it. + +I love the idea of revisiting old locations like this, but it feels like a wasted opportunity to have you spend barely +20 minutes in the area, only to leave and fight two boss fights basically back-to-back. The fact that they brought back +Mr. X might at first seem like a really cool twist; that is, until you realize he's in the game for 10 minutes tops. 20 +if you spend more time looking around. It doesn't help that not even 20 minutes later, you immediately run into the next +boss encounter that feels like another "look who we brought back :pointpeak:" moment. I think there were a lot of cool +ideas that could have been executed by revisiting Raccoon City, but the way Requiem handles it feels like a wasted +opportunity. + +I suppose this is what I get for asking to have fewer "do three things" moments. 🥴 + +The sections post-RPD struggle the most with their pacing. I'm not sure if the game developers had a self-imposed time +limit for how long the game should play, or if they had too many last minute ideas. The final two to three hours of the +game boil down to you being rushed from set piece to set piece, with very little to no downtime. + +## Last but not least: The Plot + +The story is, again, typical for a Resident Evil game. It starts out with an intriguing premise, then completely loses +the plot in its final hours. + +![Victor Gideon introduces himself](assets/plot_gideon.webp) + +Victor Gideon makes for an interesting antagonist. He's seemingly spent years tracking Grace down, planning, and +researching the events that will transpire throughout the game. Unfortunately, Gideon just... doesn't do a lot +throughout the campaign. + +- He kidnaps Grace and subdues Leon, but doesn't do anything of note to either of them. +- He lets both of them escape from the hospital, only to conveniently pick Grace back up (I don't even want to get into + how weird the motivation for Grace post-hospital is). +- He's flown out to Raccoon City with The True Antagonist and Grace? +- ??? +- 🏍🏍🏍🏍 +- ??? +- Shows up to be the final boss +- Dies + +I can see a lot of potential given the character and setup, but the game seems content with keeping Gideon as a prop +that it can conveniently dispose of in the end. + +The same thing goes for The True Antagonist, Zalbert Zesker, who the game insists on calling Zeno or just Z. + +![Zalbert Zesker](assets/plot_zesker.webp) + +His entire role in the game is to be the one who supposedly funded this entire operation. He gets one evil monologue at +the end and then gets killed off. The plot would progress nearly identically to how it does in the final game if he +wasn't here or wasn't Wesker. Gideon, being an ex-Umbrella researcher, at least has some sort of character motivation to +continue his mission. + +The only aspect of the story I genuinely disliked was when Leon S. Kennedy starts shooting at human soldiers who storm +two rooms in a secret facility, only for them to never show up again. Especially when you consider that the second, +larger room can be taken out by releasing a Licker from its tube with a well-placed shot. The weirdest part was that +their presence in the game is once again no longer than 10 minutes at most. The only story reason I could come up with +is that they flew in with Gideon and Wesker on the helicopter, and that's why we only ever run into two teams? It makes +for an awkward moment in an otherwise great finale. + +All of this is not meant to imply that I disliked the story. I had a great time going in blind and experiencing the +narrative for the first time. This is meant to be taken as a "what could have been," not "look how they +butchered my boy." + +## Requiem. + +All in all, Resident Evil Requiem is an amazing game. The plot might have holes and the gameplay can feel a little samey +at times, but the overall experience was never boring. Quite the opposite, actually. I felt that throughout most of my +journey, the gameplay was packed so tightly that twenty minutes felt like an hour. Not because it dragged on for too +long, but because I couldn't wrap my mind around all the things happening back-to-back. + +I **really** hope that RE9 ends up getting a Mercenaries mode; the gameplay as Leon is more refined than ever before and +is +a joy to play. The few sections where they funnel zombies in and just let you do your thing with a giant stockpile of +ammunition or heavy weaponry are where the gameplay really shines. + +This game also had the objectively worst and most terrifying objective notification I have received in a long time. ( +Yes, I instinctively threw a grenade). + +> **Arachnophobia warning** for those who are sensitive to creepy crawlies. + +||![The Giant Enemy Spider](assets/spider.webp)|| + +I think Resident Evil Requiem is a must-play for all fans of horror and action. I'm really excited to discover what +places and characters CAPCOM will visit in the 10th entry to the series. Unless they somehow bring back Ethan Winters +for his third game, that is. \ No newline at end of file diff --git a/content/articles/resident-evil-requiem/resident-evil-requiem.pagex.js b/content/articles/resident-evil-requiem/resident-evil-requiem.pagex.js new file mode 100644 index 0000000..e3ac5a2 --- /dev/null +++ b/content/articles/resident-evil-requiem/resident-evil-requiem.pagex.js @@ -0,0 +1,67 @@ +import { + VoidcannonHeaderLayoutType, + VoidcannonHeaderType, + VoidcannonContentType +} from "voidcannon"; + +import bignuttyPagex from "../../authors/bignutty.pagex.js"; + +import videogamesCollection from "../../collections/videogames.pagex.js"; + +import {PagexResourceTransformer} from "pagex"; +import {ThemeVariants} from "pagex_commons"; + +export default { + type: VoidcannonContentType.ARTICLE, + content: { + _transform: PagexResourceTransformer.MARKDOWN, + path: "./content.md" + }, + id: "resident-evil-requiem", + title: "Thoughts on Resident Evil Requiem", + abstract: "My favourite horror game of 2026. I didn't think they could come up with something worse than the fetus from Village.", + author_abstract: "Professional scaredy cat", + created_at: 1773102988178, + theme: { + partial: true, + colors: { + light: "#a30e0e", + dark: "#a30e0e", + }, + variant: ThemeVariants.VIBRANT, + }, + header: { + type: VoidcannonHeaderType.IMMERSIVE, + layout: VoidcannonHeaderLayoutType.LOGO_LEFT, + position: "0% 100%", + base: { + _transform: PagexResourceTransformer.MEDIA, + path: "./assets/header/background_re9.webp" + }, + logo: { + _transform: PagexResourceTransformer.MEDIA, + path: "./assets/header/logo_re9.webp" + }, + immersive_content: { + right: { + outer: { + _transform: PagexResourceTransformer.MEDIA, + path: "./assets/header/immersive_outer_re9.webp" + }, + inner: { + _transform: PagexResourceTransformer.MEDIA, + path: "./assets/header/immersive_inner_re9.webp" + }, + base: { + _transform: PagexResourceTransformer.MEDIA, + path: "./assets/header/immersive_full_re9.webp" + } + } + }, + color: "#a30e0e" + }, + authors: [bignuttyPagex], + collections: [ + videogamesCollection.id, + ] +} \ No newline at end of file diff --git a/content/collections/videogames.pagex.js b/content/collections/videogames.pagex.js index c35ce22..82949ab 100644 --- a/content/collections/videogames.pagex.js +++ b/content/collections/videogames.pagex.js @@ -4,7 +4,7 @@ export default { type: VoidcannonContentType.COLLECTION, id: "videogames", name: "Video Games", - description: "Video Game Articles", + description: "I like playing video games. I also care a lot about game design and like sharing my thoughts about games that I've played.", color: VoidcannonCollectionColor.RED_VIBRANT, icon: { type: VoidcannonCollectionIconType.ICON, diff --git a/package-lock.json b/package-lock.json index f1b5bad..419919b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,20 +32,20 @@ "license": "MIT" }, "node_modules/@emnapi/core": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", - "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.0.tgz", + "integrity": "sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==", "license": "MIT", "optional": true, "dependencies": { - "@emnapi/wasi-threads": "1.1.0", + "@emnapi/wasi-threads": "1.2.0", "tslib": "^2.4.0" } }, "node_modules/@emnapi/runtime": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", - "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.0.tgz", + "integrity": "sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==", "license": "MIT", "optional": true, "dependencies": { @@ -53,9 +53,9 @@ } }, "node_modules/@emnapi/wasi-threads": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", - "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.0.tgz", + "integrity": "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==", "license": "MIT", "optional": true, "dependencies": { @@ -241,27 +241,6 @@ "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", "license": "MIT" }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "license": "MIT", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz", - "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==", - "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" - } - }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -467,28 +446,6 @@ "@lit/reactive-element": "^2.0.2" } }, - "node_modules/@lit-labs/ssr": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@lit-labs/ssr/-/ssr-3.3.1.tgz", - "integrity": "sha512-JlF1PempxvzrGEpRFrF+Ki0MHzR3HA51SK8Zv0cFpW9p0bPW4k0FeCwrElCu371UEpXF7RcaE2wgYaE1az0XKg==", - "license": "BSD-3-Clause", - "dependencies": { - "@lit-labs/ssr-client": "^1.1.7", - "@lit-labs/ssr-dom-shim": "^1.3.0", - "@lit/reactive-element": "^2.0.4", - "@parse5/tools": "^0.3.0", - "@types/node": "^16.0.0", - "enhanced-resolve": "^5.10.0", - "lit": "^3.1.2", - "lit-element": "^4.0.4", - "lit-html": "^3.1.2", - "node-fetch": "^3.2.8", - "parse5": "^7.1.1" - }, - "engines": { - "node": ">=13.9.0" - } - }, "node_modules/@lit-labs/ssr-client": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/@lit-labs/ssr-client/-/ssr-client-1.1.8.tgz", @@ -501,9 +458,9 @@ } }, "node_modules/@lit-labs/ssr-dom-shim": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.4.0.tgz", - "integrity": "sha512-ficsEARKnmmW5njugNYKipTm4SFnbik7CXtoencDZzmzo/dQ+2Q0bgkzJuoJP20Aj0F+izzJjOqsnkd6F/o1bw==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.5.1.tgz", + "integrity": "sha512-Aou5UdlSpr5whQe8AA/bZG0jMj96CoJIWbGfZ91qieWu5AWUMKw8VR/pAkQkJYvBNhmCcWnZlyyk5oze8JIqYA==", "license": "BSD-3-Clause" }, "node_modules/@lit/reactive-element": { @@ -661,12 +618,12 @@ "license": "MIT" }, "node_modules/@rsbuild/core": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@rsbuild/core/-/core-1.7.2.tgz", - "integrity": "sha512-VAFO6cM+cyg2ntxNW6g3tB2Jc5J5mpLjLluvm7VtW2uceNzyUlVv41o66Yp1t1ikxd3ljtqegViXem62JqzveA==", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@rsbuild/core/-/core-1.7.3.tgz", + "integrity": "sha512-kI1oQvCXbQYxUvQPnDLdjSX4gFsbrFNpuUj6jXEJ7IcJ74Q+n4oeFj74/8tKerhxhe0L90m/ZQfzLeN5ORGA9w==", "license": "MIT", "dependencies": { - "@rspack/core": "~1.7.1", + "@rspack/core": "~1.7.5", "@rspack/lite-tapable": "~1.1.0", "@swc/helpers": "^0.5.18", "core-js": "~3.47.0", @@ -680,27 +637,27 @@ } }, "node_modules/@rspack/binding": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.7.3.tgz", - "integrity": "sha512-N943pbPktJPymiYZWZMZMVX/PeSU42cWGpBly82N+ibNCX/Oo4yKWE0v+TyIJm5JaUFhtF2NpvzRbrjg/6skqw==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.7.8.tgz", + "integrity": "sha512-P4fbrQx5hRhAiC8TBTEMCTnNawrIzJLjWwAgrTwRxjgenpjNvimEkQBtSGrXOY+c+MV5Q74P+9wPvVWLKzRkQQ==", "license": "MIT", "optionalDependencies": { - "@rspack/binding-darwin-arm64": "1.7.3", - "@rspack/binding-darwin-x64": "1.7.3", - "@rspack/binding-linux-arm64-gnu": "1.7.3", - "@rspack/binding-linux-arm64-musl": "1.7.3", - "@rspack/binding-linux-x64-gnu": "1.7.3", - "@rspack/binding-linux-x64-musl": "1.7.3", - "@rspack/binding-wasm32-wasi": "1.7.3", - "@rspack/binding-win32-arm64-msvc": "1.7.3", - "@rspack/binding-win32-ia32-msvc": "1.7.3", - "@rspack/binding-win32-x64-msvc": "1.7.3" + "@rspack/binding-darwin-arm64": "1.7.8", + "@rspack/binding-darwin-x64": "1.7.8", + "@rspack/binding-linux-arm64-gnu": "1.7.8", + "@rspack/binding-linux-arm64-musl": "1.7.8", + "@rspack/binding-linux-x64-gnu": "1.7.8", + "@rspack/binding-linux-x64-musl": "1.7.8", + "@rspack/binding-wasm32-wasi": "1.7.8", + "@rspack/binding-win32-arm64-msvc": "1.7.8", + "@rspack/binding-win32-ia32-msvc": "1.7.8", + "@rspack/binding-win32-x64-msvc": "1.7.8" } }, "node_modules/@rspack/binding-darwin-arm64": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.7.3.tgz", - "integrity": "sha512-sXha3xG2KDkXLVjrmnw5kGhBriH2gFd9KAyD2ZBq0sH/gNIvqEaWhAFoO1YtrKU6rCgiSBrs0frfGc6DEqWfTA==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.7.8.tgz", + "integrity": "sha512-KS6SRc+4VYRdX1cKr1j1HEuMNyEzt7onBS0rkenaiCRRYF0z4WNZNyZqRiuxgM3qZ3TISF7gdmgJQyd4ZB43ig==", "cpu": [ "arm64" ], @@ -711,9 +668,9 @@ ] }, "node_modules/@rspack/binding-darwin-x64": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.7.3.tgz", - "integrity": "sha512-AUWMBgaPo7NgpW7arlw9laj9ZQxg7EjC5pnSCRH4BVPV+8egdoPCn5DZk05M25m73crKnGl8c7CrwTRNZeaPrw==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.7.8.tgz", + "integrity": "sha512-uyXSDKLg2CtqIJrsJDlCqQH80YIPsCUiTToJ59cXAG3v4eke0Qbiv6d/+pV0h/mc0u4inAaSkr5dD18zkMIghw==", "cpu": [ "x64" ], @@ -724,9 +681,9 @@ ] }, "node_modules/@rspack/binding-linux-arm64-gnu": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.7.3.tgz", - "integrity": "sha512-SodEX3+1/GLz0LobX9cY1QdjJ1NftSEh4C2vGpr71iA3MS9HyXuw4giqSeRQ4DpCybqpdS/3RLjVqFQEfGpcnw==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.7.8.tgz", + "integrity": "sha512-dD6gSHA18Uj0eqc1FCwwQ5IO5mIckrpYN4H4kPk9Pjau+1mxWvC4y5Lryz1Z8P/Rh1lnQ/wwGE0XL9nd80+LqQ==", "cpu": [ "arm64" ], @@ -737,9 +694,9 @@ ] }, "node_modules/@rspack/binding-linux-arm64-musl": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.7.3.tgz", - "integrity": "sha512-ydD2fNdEy+G7EYJ/a3FfdFZPfrLj/UnZocCNlZTTSHEhu+jURdQk0hwV11CvL+sjnKU5e/8IVMGUzhu3Gu8Ghg==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.7.8.tgz", + "integrity": "sha512-m+uBi9mEVGkZ02PPOAYN2BSmmvc00XGa6v9CjV8qLpolpUXQIMzDNG+i1fD5SHp8LO+XWsZJOHypMsT0MzGTGw==", "cpu": [ "arm64" ], @@ -750,9 +707,9 @@ ] }, "node_modules/@rspack/binding-linux-x64-gnu": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.7.3.tgz", - "integrity": "sha512-adnDbUqafSAI6/N6vZ+iONSo1W3yUpnNtJqP3rVp7+YdABhUpbOhtaY37qpIJ3uFajXctYFyISPrb4MWl1M9Yg==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.7.8.tgz", + "integrity": "sha512-IAPp2L3yS33MAEkcGn/I1gO+a+WExJHXz2ZlRlL2oFCUGpYi2ZQHyAcJ3o2tJqkXmdqsTiN+OjEVMd/RcLa24g==", "cpu": [ "x64" ], @@ -763,9 +720,9 @@ ] }, "node_modules/@rspack/binding-linux-x64-musl": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.7.3.tgz", - "integrity": "sha512-5jnjdODk5HCUFPN6rTaFukynDU4Fn9eCL+4TSp6mqo6YAnfnJEuzDjfetA8t3aQFcAs7WriQfNwvdcA4HvYtbA==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.7.8.tgz", + "integrity": "sha512-do/QNzb4GWdXCsipblDcroqRDR3BFcbyzpZpAw/3j9ajvEqsOKpdHZpILT2NZX/VahhjqfqB3k0kJVt3uK7UYQ==", "cpu": [ "x64" ], @@ -776,9 +733,9 @@ ] }, "node_modules/@rspack/binding-wasm32-wasi": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.7.3.tgz", - "integrity": "sha512-WLQK0ksUzMkVeGoHAMIxenmeEU5tMvFDK36Aip7VRj7T6vZTcAwvbMwc38QrIAvlG7dqWoxgPQi35ba1igNNDw==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.7.8.tgz", + "integrity": "sha512-mHtgYTpdhx01i0XNKFYBZyCjtv9YUe/sDfpD1QK4FytPFB+1VpYnmZiaJIMM77VpNsjxGAqWhmUYxi2P6jWifw==", "cpu": [ "wasm32" ], @@ -789,9 +746,9 @@ } }, "node_modules/@rspack/binding-win32-arm64-msvc": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.7.3.tgz", - "integrity": "sha512-RAetPeY45g2NW6fID46VTV7mwY4Lqyw/flLbvCG28yrVOSkekw1KMCr1k335O3VNeqD+5dZDi1n+mwiAx/KMmA==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.7.8.tgz", + "integrity": "sha512-Mkxg86F7kIT4pM9XvE/1LAGjK5NOQi/GJxKyyiKbUAeKM8XBUizVeNuvKR0avf2V5IDAIRXiH1SX8SpujMJteA==", "cpu": [ "arm64" ], @@ -802,9 +759,9 @@ ] }, "node_modules/@rspack/binding-win32-ia32-msvc": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.7.3.tgz", - "integrity": "sha512-X3c1B609DxzW++FdWf7kkoXWwsC/DUEJ1N1qots4T0P2G2V+pDQfjdTRSC0YQ75toAvwZqpwGzToQJ9IwQ4Ayw==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.7.8.tgz", + "integrity": "sha512-VmTOZ/X7M85lKFNwb2qJpCRzr4SgO42vucq/X7Uz1oSoTPAf8UUMNdi7BPnu+D4lgy6l8PwV804ZyHO3gGsvPA==", "cpu": [ "ia32" ], @@ -815,9 +772,9 @@ ] }, "node_modules/@rspack/binding-win32-x64-msvc": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.7.3.tgz", - "integrity": "sha512-f6AvZbJGIg+7NggHXv0+lyMzvIUfeCxcB5DNbo3H5AalIgwkoFpcBXLBqgMVIbqA0yNyP06eiK98rpzc9ulQQg==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.7.8.tgz", + "integrity": "sha512-BK0I4HAwp/yQLnmdJpUtGHcht3x11e9fZwyaiMzznznFc+Oypbf+FS5h+aBgpb53QnNkPpdG7MfAPoKItOcU8A==", "cpu": [ "x64" ], @@ -828,13 +785,13 @@ ] }, "node_modules/@rspack/core": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.7.3.tgz", - "integrity": "sha512-GUiTRTz6+gbfM2g3ixXqrvPSeHmyAFu/qHEZZjbYFeDtZhpy1gVaVAHiZfaaIIm+vRlNi7JmULWFZQFKwpQB9Q==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.7.8.tgz", + "integrity": "sha512-kT6yYo8xjKoDfM7iB8N9AmN9DJIlrs7UmQDbpTu1N4zaZocN1/t2fIAWOKjr5+3eJlZQR2twKZhDVHNLbLPjOw==", "license": "MIT", "dependencies": { "@module-federation/runtime-tools": "0.22.0", - "@rspack/binding": "1.7.3", + "@rspack/binding": "1.7.8", "@rspack/lite-tapable": "1.1.0" }, "engines": { @@ -933,9 +890,9 @@ "license": "MIT" }, "node_modules/@swc/helpers": { - "version": "0.5.18", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.18.tgz", - "integrity": "sha512-TXTnIcNJQEKwThMMqBXsZ4VGAza6bvN4pa41Rkqoio6QBKMvo+5lexeTMScGCIxtzgQJzElcvIltani+adC5PQ==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.19.tgz", + "integrity": "sha512-QamiFeIK3txNjgUTNppE6MiG3p7TdninpZu0E0PbqVh1a9FNLT2FRhisaa4NcaX52XVhA5l7Pk58Ft7Sqi/2sA==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.8.0" @@ -988,9 +945,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "16.18.126", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.126.tgz", - "integrity": "sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw==", + "version": "16.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", + "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==", "license": "MIT" }, "node_modules/@types/trusted-types": { @@ -1012,9 +969,9 @@ "license": "ISC" }, "node_modules/@vibrant/color": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@vibrant/color/-/color-4.0.0.tgz", - "integrity": "sha512-S9ItdqS1135wTXoIIqAJu8df9dqlOo6Boc5Y4MGsBTu9UmUOvOwfj5b4Ga6S5yrLAKmKYIactkz7zYJdMddkig==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@vibrant/color/-/color-4.0.4.tgz", + "integrity": "sha512-Fq2tAszz4QOPWfHZ+KuEAchXUD8i594BM2fOJt8dI/fvYbiVoBycBF/BlNH6F4IWBubxXoPqD4JmmAHvFYbNew==", "license": "MIT", "funding": { "type": "github", @@ -1022,16 +979,16 @@ } }, "node_modules/@vibrant/core": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@vibrant/core/-/core-4.0.0.tgz", - "integrity": "sha512-fqlVRUTDjEws9VNKvI3cDXM4wUT7fMFS+cVqEjJk3im+R5EvjJzPF6OAbNhfPzW04NvHNE555eY9FfhYuX3PRw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@vibrant/core/-/core-4.0.4.tgz", + "integrity": "sha512-yZ0XSpW2biKyaJPpBC31AVYgn7NseKSO2q3KNMmDrkL2qC6TEWsBMnSQ28n0m///chZELXpQLx1CCOsWg5pj8w==", "license": "MIT", "dependencies": { - "@vibrant/color": "^4.0.0", - "@vibrant/generator": "^4.0.0", - "@vibrant/image": "^4.0.0", - "@vibrant/quantizer": "^4.0.0", - "@vibrant/worker": "^4.0.0" + "@vibrant/color": "^4.0.4", + "@vibrant/generator": "^4.0.4", + "@vibrant/image": "^4.0.4", + "@vibrant/quantizer": "^4.0.4", + "@vibrant/worker": "^4.0.4" }, "funding": { "type": "github", @@ -1039,13 +996,13 @@ } }, "node_modules/@vibrant/generator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@vibrant/generator/-/generator-4.0.0.tgz", - "integrity": "sha512-CqKAjmgHVDXJVo3Q5+9pUJOvksR7cN3bzx/6MbURYh7lA4rhsIewkUK155M6q0vfcUN3ETi/eTneCi0tLuM2Sg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@vibrant/generator/-/generator-4.0.4.tgz", + "integrity": "sha512-rwq8PnlpKdch4YqaA1FAwdm71gKE2cMrUsbu72TqRFGa8rpP1roaZlQCVXIIwElXVc3r9axZyAcqyTLaMjhrTg==", "license": "MIT", "dependencies": { - "@vibrant/color": "^4.0.0", - "@vibrant/types": "^4.0.0" + "@vibrant/color": "^4.0.4", + "@vibrant/types": "^4.0.4" }, "funding": { "type": "github", @@ -1053,13 +1010,13 @@ } }, "node_modules/@vibrant/generator-default": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@vibrant/generator-default/-/generator-default-4.0.3.tgz", - "integrity": "sha512-HZlfp19sDokODEkZF4p70QceARHgjP3a1Dmxg+dlblYMJM98jPq+azA0fzqKNR7R17JJNHxexpJEepEsNlG0gw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@vibrant/generator-default/-/generator-default-4.0.4.tgz", + "integrity": "sha512-QeVDeH2dz9lityvJCb84Ml4hlBTElwCpU7SVpiDFBh6gPoCLnzcb1H9G4NgG3hOlAPyrBM+Ivq1Pg+1lZj5Ywg==", "license": "MIT", "dependencies": { - "@vibrant/color": "^4.0.0", - "@vibrant/generator": "^4.0.0" + "@vibrant/color": "^4.0.4", + "@vibrant/generator": "^4.0.4" }, "funding": { "type": "github", @@ -1067,12 +1024,12 @@ } }, "node_modules/@vibrant/image": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@vibrant/image/-/image-4.0.0.tgz", - "integrity": "sha512-Asv/7R/L701norosgvbjOVkodFiwcFihkXixA/gbAd6C+5GCts1Wm1NPk14FNKnM7eKkfAN+0wwPkdOH+PY/YA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@vibrant/image/-/image-4.0.4.tgz", + "integrity": "sha512-NBIJj7umfDRVpFjJHQo1AFSCWCzQyjfil+Yxu7W62PEL72GPCif0CDiglPkvVF8QhDLmnx/x1k3LIBb9jWF2sw==", "license": "MIT", "dependencies": { - "@vibrant/color": "^4.0.0" + "@vibrant/color": "^4.0.4" }, "funding": { "type": "github", @@ -1080,12 +1037,12 @@ } }, "node_modules/@vibrant/image-browser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@vibrant/image-browser/-/image-browser-4.0.0.tgz", - "integrity": "sha512-mXckzvJWiP575Y/wNtP87W/TPgyJoGlPBjW4E9YmNS6n4Jb6RqyHQA0ZVulqDslOxjSsihDzY7gpAORRclaoLg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@vibrant/image-browser/-/image-browser-4.0.4.tgz", + "integrity": "sha512-7qVyAm+z9t98iwMDzUgGCwgRg0KBB5RXQFgiO2Um5Izd1wO7BKC0SHVEz2k7sRx3XNfBf+JExp8quPrvSz17gg==", "license": "MIT", "dependencies": { - "@vibrant/image": "^4.0.0" + "@vibrant/image": "^4.0.4" }, "funding": { "type": "github", @@ -1093,15 +1050,15 @@ } }, "node_modules/@vibrant/image-node": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@vibrant/image-node/-/image-node-4.0.0.tgz", - "integrity": "sha512-m7yfnQtmo2y8z+tOjRFBx6q/qGnhl/ax2uCaj4TBkm4TtXfR4Dsn90wT6OWXmCFFzxIKHXKKEBShkxR+4RHseA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@vibrant/image-node/-/image-node-4.0.4.tgz", + "integrity": "sha512-aG8Ukt9oTa6FWaAV5oBKsBetkKASWH31hZiFJ2R1291f3TZlphUyQTJz5TubucIRsCEl4dgG1xyxFPgse2IABA==", "license": "MIT", "dependencies": { "@jimp/custom": "^0.22.12", "@jimp/plugin-resize": "^0.22.12", "@jimp/types": "^0.22.12", - "@vibrant/image": "^4.0.0" + "@vibrant/image": "^4.0.4" }, "funding": { "type": "github", @@ -1109,14 +1066,14 @@ } }, "node_modules/@vibrant/quantizer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@vibrant/quantizer/-/quantizer-4.0.0.tgz", - "integrity": "sha512-YDGxmCv/RvHFtZghDlVRwH5GMxdGGozWS1JpUOUt73/F5zAKGiiier8F31K1npIXARn6/Gspvg/Rbg7qqyEr2A==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@vibrant/quantizer/-/quantizer-4.0.4.tgz", + "integrity": "sha512-722CooC2W4mlBiv+zyAsIrIvARnMCN/P2Muo8bnWd0SQlVWFtQnFxJWGOUPOPS4DGe3pGoqmNfvS0let4dICZQ==", "license": "MIT", "dependencies": { - "@vibrant/color": "^4.0.0", - "@vibrant/image": "^4.0.0", - "@vibrant/types": "^4.0.0" + "@vibrant/color": "^4.0.4", + "@vibrant/image": "^4.0.4", + "@vibrant/types": "^4.0.4" }, "funding": { "type": "github", @@ -1124,14 +1081,14 @@ } }, "node_modules/@vibrant/quantizer-mmcq": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@vibrant/quantizer-mmcq/-/quantizer-mmcq-4.0.0.tgz", - "integrity": "sha512-TZqNiRoGGyCP8fH1XE6rvhFwLNv9D8MP1Xhz3K8tsuUweC6buWax3qLfrfEnkhtQnPJHaqvTfTOlIIXVMfRpow==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@vibrant/quantizer-mmcq/-/quantizer-mmcq-4.0.4.tgz", + "integrity": "sha512-/1CNnM96J8K+OBCWNUzywo6VdnmdFJyiKO+ty/nkfe8H0NseOEHIL7PrVtWGgtsb0rh2uTAq2rjXv65TfgPy8g==", "license": "MIT", "dependencies": { - "@vibrant/color": "^4.0.0", - "@vibrant/image": "^4.0.0", - "@vibrant/quantizer": "^4.0.0" + "@vibrant/color": "^4.0.4", + "@vibrant/image": "^4.0.4", + "@vibrant/quantizer": "^4.0.4" }, "funding": { "type": "github", @@ -1139,9 +1096,9 @@ } }, "node_modules/@vibrant/types": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@vibrant/types/-/types-4.0.0.tgz", - "integrity": "sha512-tA5TAbuROXcPkt+PWjmGfoaiEXyySVaNnCZovf6vXhCbMdrTTCQXvNCde2geiVl6YwtuU/Qrj9iZxS5jZ6yVIw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@vibrant/types/-/types-4.0.4.tgz", + "integrity": "sha512-Qq3mVTJamn7yD4OBgBEUKaxfDlm3sxBK55N7dH3XzI9Ey7KR00R06uwtqOcEJMsziWTEXdYN3VUlYaj2Tkt7hw==", "license": "MIT", "funding": { "type": "github", @@ -1149,12 +1106,12 @@ } }, "node_modules/@vibrant/worker": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@vibrant/worker/-/worker-4.0.0.tgz", - "integrity": "sha512-nSaZZwWQKOgN/nPYUAIRF0/uoa7KpK91A+gjLmZZDgfN1enqxaiihmn+75ayNadW0c6cxAEpEFEHTONR5u9tMw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@vibrant/worker/-/worker-4.0.4.tgz", + "integrity": "sha512-Q/R6PYhSMWCXEk/IcXbWIzIu7Z4b58ABkGvcdF8Y+q/7g+KnpxKW5x/jfQ/6ciyYSby13wZZoEdNr3QQVgsdBQ==", "license": "MIT", "dependencies": { - "@vibrant/types": "^4.0.0" + "@vibrant/types": "^4.0.4" }, "funding": { "type": "github", @@ -1285,6 +1242,15 @@ "fastq": "^1.17.1" } }, + "node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -1311,6 +1277,18 @@ "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==", "license": "MIT" }, + "node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -1820,9 +1798,9 @@ "license": "BSD-3-Clause" }, "node_modules/fastify": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.7.4.tgz", - "integrity": "sha512-e6l5NsRdaEP8rdD8VR0ErJASeyaRbzXYpmkrpr2SuvuMq6Si3lvsaVy5C+7gLanEkvjpMDzBXWE5HPeb/hgTxA==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.8.2.tgz", + "integrity": "sha512-lZmt3navvZG915IE+f7/TIVamxIwmBd+OMB+O9WBzcpIwOo6F0LTh0sluoMFk5VkrKTvvrwIaoJPkir4Z+jtAg==", "funding": [ { "type": "github", @@ -1844,7 +1822,7 @@ "fast-json-stringify": "^6.0.0", "find-my-way": "^9.0.0", "light-my-request": "^6.0.0", - "pino": "^10.1.0", + "pino": "^9.14.0 || ^10.1.0", "process-warning": "^5.0.0", "rfdc": "^1.3.1", "secure-json-parse": "^4.0.0", @@ -2259,12 +2237,6 @@ "@types/node": "16.9.1" } }, - "node_modules/image-q/node_modules/@types/node": { - "version": "16.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", - "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==", - "license": "MIT" - }, "node_modules/image-size": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/image-size/-/image-size-2.0.2.tgz", @@ -2430,9 +2402,9 @@ "license": "MIT" }, "node_modules/lightningcss": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.31.1.tgz", - "integrity": "sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", "license": "MPL-2.0", "dependencies": { "detect-libc": "^2.0.3" @@ -2445,23 +2417,23 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "lightningcss-android-arm64": "1.31.1", - "lightningcss-darwin-arm64": "1.31.1", - "lightningcss-darwin-x64": "1.31.1", - "lightningcss-freebsd-x64": "1.31.1", - "lightningcss-linux-arm-gnueabihf": "1.31.1", - "lightningcss-linux-arm64-gnu": "1.31.1", - "lightningcss-linux-arm64-musl": "1.31.1", - "lightningcss-linux-x64-gnu": "1.31.1", - "lightningcss-linux-x64-musl": "1.31.1", - "lightningcss-win32-arm64-msvc": "1.31.1", - "lightningcss-win32-x64-msvc": "1.31.1" + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" } }, "node_modules/lightningcss-android-arm64": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.31.1.tgz", - "integrity": "sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", "cpu": [ "arm64" ], @@ -2479,9 +2451,9 @@ } }, "node_modules/lightningcss-darwin-arm64": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.31.1.tgz", - "integrity": "sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", "cpu": [ "arm64" ], @@ -2499,9 +2471,9 @@ } }, "node_modules/lightningcss-darwin-x64": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.31.1.tgz", - "integrity": "sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", "cpu": [ "x64" ], @@ -2519,9 +2491,9 @@ } }, "node_modules/lightningcss-freebsd-x64": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.31.1.tgz", - "integrity": "sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", "cpu": [ "x64" ], @@ -2539,9 +2511,9 @@ } }, "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.31.1.tgz", - "integrity": "sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", "cpu": [ "arm" ], @@ -2559,9 +2531,9 @@ } }, "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.31.1.tgz", - "integrity": "sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", "cpu": [ "arm64" ], @@ -2579,9 +2551,9 @@ } }, "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.31.1.tgz", - "integrity": "sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", "cpu": [ "arm64" ], @@ -2599,9 +2571,9 @@ } }, "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.31.1.tgz", - "integrity": "sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", "cpu": [ "x64" ], @@ -2619,9 +2591,9 @@ } }, "node_modules/lightningcss-linux-x64-musl": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.31.1.tgz", - "integrity": "sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", "cpu": [ "x64" ], @@ -2639,9 +2611,9 @@ } }, "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.31.1.tgz", - "integrity": "sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", "cpu": [ "arm64" ], @@ -2659,9 +2631,9 @@ } }, "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.31.1.tgz", - "integrity": "sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", "cpu": [ "x64" ], @@ -2910,15 +2882,15 @@ } }, "node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -2994,17 +2966,17 @@ } }, "node_modules/node-vibrant": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/node-vibrant/-/node-vibrant-4.0.3.tgz", - "integrity": "sha512-kzoIuJK90BH/k65Avt077JCX4Nhqz1LNc8cIOm2rnYEvFdJIYd8b3SQwU1MTpzcHtr8z8jxkl1qdaCfbP3olFg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/node-vibrant/-/node-vibrant-4.0.4.tgz", + "integrity": "sha512-hA/pUXBE9TJ41G9FlTkzeqD5JdxgvvPGYZb/HNpdkaxxXUEnP36imSolZ644JuPun+lTd+FpWWtBpTYdp2noQA==", "license": "MIT", "dependencies": { "@types/node": "^18.15.3", - "@vibrant/core": "^4.0.0", - "@vibrant/generator-default": "^4.0.3", - "@vibrant/image-browser": "^4.0.0", - "@vibrant/image-node": "^4.0.0", - "@vibrant/quantizer-mmcq": "^4.0.0" + "@vibrant/core": "^4.0.4", + "@vibrant/generator-default": "^4.0.4", + "@vibrant/image-browser": "^4.0.4", + "@vibrant/image-node": "^4.0.4", + "@vibrant/quantizer-mmcq": "^4.0.4" }, "funding": { "type": "github", @@ -4294,14 +4266,14 @@ "dependencies": { "@adobe/css-tools": "^4.4.4", "@fastify/static": "^8.2.0", - "@lit-labs/ssr": "^3.3.1", + "@lit-labs/ssr": "^4.0.0", "@literals/html-css-minifier": "^3.0.1", - "@rsbuild/core": "^1.7.2", + "@rsbuild/core": "^1.7.3", "fastify": "^5.6.1", "gqlmin": "^0.3.1", "html-minifier-terser": "^7.2.0", "image-size": "^2.0.2", - "lightningcss": "^1.31.1" + "lightningcss": "^1.32.0" }, "optionalDependencies": { "lightningcss-linux-arm64-musl": "^1.31.1", @@ -4318,6 +4290,35 @@ "pagex": "file:../pagex" } }, + "pagex/node_modules/@lit-labs/ssr": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr/-/ssr-4.0.0.tgz", + "integrity": "sha512-pODr+t7cZVIrCRLuSLuWAACDnztEk5IrRFwFsbxyAyWcP2XP8aKuUZdVM/biXqxvIyHyCKtNZ92Gdcr+pjA5BQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-client": "^1.1.7", + "@lit-labs/ssr-dom-shim": "^1.5.0", + "@lit/reactive-element": "^2.0.4", + "@parse5/tools": "^0.3.0", + "enhanced-resolve": "^5.10.0", + "lit": "^3.1.2", + "lit-element": "^4.0.4", + "lit-html": "^3.1.2", + "node-fetch": "^3.2.8", + "parse5": "^7.1.1" + }, + "engines": { + "node": ">=13.9.0" + }, + "peerDependencies": { + "@types/node": ">=20.0.0 <25.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, "voidcannon": { "version": "1.0.0", "dependencies": { @@ -4331,7 +4332,7 @@ "emoji-regex": "^10.6.0", "gm3": "file:../gm3", "lit": "^3.3.2", - "node-vibrant": "^4.0.3", + "node-vibrant": "^4.0.4", "pagex": "file:../pagex", "pagex_commons": "file:../pagex_commons", "shiki": "^3.20.0", diff --git a/pagex b/pagex index 8d7847d..4140e9b 160000 --- a/pagex +++ b/pagex @@ -1 +1 @@ -Subproject commit 8d7847d2ae9975e0e3bf7eb82b08b9cec4d2e37b +Subproject commit 4140e9b33d4e7de3b4a03f869951f4febd14ece6 diff --git a/pagex_commons b/pagex_commons index 16d8646..3fa3da7 160000 --- a/pagex_commons +++ b/pagex_commons @@ -1 +1 @@ -Subproject commit 16d8646eb8fe42dd0f2a9e1ab294c2aff4d7e046 +Subproject commit 3fa3da7199bb1873af80c36cc36aeabddfc3d359 diff --git a/voidcannon b/voidcannon index 6781d04..aa1f541 160000 --- a/voidcannon +++ b/voidcannon @@ -1 +1 @@ -Subproject commit 6781d04733be5f23ab475fa52237c0b70b691030 +Subproject commit aa1f54108e7f3d6b1008e21de37bc3640fe76046