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': '하위 세션 접기',