Recipes for the most frequent types of changes in aimux.
- Create
internal/provider/yourprovider.goimplementing allProviderinterface methods - Add compile-time check:
var _ Provider = (*YourProvider)(nil) - Register in
tui/app.goNewApp()providers list - Add default config in
config/config.goDefault() - Add model pricing in
cost/tracker.go - Add tests in
internal/provider/yourprovider_test.go
Example: see internal/provider/claude.go for a complete implementation.
- Create
internal/tui/views/yourview.gowith a Bubble TeaModelstruct - Implement
Init(),Update(),View()methods - Add navigation key in
tui/app.goUpdate()switch - Add hint bar entry in
tui/app.goupdateHints() - Add tests (view logic should be in core packages, not in the view itself)
- Add handler in
internal/frontend/web/using core packages for logic - Register route in the HTTP mux setup
- Add corresponding React component in
web/src/ - Never reimplement Go logic in TypeScript; fetch from the API instead
- Add key handler in the relevant view's
Update()method - Update the hint bar in
tui/app.goupdateHints() - Document in
docs-site/src/content/docs/if user-facing
- Check if the bug exists in all three providers (Claude, Codex, Gemini)
- Fix in shared helpers (
provider/helpers.go) if possible - If provider-specific, fix in each provider file
- Run
go test ./internal/provider/... -timeout 30sto verify all three