What happened?
When all todos in a session reach a terminal state (completed or cancelled), the todo dock at the top of the composer remains visible indefinitely instead of disappearing. It becomes a persistent UI element that no longer serves a purpose.
This is the third iteration of this area (see #297 and #321). The root cause is that the visibility logic was intentionally simplified in #297 to todos().length > 0, which removed any awareness of completion status. The dock now stays visible as long as the backend sends a non-empty todo array, regardless of whether every item is done.
Steps to reproduce
- Start a session that generates todos (e.g., ask the agent to perform a multi-step task).
- Wait for all todos to complete (or cancel).
- Observe that the todo dock remains visible with all items struck through.
What did you expect to happen?
The todo dock should automatically hide after a short delay once all todos are in a terminal state, so the composer returns to a clean state.
PawWork version
v0.2.2
OS version
macOS 15.4.1
Can you reproduce it again?
Yes, every time
Screenshots, recordings, or extra context
What happened?
When all todos in a session reach a terminal state (
completedorcancelled), the todo dock at the top of the composer remains visible indefinitely instead of disappearing. It becomes a persistent UI element that no longer serves a purpose.This is the third iteration of this area (see #297 and #321). The root cause is that the visibility logic was intentionally simplified in #297 to
todos().length > 0, which removed any awareness of completion status. The dock now stays visible as long as the backend sends a non-empty todo array, regardless of whether every item is done.Steps to reproduce
What did you expect to happen?
The todo dock should automatically hide after a short delay once all todos are in a terminal state, so the composer returns to a clean state.
PawWork version
v0.2.2
OS version
macOS 15.4.1
Can you reproduce it again?
Yes, every time
Screenshots, recordings, or extra context
todos().length > 0.