fix(popup): count down the pace run-out forecast (#342)

* fix(popup): count down the pace run-out forecast

The popup formatted "Runs out in X" once, when a usage refresh arrived,
while the panel run-out text and the reset time beside it follow the
clock. With no periodic refresh or a long interval, the popup kept
promising hours of quota after the predicted run-out had passed.

Usage rows now keep their structured pace parts, and the popup pace line
advances the run-out duration from the row's own observation time, like
the panel countdown. Without a usable observation time the received
duration is kept.

Tests: PacePresentation.advancedParts cases, and a harness that evaluates
ProviderUsageRow's own pace label binding against main.qml's presentation
functions; it fails on main ("Runs out in 2 hours" 90 minutes later).

Documentation: usage guide countdown note, CHANGELOG Unreleased.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0118rYiu37HnKdYedpUff1cT

* test(visual): stub the popup pace text in the usage row fixture

ProviderUsageRow now reads its pace line through applet.usagePaceText;
the visual layout fixture's applet lacked it, so the row test found no
pace label.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0118rYiu37HnKdYedpUff1cT

---------

Co-authored-by: Claude <noreply@anthropic.com>
1d00eb5527Simone committed on 9/24/2026, 4:08:45 AM· committed by GitHubparent101fae9
8 files changedLine totals unavailable