zz_

153aad69 ยท zzmq.dev@gmail.com/zz

Commit

153aad69e73ae789bce535ca3edda69ef40ef64f

Fail fast on missing API credentials; keep the request-changes follow-up ask's description clean Two fixes: 1. "zz work --assist --provider groq" with no GROQ_API_KEY set used to crash deep inside the TUI session, on the first draft attempt -- each remote backend's apiKey()/apiToken() was only ever called lazily, inside chat() itself. groqBackend.ts, geminiBackend.ts, and cloudflareBackend.ts now all resolve their credentials eagerly, at createXBackend() call time -- which both work.ts and workAssist.ts already call before resolveCliBackendMode/enterFullscreen, so a missing credential now fails fast as a plain CLI error ("zz: Groq backend needs an API key: ...") before any TUI ever renders. 2. The previous commit's request-changes follow-up ask stuffed the full rejected file content directly into the ask's `description` field -- which tui/AssistApp.tsx's describeAsk (and proposeContributorWork's own shard-naming/Ladder-search) all read expecting a short one-line summary, so the picker/header display turned into a wall of embedded code. description now stays just the original task text; the rejected draft and the maintainer's reason live in a separate `priorAttempt` field that only proposeContributorWork's own prompt-building reads, folding it into the model's generation context without it ever reaching a display surface. Verified live: the follow-up ask's description is clean, and the model still produces a revision addressing the feedback. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q8tksS4bucUkJguqksSVYR

Troy Howard <thoward37@gmail.com> -- 2026-10-13T17:41:52.000Z

Tree at this commit