Skip to content

[Bug] Session TODO dock may not surface during active runs #66

@Astro-Han

Description

@Astro-Han

What happened?

During smoke of the right-panel polish PR (follow-up of #52), the TODO dock that normally appears above the composer input (SessionTodoDock) did not show. Reporter used "似乎" (appeared to) — the regression may be a session-state edge case rather than a hard break, so this issue is to pin down the repro and confirm.

Steps to reproduce

  1. Open PawWork desktop.
  2. Start a session and ask the agent to produce a plan (triggers todowrite).
  3. While the agent is still running, watch the area directly above the composer input.
  4. Observed: TODO dock did not appear.

What did you expect to happen?

TODO dock surfaces whenever sync.data.session_todo[sessionID] has items AND live() is true (busy or permission-blocked). Both legs are required by createSessionComposerState — see packages/app/src/pages/session/composer/session-composer-state.ts:116-118.

PawWork version

dev (worktree-feat-right-panel-polish, post 85c6bcba2)

OS version

macOS 15.x

Can you reproduce it again?

Only once so far — needs deliberate repro with an actively running session to confirm whether the dock is actually regressed or simply not triggered because no busy state was observed during the smoke.

Screenshots, recordings, or extra context

  • Data-path pointers (unchanged by the right-panel polish PR — verified by diff):
    • packages/app/src/pages/session/composer/session-composer-state.ts:93-98,110-114,116-118 — todos + live + dock gate.
    • packages/app/src/pages/session/composer/session-composer-region.tsx:205-225 — mount under <Show when={dock()}>.
    • packages/app/src/pages/session/composer/session-todo-dock.tsx — component itself, untouched.
  • My PR only touched sync.data.message / sync.data.part via new Status panel extractors. It did not touch sync.data.session_todo, SessionTodoDock, or SessionComposerRegion.
  • Diagnosis plan: trigger a session that stays busy for ≥5s with a todowrite call, inspect devtools for store.dock in composer state while observing todos().length and live().

Status update (2026-04-21)

Triage pass: git log on session-composer-state.ts, session-composer-region.tsx, session-todo-dock.tsx shows no commits since 2026-04-20. Gate logic at session-composer-state.ts:118 reads dock: todos().length > 0 && live(), unchanged. Not reproduced a second time since initial report. Priority lowered to P3 pending a second reproduction; if no repro surfaces by the next internal smoke cycle, close.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Low priorityappApplication behavior and product flowsbugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions