Apr 28, 2026
Commits
49469f8 — Add per-provider message history to /ml/chat/stream
New optional messages_by_provider field on ChatStreamRequest lets clients give each provider its own conversation thread (so Gemini sees its own prior assistant turns and Modal sees its own). Falls back to the existing messages array when absent — backward compatible.
Changed:
dev/ml/gateway/chat.py— addedmessages_by_provider: dict[str, list[ChatMessage]] | Nonefield, per-provider message resolution inchat_stream()bruno/.../ML API/Chat Stream Per Provider History.bru— new: Bruno test with two providers and distinct prior turns
6ea8c3d — Point main env at SupabaseDev until new prod Supabase is restored
Temporary workaround: hardcodes "SupabaseDev" for the main environment because the new prod Supabase project doesn't yet have anonymous sign-ins enabled or canary test fixtures. Revert to the original ternary once prod is restored. Tracked in IMPROVE.md H19.
Changed:
dev/core/core.py—supabase_secret_namehardcoded to"SupabaseDev"(line 423)IMPROVE.md— added H19 restoration checklist
dc4e353 — Retry Bruno test suite up to 2x on failure in test_app.sh
Transient failures (Modal cold-start TLS errors, brief upstream blips) were causing one-off canary breaks that pass on re-run. Wraps bru run in a 3-attempt loop; only declares failure if every attempt fails. Whole-suite retry rather than per-test because Bruno tests share auth state (anonymous sign-in seeds access_token for downstream requests). Falls back to a single attempt if jq is unavailable.
Changed:
dev/test_app.sh— 3-attempt retry loop with row-level + assertion failure detection (+48/-9 lines)dev/test_app.md— updated docs to reflect retry behavior