You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[bug] Todo dock UI does not refresh after todowrite tool updates session todos #33063
The todo dock panel (SessionTodoDock) displays stale todo data from initial session load and does not re-render when the todowrite tool (packages/core/src/tool/todowrite.ts) updates session todos.
Root cause: serverSync().data.session_todo does not trigger SolidJS reactivity when the todo.updated event arrives. The createMemo depends on serverSync().data.session_todo[id], but if this property is mutated in-place (object property assignment without store.replace), SolidJS has no signal that the value changed. The TUI terminal version uses a different path (props.api.state.session.todo(session_id)) which is properly reactive via the @opencode-ai/state observable pattern.
Steps to reproduce
Open a session and let the model call todowrite with pending tasks. Todo dock shows correct initial state
The model calls todowrite again with updated tasks (e.g., marking some completed)
The todo dock still shows the old data from the first call
Only a full page reload shows the updated data
Expected behavior
The todo dock should re-render immediately when todowrite updates session todos, without requiring a page reload. The todo.updated event publisher should trigger a store-level reactivity update in SolidJS rather than an in-place mutation.
@LifetimeVip @Hona I fixed the issue with PR #33116.
The SessionTodoDock rendered its checkbox list with Solid's <Index>, which only re-renders when the array length or item references change. The global todo store updates via reconcile({ key: "id" }), which preserves item references for unchanged IDs — so <Index> saw stale items when only a todo's status or content changed. Switching to <For> (which diffs by value reference, like the working TUI sidebar at packages/tui/src/feature-plugins/sidebar/todo.tsx) makes the dock reactive to in-place updates.
Single-file fix in packages/app/src/pages/session/composer/session-todo-dock.tsx. TUI was unaffected — it already uses <For>.
I can take a look of the issues you mentioned first. But finally I think it's up to Opencode committers' decisions of how to handle PR for issues and features, to align with their development focus.
Activity
lexlian commentedon Jun 20, 2026
@LifetimeVip @Hona I fixed the issue with PR #33116.
The
SessionTodoDockrendered its checkbox list with Solid's<Index>, which only re-renders when the array length or item references change. The global todo store updates viareconcile({ key: "id" }), which preserves item references for unchanged IDs — so<Index>saw stale items when only a todo'sstatusorcontentchanged. Switching to<For>(which diffs by value reference, like the working TUI sidebar atpackages/tui/src/feature-plugins/sidebar/todo.tsx) makes the dock reactive to in-place updates.Single-file fix in
packages/app/src/pages/session/composer/session-todo-dock.tsx. TUI was unaffected — it already uses<For>.lexlian commentedon Jun 22, 2026
@LifetimeVip,
I can take a look of the issues you mentioned first. But finally I think it's up to Opencode committers' decisions of how to handle PR for issues and features, to align with their development focus.
我可以先看一下你提到到的Issue。但最终是Opencode项目的committer来决定如何处理issue或feature的PR,同他们的开发目标保持一致。
rekram1-node commentedon Jun 22, 2026
STOP SPAMMING ISSUES.