I had a lot of chats in OpenRouter across different models, with basically no proper way to bulk export or search them. So I wrote a js scraper for that. LM Studio was easier because chats are local, while Google AI Studio had the ugliest format. That became ThreadShelf: one local archive with seman