Skip to content

fix(web): keep active plan visible above composer - #6007

Open
StiensWout wants to merge 2 commits into
pingdotgg:mainfrom
StiensWout:t3code/keep-plan-bar-visible
Open

fix(web): keep active plan visible above composer#6007
StiensWout wants to merge 2 commits into
pingdotgg:mainfrom
StiensWout:t3code/keep-plan-bar-visible

Conversation

@StiensWout

@StiensWout StiensWout commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Problem

The active turn plan is rendered in chronological order, so subsequent work-log entries can push it out of view while the agent is still working.

Fix

  • Reuse the existing plan-row UI directly above the composer.
  • Remove only the active turn's plan from the chronological timeline while that turn is working.
  • Keep completed and historical plans in their original timeline positions.
  • Let the existing composer-overlay measurement account for the pinned plan's height in scroll and bottom spacing.

Verification

  • vp run --filter @t3tools/web typecheck — passed
  • vp fmt on the four changed files — passed
  • git diff --check — passed
  • Isolated synthetic-thread browser check — passed; the plan row is immediately above the composer.
  • Targeted Vite Plus test invocation is currently blocked before test execution by the checkout's runner error: TypeError: Cannot read properties of undefined (reading 'config').

Screenshots

Before — active plan can be pushed into the timeline:

Before: inline plan

After — active plan stays above the composer:

After: pinned plan

Implemented and verified by GPT-5.6 Luna via Codex.


Note

Low Risk
Chat UI layout and timeline filtering only; no auth, data, or API changes.

Overview
While a turn is running, its plan is pinned in a bar directly above the composer instead of scrolling away with later work-log entries.

ChatView derives pinnedActiveTurnPlan when the thread phase and latest turn are running and match activePlan, renders it with the shared TurnPlanTimelineRow, and feeds timeline building through excludePinnedTurnPlan so only that active plan is omitted from the chronological list. Completed and historical plans stay in the timeline.

TurnPlanTimelineRow is exported and takes a TurnPlanEntry prop so the same UI works in the timeline and the pinned bar. Unit tests cover excludePinnedTurnPlan.

Reviewed by Cursor Bugbot for commit 53ce6b4. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Keep active turn plan visible above the composer during running turns

  • While a turn is running, the active plan is pinned above the timeline/composer using a new pinnedActiveTurnPlan memo in ChatView.tsx, rendering TurnPlanTimelineRow outside the main timeline.
  • A new excludePinnedTurnPlan utility in MessagesTimeline.logic.ts filters the pinned plan from the chronological timeline to avoid duplication.
  • TurnPlanTimelineRow in MessagesTimeline.tsx is refactored to accept a TurnPlanEntry prop directly and is now exported for reuse.

Macroscope summarized 53ce6b4.

@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 578591c0-8aef-4bc1-86a1-778f6d027af8

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Aug 10, 2026
Comment thread apps/web/src/components/ChatView.tsx Outdated
@StiensWout

Copy link
Copy Markdown
Contributor Author

Addressed Macroscope's stale-plan finding in 53ce6b4: pinning now requires both phase === "running" and activeLatestTurn.state === "running", so pre-send isSendBusy cannot remove the previous turn plan.

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 53ce6b4. Configure here.

<div data-active-plan-bar="true" className="mx-auto mb-1.5 w-full max-w-3xl">
<TurnPlanTimelineRow turnPlan={pinnedActiveTurnPlan} />
</div>
) : null}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pinned plan reuses expand state

Low Severity

The pinned TurnPlanTimelineRow has no React key tied to the plan or turn identity. expanded is local component state, so when the pinned plan switches to a different turn or thread without unmounting, the prior expand/collapse state is reused on the new plan.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 53ce6b4. Configure here.

@macroscopeapp

macroscopeapp Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved 53ce6b4

Straightforward UI fix that pins the active turn plan above the composer. Changes are self-contained with unit tests, and the author is an active contributor to this file. The open review comment about React key state is a minor UI polish item.

You can customize Macroscope's approvability policy. Learn more.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M 30-99 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant