Still working on Corvos. I had to change it so it has 2 separate pipelines instead of just one since that's the only way to capture the different behavior between stuff in the pages folder (where e.g. .ts files are turned into .html pages) and assets (where .ts files are bundled with ESBuild).
This has lead to pages only containing everything from the pages folder, and site.load and site.glob can be used to pull in any other kind of file (even remote), which is then compressed and hashed and whatever else you configured in the asset pipeline.
Worked on Corvos again. The logic is now flipped around so instead of hoovering up a source folder with all of its contents, it now takes entry points (most reasonably page files), and then any file can call site.$.load() to run the pipeline with that file as entry point. The results are then integrated into the main pipeline and continued to be processed there. This is inspired by how bundlers typically work. And it's neat to see files not appearing in the output at all if I haven't used them anywhere.
It worked a lot like Lume in that you gave it a root path and it ingested everything in there. I'm switching the logic to be more like Astro, where files only get ingested if they're requested, because the former logic caused some annoying problems where I needed to handle files of the same type differently