(3) Make Logging Better :) it is currently.. not it. not very good. i'm okay with no tracing crate here, just log nicer. and include the current datetime. (4) Harden Code it can still be soft :) it just needs to not crash so much! well, there are a lot of unwrap and places it can go wrong. make it less likely to crash, especially in the module call code where a panic can bring us down. can we `std::panic::set_hook` or maybe a `catch_unwind`? there are complications with the first one, but perhaps we can make it work? (6) CGI Bin To Man-in-the-middle Requests Is this just parrot? Maybe this is just parrot? I want something, for ease of debugging, to sit between corgi and the binary so we can see both ends of the conversation. I had a bug in corgi-stats that had corgi erroring with "no nl in header" and that was confusing. I was able to fix it kind of blindly, but that was not ideal. It could've been bad! Being able to see what corgi-stats was returning would've been very helpful. (7) Investigate Compressing the SQLite Stats DB Looking at the below project. It's in Rust and easily integrated, I think, so we should use it to explore how things work. I think it could be good; I imagine the data we store compresses great. The IP addresses, user agents, paths, script names. Like, in the 11 million row production database we store the script name of almost certainly mostly "cgit", so that could get dramatically reduced. https://github.com/phiresky/sqlite-zstd DONE :) DONE :) DONE :) DONE :) DONE :) DONE :) DONE :) DONE :) DONE :) ======================================================================= (1) Support Multiple CGI Scripts This is needed even just for the cgit and git server target. We need to be able to support the cgit executable itself, and also git-http-backend for smart clones. (2) Support Matching CGI Based On Path The other requirement for git-http-backend, which needs to trigger on the regex `/.+/(info/refs|git-upload-pack)` (5) Crate For The Module System so we don't have to copy the weird structs. and also so maybe we can make it safer? A C header, too, maybe? that just define the struct. and really some kind of documentation, probably. EWONTFIX lol. module system was ripped out because it turns out there is no good way to handle more than one request concurrently, it seems.