Skip to content

refactor(ui): restore timed inline execution details - #5518

Draft
Astro-Han wants to merge 2 commits into
apache:mainfrom
Astro-Han:refactor/process-inline-disclosure
Draft

Astro-Han wants to merge 2 commits into
apache:mainfrom
Astro-Han:refactor/process-inline-disclosure

Conversation

@Astro-Han

@Astro-Han Astro-Han commented Sep 20, 2026

Copy link
Copy Markdown
Contributor

Summary

Draft design alternative to #5506 and the timing placement from #5501, with #5511 as related context. The intended result is a quiet process row that shows a live clock while work runs and becomes a total-duration disclosure when it finishes—not just removal of the card.

  • Restore the existing live clock to the current process summary. On completion, the same row folds to 用时 3 分 33 秒. Use the turn start and recorded duration, not a second timer or local estimate. After steering, only the latest assistant segment owns timing.
  • Keep settled status and finish time under the answer, without repeating duration. Replies without process entries retain footer timing. Retry and observation-loss behavior, reasoning/tool details, answer identity, and selection remain intact.
  • Remove the outer frame and fill, 360px/80vh caps, inner scrolling, fade measurement, zoom state/control, and unused copy. Expanded details use the transcript scroll path; native disclosure motion remains.
  • Retire the two zoom-only unit tests and zoom story. Extend existing lifecycle and oversized-process coverage; remove the geometry harness workaround that aimed wheel events around the box and its artificially enlarged final answer.

Trade-off: a long expanded or running process takes more page height, and the clock can scroll above the viewport with that process. This proposal keeps timing attached to the process and chooses one scrolling surface over a bounded process viewport. It adds no preference or parallel presentation mode; there are no data or protocol changes.

@Joob1n, thanks for the work on long processes and the Astryx follow-up. Could you review this as a concrete comparison? The initial draft only removed the card; this revision also restores the live-to-settled timing summary. This is an invitation to compare the experience, not a request that you redo #5511 or an assumption that this direction is agreed.

Verification

  • Passed: npm run format, npm run lint, npm run astryx:surface-inventory, UI build/typecheck and its test suite with concurrency 4, and Desktop typecheck:stories / build-storybook.
  • Timing regression observed red before the fix and green afterward: the single clock moves from footer to process without resetting, ticks from 12s to 17s, settles to the recorded 21s, and stays there without remounting the answer. Existing tests also cover steering ownership, retry suppression, failed-turn recovery, missing duration, Chinese copy, and pure-reply fallback.
  • Passed: 13 focused Storybook renders in Electron via CDP: short collapsed/expanded, running-tool, oversized-process, and live-to-completed lifecycle in light/dark; short/long at 720px; streaming tail-follow. Play assertions completed; checked DOM geometry, computed styles, console and accessibility-tree smoke. Both lifecycle renders end on 用时 7 秒.
  • The oversized body is 7221px tall with equal client/scroll heights; main remains capped at 360px, failing the full-height condition. All three geometry scenes passed with GEOMETRY_REPETITIONS=1 and --assert-stable in the first revision; the 45-tool scene had zero cold/warm reader slips. The timing revision reran the focused oversized and streaming stories, not the full geometry sweep.
  • Not run: full-repository tests, the Desktop unit suite, the complete Storybook catalog, or a live Runtime Host-backed app session. Electron hosted the production Storybook components, not the full application.

Same CompletedProcessCollapsed / CompletedProcessExpanded stories and 1280×900 viewport; BEFORE is unmodified main 0117d76c5, AFTER is this branch.

Collapsed process, light: total duration returns to the disclosure

Collapsed process, dark: total duration returns to the disclosure

Expanded process, light: inline details and duration summary

Expanded process, dark: inline details and duration summary

AI use

  • No generative tool made a substantive contribution
  • Generative tooling made a substantive contribution

Tool(s) and scope: Devin implemented the alternative and timing follow-up, adjusted existing tests, ran local verification, and prepared comparison images and PR text. Design acceptance and merge remain human decisions.

Checklist

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

Generated with Devin

Keep the process disclosure and running/settled lifecycle, but remove the outer card, height caps, nested scrolling, fade measurement and zoom state. Supporting activity should not need a second viewport or an extra action to read everything after expanding it.

Trade a bounded long-process view for one transcript scroll path. Tool and reasoning details, answer identity, selection and footer status stay unchanged. Native disclosure motion retains overflow: clip without a scroll container.

Remove two zoom-only unit tests and the zoom story. Extend the existing cold-scroll story to require full process layout; remove nested-scroller avoidance and the oversized-answer workaround from geometry coverage.

Verified UI build/tests, UI and Storybook typechecks, format/lint, Astryx inventory, 11 focused Electron/CDP story renders and all three geometry scenes with --assert-stable.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Generated-by: Devin
@Astro-Han
Astro-Han requested a review from Joob1n September 20, 2026 00:24
@github-actions github-actions Bot added the effort/M Under 500 readable lines label Sep 20, 2026
Removing the bounded card alone preserved the earlier move of all timing to the footer. Keep live elapsed time beside the current process, then replace it with the recorded total duration on settlement. The last assistant segment owns this once; pure replies keep footer timing, and settled status and finish timestamps remain below the answer.

Reuse the existing clock and duration copy rather than introducing another timer or persisted state. Retry and observation-loss gates still suppress false activity. Existing localized footer labels now accept omitted duration so the header and footer do not repeat it.

Extend the existing lifecycle regression: one footer clock hands off to the process, advances from the same start time, then freezes at recorded duration without remounting the answer. Confirmed red before implementation and green after; updated steering, failure, locale, pure-reply and browser coverage. UI suite, typechecks, format/lint and 13 focused Electron/CDP renders pass.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Generated-by: Devin
@Astro-Han Astro-Han changed the title refactor(ui): keep execution details in the conversation flow refactor(ui): restore timed inline execution details Sep 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

effort/M Under 500 readable lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant