fix(init): rotate spinner messages during long plan-codemods wait#1108
Conversation
During plan-codemods, the spinner showed static text for up to ~3min while the server fetched SDK docs and ran the planner agent. Users assumed the CLI had hung and bailed. Add client-side rotating progress messages that cycle every 12s during resumeWithRecovery() for steps with known long waits (plan-codemods, detect-platform). After exhausting all messages, append elapsed time so the user knows the system is still working. Fixes #1107
|
Codecov Results 📊✅ Patch coverage is 92.59%. Project has 5054 uncovered lines. Files with missing lines (1)
Coverage diff@@ Coverage Diff @@
## main #PR +/-##
==========================================
+ Coverage 81.24% 81.24% —%
==========================================
Files 388 388 —
Lines 26910 26936 +26
Branches 17481 17493 +12
==========================================
+ Hits 21861 21882 +21
- Misses 5049 5054 +5
- Partials 1822 1825 +3Generated by Codecov Action |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 30115b2. Configure here.
The rotation timer could overwrite 'Reconnecting...' spinner messages during stale-step or connection recovery. Add pause/resume to the rotation handle so resumeWithRecovery can suppress ticks while recovery is in progress.
|
all CI checks are green. skipping auto-merge since the diff is 363 lines across 4 files (exceeds the 150-line threshold for autonomous merge) — leaving for human review. |
|
Looked at this closely while chasing the same problem from the telemetry side — runs were stalling right here. For context: in A few notes, none blocking:
Confirmed the "Reconnecting..." collision is handled via |
Recovery paths always end with stop() via the finally block, so resume() was never called. Spotted by @betegon in review.
|
thanks for the thorough look.
|

During
plan-codemods, the spinner showed static text ("Planning code changes...") for up to ~3 minutes while the server fetched SDK docs and ran the planner agent, causing users to bail. This adds client-side rotating progress messages that cycle every 12s duringresumeWithRecovery()for steps with known long waits (plan-codemods,detect-platform). After exhausting all messages, elapsed time is appended so the user knows the system is still working.No regression in
LoggingUI— the spinner'smessage()method logs each rotation as a separate line in non-interactive mode, which is the desired behavior.Testing
vitest run test/lib/init/clack-utils.test.ts— 15/15 pass (4 new tests for progress message constants)wizard-runner.test.tshas a pre-existing Stricli alias conflict (-Hinlocal/server.ts) that prevents it from loading; 3 new tests added for the rotation behaviorbiome checkclean on all changed filesCloses #1107