Skip to content

[BUG] Scrolling hides pending approval controls behind the scroll-to-bottom button #1447

Description

@zoomote

Problem (one or two sentences)

When a user scrolls upward while Zoo Code is working, the scroll-to-bottom control replaces pending approval controls. If a child task then requests finishTask approval, the child appears stuck because Complete subtask and return is no longer rendered.

Context (who is affected and when)

This affects users who require manual approval for subtask completion or other blocking actions and browse earlier chat output while a task is still running. The backend continues waiting normally, but the only control that can unblock it is hidden.

Reproduction steps

  1. Run Zoo Code in VS Code with subtask auto-approval disabled.
  2. Start a parent task that delegates to a child task.
  3. Let the child produce enough output for the chat to scroll.
  4. Scroll upward while the child is still working.
  5. Let the child call attempt_completion, which creates a finishTask approval request.
  6. Observe the action row at the bottom of the chat.

This was reproduced deterministically in the real VS Code Extension Host using the repository's Playwright/Electron harness. The harness confirmed that the backend emitted a live finishTask ask while the webview rendered the down-chevron and omitted the completion button.

Expected result

Pending approval controls remain visible while the scroll-to-bottom action is available, so the user can approve the action without changing scroll position first.

Actual result

The scroll-to-bottom action replaces the approval controls. For finishTask, the child remains open indefinitely and appears to have failed to return to its parent.

Variations tried (optional)

App Version

3.80.1 / current main

API Provider (optional)

Not Applicable / Other

Model Used (optional)

Deterministic local mock

Zoo Code Task Links (optional)

Discord report: https://discord.com/channels/1497384592494297201/1513140102929453096/1543429204949991557

Relevant logs or errors (optional)

No backend error is emitted. The task is blocked waiting for the hidden approval.

Root cause

webview-ui/src/components/chat/ChatView.tsx renders the action row with a mutually exclusive branch: when showScrollToBottom is true, it renders scroll controls instead of primaryButtonText / secondaryButtonText approval controls.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions