As I mentioned last week, I've been working on a 'Reason Board' prototype. I spent a long time trying to not have any real imports besides Jest, using html imports and plain functions that generated elements. I started making very light DOM element creation/matching methods, which did genuinely work OK, but as I saw the performance get worse and worse, I knew my path was unsustainable.

So tada! I'm still really embarassed by the current state, and it looks nearly identical to the state last week (except for a few breaking API changes that I don't care about because no one is using this), but it's now built with react and vite.

The PR says that I added 3,927 lines and lost 2,482 lines. Almost all of it was contributed by Claude code, which did a pretty impressive job with all of this. It took 3 hours for the vast majority of the above, and then about 6 additional hours doing non-trivial updates of mutable classes (pun intended), reorganizing the repo, and finding and fixing bugs. There's still a few bugs lurking (including ones that existed before the refactor), but vite and react have honestly been nice additions.