Skip to content

feat(floating): live "working" status + a fading "done" nod when driving roro#133

Closed
gorajing wants to merge 1 commit into
mainfrom
feat/floating-progress
Closed

feat(floating): live "working" status + a fading "done" nod when driving roro#133
gorajing wants to merge 1 commit into
mainfrom
feat/floating-progress

Conversation

@gorajing

Copy link
Copy Markdown
Owner

What & why

Ask roro to make something in floating mode and it looked like nothing was happening — even though it was planning, running Codex, editing files, and succeeding (a real task is 30–90s of work). The cause: floating mode hides all chrome (#overlay is display:none), so the only feedback was a faded static "tasked:" pill and a cat whose activity blip fades after ~2s. Dropping the success receipt (#132) removed the completion signal too.

This gives floating mode a single calm status line so driving roro feels alive — without a lingering banner.

Behavior

Phase What you see
Task accepted (planning) thinking… (calm slate line)
Coding agent running working…persistent the whole run, never a blank gap
Success a brief done · N files nod that auto-fades after ~3.2s (a nod, not a banner). Answer turns (no files) → done
Stopped neutral Stopped. (unchanged)
Failure sticky red (unchanged — fail-loud)

New progress tone in index.css (calm slate, clearly neither success-green nor failure-red). receiptForTurnEnd/turnReceipt.ts are untouched — this is purely the floating display layer.

Verification

  • vitest: 871 passed, lint clean (0 errors). New tests: persistent working… line through a multi-event task; thinking…working… phases; done · 1 file nod; auto-fade via fake timers.
  • npm run verify:floating PASSES on a real build — now asserts the live thinking… progress line AND the done nod, with failures still rendering (fail-loud intact).
  • Drove a simulated task end-to-end over CDP and screenshotted every state: thinking… → working… (persists through file edits) → done · 2 files → fades.
  • codex review --base main (max effort): clean — "No correctness regressions were found."

Note

At the compact 190px width, an active task stacks three elements (status line + Stop + tasked pill) — readable but a touch busy. The completion/idle states are clean. Easy follow-up to tighten the active-task layout if it feels cluttered in practice.

🤖 Generated with Claude Code

https://claude.ai/code/session_01UzzoU3jA7PtL8BYMmhepUM

…ing roro

In floating mode roro hides all chrome (#overlay is display:none), so a coding
task — which takes 30–90s of real work — showed the user almost nothing: a
faded static "tasked:" pill and a cat whose activity blip fades after ~2s. Ask
roro to make something and it looks like "nothing is happening", even though it
is planning, running Codex, editing files, and succeeding. Dropping the success
receipt (#132) removed the one completion signal too.

This gives floating mode a single calm status line (reusing #floating-error):
- thinking… while roro plans (on showTasked), then working… for the whole
  executor run (on run.started) — persistent, never a blank frozen gap.
- on success, a brief "done · N files" nod that AUTO-FADES after ~3.2s (a nod,
  not a lingering banner — restraint). 'done' for an answer turn (no files).
- failures stay sticky (fail-loud) and a Stop still shows neutral 'Stopped.'.

New 'progress' tone in index.css (calm slate — clearly neither success-green nor
failure-red). receiptForTurnEnd/turnReceipt.ts are untouched; this is purely the
floating display layer.

Verified:
- vitest 871 passed (new tests: persistent working line through a multi-event
  task; thinking…→working… phases; done·N-files nod; auto-fade via fake timers).
  lint clean (0 errors).
- npm run verify:floating PASSES on a real build — asserts the live 'thinking…'
  progress line AND the 'done' nod, with failures still rendering (fail-loud).
- Drove a simulated task end-to-end over CDP and screenshotted each state:
  thinking… → working… (persists through file edits) → done · 2 files → fades.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UzzoU3jA7PtL8BYMmhepUM
@gorajing

gorajing commented Jul 4, 2026

Copy link
Copy Markdown
Owner Author

Closing as superseded by the floating-UI redesign (#154#160), not merged.

  • The core problem this solved — floating mode feeling dead during a 30–90s task — is now handled by the S3 WorkingChip (feat(floating): stage + pure tether positioner + WorkingChip (S3) #156): a persistent, tethered, edge-aware status chip with a live activity verb for the whole run (a better fit than a status line crammed into the old 190px width).
  • The "done · N files" nod was a deliberate product decision to not ship: feat(floating): drop the success receipt — a completed turn shows no banner #132 (drop-success-receipt) removed completion banners, and the S5 truthful-receipt philosophy is "a bare success shows nothing; only a genuinely-recalled memory earns a receipt."
  • The PR is also CONFLICTING against the fully-rewritten floatingAsk.ts/index.css/smokes.

Reopenable if we ever revisit an explicit completion signal — but it would be built fresh against the tethered stage, not this diff.

@gorajing gorajing closed this Jul 4, 2026
@gorajing
gorajing deleted the feat/floating-progress branch July 4, 2026 20:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant