It has been a busy Saturday, split between refining my existing libraries and sharing some exciting new directions for my upcoming projects. Much of my focus went into DiscordPHP-MTGPocket, where I worked on expanding the engine's ability to understand complex Magic: The Gathering mechanics. By merging updates for things like "Amass," "shield counters," and various enchantment kinds, the engine is becoming much more capable of reading the game accurately. I also spent time keeping the DiscordPHP core in sync with the latest API changes from the October 8 OpenAPI description and improving the VoiceClient behavior to ensure it returns correctly when ready.
New projects and community support
I am officially announcing the early direction for Frontier Systems, a new cooperative engineering simulation project set within our solar system. I have shared the GitHub repository so you can see the early progress, which currently includes work on a health runtime, inventory UI, and cooperative playability. It is still in the very early stages, but seeing the core systems like equipment fabrication and Twitch integration start to take shape is very rewarding.
On a more practical note, I have introduced a new "Life Support" donation tier for DiscordPHP. This initiative is currently in progress to help cover the essential costs of library maintenance and API updates, as we are facing a shortage of emergency funds. Your support helps ensure these tools remain stable and up to date. Between the coding and the announcements, I also managed to squeeze in a quick 45-minute session of Magic: The Gathering Arena to unwind.
It has been a productive Friday, and I am happy to share that I have spent much of the day focusing on visibility and long-term vision. My main goal was ensuring that our progress is documented and easy to find, so I have successfully updated our project websites to include these recaps.
Introducing Frontier Systems
The most exciting part of today, however, was sharing a glimpse into the future with the Valgorithms community. I shared the early concept for a new project titled Frontier Systems. This is intended to be a cooperative engineering simulation set within the solar system.
While this is still an initial direction announcement, I wanted to get the concept in front of you all as soon as possible. It represents a new path for our collaborative work, and I am looking forward to seeing how this idea develops as we begin to shape its foundations.
Today was a non-progress day due to my vacation. I made two small patches to DiscordPHP, which were minimal effort. I'll fully review recent changes next week. I also spent a brief period playing Brawlhalla. I'll be streaming in the near future.
DiscordPHP
The small updates I pushed included the release of version v10.66.3, which addressed addField validation and some code style fixes. I am also continuing my ongoing work on the upcoming v11 version.
It has been a massive day of progress for DiscordPHP-MTGPocket, focusing heavily on making the game more accessible and technically robust. I have been working to ensure that new players can jump right in without feeling lost, so I am happy to share that we have merged several features to help with that. Specifically, PR #30 and #33 have brought a new "How to play" quick start guide and the ability to play practice games against a bot into the project. You can even use rental decks to practice against the bot now, which should make getting started much smoother.
Strengthening the engine
Beyond the user experience, I spent a significant amount of time under the hood refining how the engine handles the complexities of the game. To ensure the rules engine is as accurate as possible, I merged a large series of updates, including PR #31 and #34, to better support intricate mechanics like damage prevention, double-faced cards, Sagas, and various "look and reveal" templates. This ensures that when these cards appear in a match, the logic holds up.
I am also continuing to bridge the gaps in our card coverage and deck construction. I've been working through the claude/card-coverage-gaps-sc84tj branch to address these issues, which included a fix in PR #32 to add basic lands to certain short rental decks. To keep the project's foundation professional, I also integrated new PHP tooling via PR #35 and pushed some much-needed updates to the DiscordPHP.org and valgorithms.com websites.
It has been a massive day of progress for the DiscordPHP-MTGPocket engine. My main focus was on deepening how the system understands the complexities of Magic: The Gathering. I have successfully merged a significant wave of updates that improve our data coverage, bringing in support for MTGJSON and ensuring we are ready for the future with PHP 8.5 compatibility. This means the engine is becoming much more robust when handling tricky elements like triggered and loyalty abilities, tokens, equipment, and specific mechanical nuances like modal spells or painlands.
New ways to play and manage collections
Beyond just understanding the cards, I have been working hard to make the actual experience of playing more immersive and functional. I have merged several major gameplay systems, including a new /menu panel that allows you to interact using buttons and forms, and a move-by-move match logging system to keep track of your games. I am also very excited to share that a full booster draft mode has been developed, complete with Swiss rounds and card retention.
I have also focused on making your collections more useful outside of Discord. I've implemented features that allow you to export your decks and collections directly to MTG Arena, Tabletop Simulator, and Frogtown. While much of this is now part of the main branch, I am still spending time on the claude/card-coverage-gaps-sc84tj branch to bridge the remaining gaps in how the engine reads specific card text and mechanics. We are getting closer to a truly seamless simulation experience.
It has been a productive Friday spent primarily on strengthening the core of the AI-Router. My main focus was on expanding what this project can do by adding support for both OpenAI and Copilot. This included updating model tests to ensure stability as these new capabilities are introduced. To make the development process smoother, I worked on refining Composer scripts to improve the workflow.
Technical refinements to PHPacker
In addition to the work on the router, I spent some time with the PHPacker integration. I made a few technical tweaks, such as adjusting the binary defaults to use the --serve flag. I also resolved a bug related to null timer cancellations.
It has been a busy day of preparation and fine-tuning. I spent a good portion of my time updating both DiscordPHP.org and valgorithms.com to make sure everything is ready for the newsletter regarding the major DiscordPHP core and ecosystem releases.
Today was a busy day working on non-code related tasks. I'll be taking a break until after the 10th as both Colin and Cezzy are coming to visit starting on Friday.
It has been a massive day of progress for the DiscordPHP core. I have pushed out three new releases—v10.64.0, v10.64.1, and v10.65.0—which bring some foundational changes to how the library operates. The biggest shift involves a major refactor of our namespaces to align them with their corresponding API routes, as seen in discordphp/discordphp#1507. This reorganization, alongside the implementation of REST operations and updates to the Factory class, makes the entire library more intuitive and better structured for the long term. DiscordPHP now covers every route.
We also managed to squeeze in several important quality-of-life improvements and safety checks. I've merged updates to improve autocomplete callbacks, added validation for embed field lengths, and implemented new regression tests for invites to ensure everything stays stable as we grow.
Ecosystem growth and maintenance
Beyond the core library, I spent a significant amount of time tending to our wider ecosystem and documentation. The DiscordPHP.org website has been updated with new class diagrams and route maps to help you navigate the library more easily. I also worked on the DiscordPHP-Bridge to move the live announcer over to the Twitch connector, and I released v8.3.0 for the DiscordPHP-Voice extension, which now includes support for a voice session repository.
A large portion of my day was also dedicated to reviewing community contributions. I went through many pull requests, merging several helpful ones while closing others that were either outdated or caused fatal errors. All pending issues and PRs were either closed or merged. It is a constant balancing act to ensure that every piece of code added to the project meets our standards and provides clear benefits to everyone using it.
It has been a productive Sunday focused heavily on stabilizing our core tools and expanding how we connect different platforms. I spent a significant portion of my time reviewing community pull requests regarding autocomplete handling, testing tooling, and emoji logic. After sending several requests back for refinement, I was able to merge some important updates, most notably magic property support in discordphp/discordphp#1497. This work directly contributed to the release of two new versions, v10.61.0 and v10.62.0, which include improved documentation for the init event and better exception handlers for scheduled events.
Expanding the ecosystem
Beyond the core library, I focused on making our integrations more robust. I released twitchphp/twitchphp#v3.4.0, which brings much-needed improvements to connection handling and retry logic. To make this even more useful for creators, I added features to the Twitch bridges that can announce when streams go live or end, and I implemented a system to DM owners if a chat connection remains down. I also spent some time on the official website, adding a Discord server widget to the Community page and ensuring the site automatically rebuilds its maps on each release.
On the administrative side, I completed a series of updates to the Valgorithms server. This included refining the onboarding process, configuring new channels, and managing access and invitations to ensure everything is running smoothly for the community. I also took a moment to make the discordphp/discordphp-newsletter repository public and performed some minor maintenance on my other personal projects. It was a busy day of shipping code and tidying up our digital spaces, with just a quick 22-minute break to play some Brawlhalla.
Happy Sunday! I am so excited to be sending out my very first newsletter today. It feels great to finally have a dedicated space to share what I've been working on with all of you.
I've spent most of my morning diving deep into code reviews and making some progress on our web projects. It has been a busy morning of reviewing and managing code, particularly within discord-php/DiscordPHP. I spent a significant amount of time conducting extensive reviews, including requesting changes on discord-php/DiscordPHP#1414 regarding the command handler register overhaul and discord-php/DiscordPHP#1416 for the autocomplete callback matched option value.
Web and Community Updates
I also managed several merges within discord-php/DiscordPHP to keep things moving forward, such as rebuilding maps on the official website and updating the documentation. Beyond the code reviews, I've been focusing on our web presence. On discord-php/DiscordPHP.org, I added a Discord server widget to the Community page and added descriptions for the release dispatch process. I also performed some maintenance on valzargaming/valgorithms.com by creating a newsletter branch.
To help keep our community organized, I also created a new channel within the Valgorithms Discord server. You can join us and head directly to the new #newsletter channel here. The newsletter repository is also located here, but it is still private.