Skip to content

Focus-mode work block: a live block force-opens a reader's explicit fold with no way to undo it #6750

Description

@baxen

Split out of PR #6536 (focus-mode work blocks, Slice C). Found by ss-dev-03 during a review pass; deliberately not fixed in that PR because the intended behaviour is a design call rather than a bug fix.

Behaviour today

useWorkBlockDisclosure in desktop/src/features/agents/ui/AgentSessionWorkBlock.tsx takes policyOpen = status.isActive || settling, and the reader's recorded choice overrides it. But the rail is rendered from isLive || disclosure.open, and while the block is live the summary trigger is not rendered at all:

{isLive ? null : (
  <WorkBlockSummaryTrigger ... />
)}
<DisclosurePanel open={isLive || disclosure.open}>

So when a reader has explicitly folded a block and that block goes live again, the fold is overridden by policy and the control that would let them re-fold it disappears. There is no trigger to undo it until the block finishes. The reader's stated intent is silently discarded for the duration.

This is the "live policy wins" rule working as written; the problem is that it wins over an explicit reader choice and leaves no affordance.

Intended fix (sticky fold)

Discussed as the preferred behaviour but not yet confirmed by @baxen:

  • A block the reader has explicitly folded stays folded while live.
  • The summary line keeps carrying liveness: running glyph plus a step count, so the reader can see work is happening and how much, without the rail expanding under them.
  • That implies rendering the summary trigger while live (at least when the reader has folded), which is the part that needs a design decision — today the trigger is unconditionally suppressed for live blocks because "the rail IS the status".

Notes

  • Distinct from the two bugs fixed in feat(desktop): fold focus-mode agent work into one transcript block #6536 (eeb2f702a: reduced-motion pulse guard + a finished block going live again during the inter-turn gap; 91a5754ad: reader expansion surviving block re-grouping).
  • Whoever picks this up: the reader-choice plumbing now lives in desktop/src/features/agents/ui/agentSessionWorkBlockDisclosure.tsx, keyed by step id, so "has the reader explicitly folded this block" is already available via readWorkBlockChoice.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions