콘텐츠로 이동

0004. Claude 상태를 모을 때의 우선순위는 자리마다 다르게 둔다

한 worktree나 프로젝트에 터미널 탭이 여럿이면 그 안의 Claude 상태도 여럿이다. 사이드바의 worktree 줄, 새로 더하는 프로젝트 줄, 화면 아래 상태 바 모두 여러 상태를 점 하나(또는 개수)로 줄여 보여줘야 하는데, 여러 상태 가운데 하나를 고르는 규칙이 자리마다 다를 수 있다.

worktree 줄은 지금 “작업 중”을 앞세운다. 돌고 있다는 사실이 먼저 보여야 그 worktree를 열어 볼 이유가 된다는 것이 지금 코드의 근거다. 프로젝트 줄은 이번에 새로 생기는 자리로, 접힌 프로젝트나 지금 보지 않는 worktree까지 모으는 범위가 넓다.

worktree 줄은 “작업 중”을 앞세우고(working-first), 프로젝트 줄은 “권한 대기”를 앞세운다(permission-first). 상태 바는 작업 중과 권한 대기를 각각 따로 세므로 우선순위가 필요 없다. 이 규칙은 claudeStatusSummary.ts의 pickStatus(statuses, order) 하나로 모아, 화면 코드는 결과를 그리기만 한다.

  • 모든 자리에서 “권한 대기”를 앞세운다. 규칙이 하나로 줄어 더 단순하다. 그러나 worktree 줄에서 “돌고 있다”는 신호가 권한 대기 탭 하나에 가려진다. worktree 줄은 지금 그 worktree를 열어 볼지 판단하는 자리라 이 신호가 먼저 보여야 한다고 보아 기각했다.
  • 채택안(자리마다 다른 우선순위): worktree 줄은 좁은 범위(그 worktree 하나)를 보므로 “돌고 있다”가 우선이고, 프로젝트 줄은 넓은 범위(프로젝트 전체, 접힌 것 포함)를 모으므로 “손을 대야 하는 쪽”이 우선이어야 한다고 보았다. 규칙이 둘로 늘지만 pickStatus에 order 매개변수 하나로 표현되므로 유지 비용이 크지 않다.
  • worktree 줄의 우선순위와 모양은 지금과 같다. 사용자에게 보이는 기존 동작이 바뀌지 않는다.
  • 프로젝트 줄과 상태 바(권한 대기 개수)는 권한 대기를 우선해, 접힌 프로젝트에서도 손이 가야 하는 상태를 놓치지 않는다.
  • 다음에 상태를 보여주는 자리가 더 생기면, 그 자리의 성격(좁은 범위인지 넓은 범위인지, 무엇을 먼저 보여줘야 하는지)에 맞춰 pickStatus의 order를 고르면 된다.