This sprint I worked on chatcraft.org where I had the opportunity to fix a regression using git bisect for the first time.

tarasglek
/
chatcraft.org
Developer-oriented ChatGPT clone
ChatCraft.org
Welcome to ChatCraft.org, your open-source web companion for coding with Large Language Models (LLMs). Designed with developers in mind, ChatCraft transforms the way you interact with GPT models, making it effortless to read, write, debug, and enhance your code.
Whether you're exploring new designs or learning about the latest technologies, ChatCraft is your go-to platform. With a user interface inspired by GitHub, and editable Markdown everywhere, you'll feel right at home from the get-go.

Features
We think ChatCraft is the best platform for learning, experimenting, and getting creative with code. Here's a few of the reasons why we think you'll agree:
🛠️ You're in Control: Customize all aspects of a chat. Use your own System Prompts, edit, delete, and retry AI messages with models from competing vendors in the same chat.
🌍 Multiple AI Providers: ChatCraft supports both OpenAI and OpenRouter, giving you access to a…
View on GitHub
Issue 1
I mostly spent time looking into this issue which listed a number of bugs in the user settings modal:

openrouter mostly broken in settings
FTC Issues New Proposed Rule Focused...d Testimonials

tarasglek
posted on Mar 04, 2025
For repro
Click on checkbox next to openrouter
it selects openai
Click on openrouter api key box
View on GitHub
This issue outlined three bugs:
Bug 1: Broken LLM selection in settings
I spent two days looking into this bug. I had a hunch it was a regression because I figured surely the UI for this must have worked at some point, but there hadn't been any recent changes to the component. I tried to investigate by checking out the last commit that touched the LLM selection code, but I ran into errors installing the dependencies. pnpm said it couldn't find the dependencies, which I assume was because the versions were just that old.
After that I gave up on the regression idea (in hindsight, I should've kept digging) and instead tried looking into the current code. I had no luck trying to debug the existing logic, so I tried to re-create the component from scratch. I noticed it worked until I wrapped the
tarasglek
/
chatcraft.org
Developer-oriented ChatGPT clone
ChatCraft.org
Welcome to ChatCraft.org, your open-source web companion for coding with Large Language Models (LLMs). Designed with developers in mind, ChatCraft transforms the way you interact with GPT models, making it effortless to read, write, debug, and enhance your code.
Whether you're exploring new designs or learning about the latest technologies, ChatCraft is your go-to platform. With a user interface inspired by GitHub, and editable Markdown everywhere, you'll feel right at home from the get-go.

Features
We think ChatCraft is the best platform for learning, experimenting, and getting creative with code. Here's a few of the reasons why we think you'll agree:
🛠️ You're in Control: Customize all aspects of a chat. Use your own System Prompts, edit, delete, and retry AI messages with models from competing vendors in the same chat.
🌍 Multiple AI Providers: ChatCraft supports both OpenAI and OpenRouter, giving you access to a…
View on GitHub
Issue 1
I mostly spent time looking into this issue which listed a number of bugs in the user settings modal:
openrouter mostly broken in settings
FTC Issues New Proposed Rule Focused...d Testimonials
tarasglek
posted on Mar 04, 2025
For repro
- use chatcraft.org in private window.
- open settings
Click on checkbox next to openrouter
it selects openai
Click on openrouter api key box
- It now shows up the magic "get openrouter key" box...We should probably surface that better
- Click it, login
- Observe how openrouter key was not added
View on GitHub
This issue outlined three bugs:
- Clicking any of the checkboxes for choosing the LLM provider in the settings modal would always result in the first provider being selected.
- The "Get OpenRouter Key" button would only show when the API key input field was focused, which was bad for the option's discoverability.
- The button doesn't actually work.
Bug 1: Broken LLM selection in settings
I spent two days looking into this bug. I had a hunch it was a regression because I figured surely the UI for this must have worked at some point, but there hadn't been any recent changes to the component. I tried to investigate by checking out the last commit that touched the LLM selection code, but I ran into errors installing the dependencies. pnpm said it couldn't find the dependencies, which I assume was because the versions were just that old.
After that I gave up on the regression idea (in hindsight, I should've kept digging) and instead tried looking into the current code. I had no luck trying to debug the existing logic, so I tried to re-create the component from scratch. I noticed it worked until I wrapped the