* fix(desktop): show the working row right after a setup card is answered
A hidden setup prompt appends no user row, so the card's own message stays
the tail and its gap row timed the wait from when the card was drawn (it read
like a stale '2m 10s'). An answered setup_choose card kept the row off while
its tool call was open, then waited out the 2s quiet window. And in the guided
chat, where reasoning is not drawn, streamed reasoning counted as progress: the
pre-first-token row vanished on the first reasoning token and the gap row
never qualified while the model thought.
The user handing the turn back (a new turn under the card, or an answered
question card) now shows the row at once, timed from that moment. Question
cards neither narrate the wait nor count as agent progress. Undrawn reasoning
is not progress, and a reply that has only thought so far keeps the
pre-first-token row.
* feat(desktop): name the install step on the catalog install card
The catalog install worker now reports its phase through the operation's
existing detail field (operation.refresh -> connection.update): Downloading,
Installing Python packages (only when the plugin declares any), Loading its
tools. dashboard_install_plugin takes an optional on_step callback for this.
The card draws the step as one muted line under the bar.