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
- Open PawWork desktop.
- Start a session and ask the agent to produce a plan (triggers
todowrite).
- While the agent is still running, watch the area directly above the composer input.
- 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.
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
todowrite).What did you expect to happen?
TODO dock surfaces whenever
sync.data.session_todo[sessionID]has items ANDlive()is true (busy or permission-blocked). Both legs are required bycreateSessionComposerState— seepackages/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
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.sync.data.message/sync.data.partvia new Status panel extractors. It did not touchsync.data.session_todo,SessionTodoDock, orSessionComposerRegion.store.dockin composer state while observingtodos().lengthandlive().Status update (2026-04-21)
Triage pass:
git logonsession-composer-state.ts,session-composer-region.tsx,session-todo-dock.tsxshows no commits since 2026-04-20. Gate logic atsession-composer-state.ts:118readsdock: 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.