feat(sessions): show a pending-question indicator on session rows

Adds a per-session pending-question badge to sidebar rows, driven by the
live directory-store question state through a dedicated per-session
subscription channel so unrelated streaming never re-renders rows.

Collapsed parent rows roll up pending questions of hidden descendants
from their owning directory stores without bootstrapping them. Question
state is cloned on session delete/archive so badges clear when sessions
disappear. Adds the questionChangeCallbacks sync performance counter,
i18n keys for all locales, and unit tests for the subscription channel
and scope selection.

Fixes #2634
This commit is contained in:
Serhii Dziupin
2026-08-05 13:41:48 +03:00
parent 34c221b07f
commit c1ba631964
20 changed files with 343 additions and 21 deletions
+2
View File
@@ -531,6 +531,8 @@ export const dict: Record<I18nKey, string> = {
'sessions.sidebar.session.status.pinned': 'ピン留めされたセッション',
'sessions.sidebar.session.status.movingToWorktree': 'セッションを新しいworktreeへ移動中',
'sessions.sidebar.session.status.permissionRequired': '権限が必要です',
'sessions.sidebar.session.status.questionPendingSingle': '保留中の質問が1件あります',
'sessions.sidebar.session.status.questionPendingMany': '保留中の質問が{count}件あります',
'sessions.sidebar.session.status.activeFor': 'アクティブ時間 {duration}',
'sessions.sidebar.session.status.lastTurnDuration': '前回のターンの所要時間 {duration}',
'sessions.sidebar.session.subsessions.collapse': 'サブセッションを折りたたむ',