2026-08-07
요약 (AI 작성)
하단 상태표시줄을 실제로 세우고, 스크롤 이관을 탐색기·소스 컨트롤까지 넓힌 날입니다. SB1-S3a 로 좌/우 슬롯 배치를 순수 로직으로 만든 뒤 좌측에 git 브랜치와 작업 경로를, 우측에 알림 수와 실행 중 에이전트 수를 올렸고(S3b~S3e), 막힌 에이전트를 구분해 표시하도록 했습니다. 이어 상태표시줄을 typed tree 소비자로 만들고 클릭·호버를 붙였으며, 높이를 텍스트 행에서 파생해 위아래 여백을 주고 호버 배경에 좌우 여백을 넣었으며 경로가 길면 끝이 아니라 중간에서 생략하도록 했습니다. hit-test 가 그려진 rect 와 같은 자리인지 강제하는 판정자도 세웠습니다. 여기서 적대적 검증이 라운드를 거듭하며 결함을 계속 끄집어냈습니다 — 상호작용 버퍼 크기의 상수 파생, 에이전트 집계를 한 번 순회로 모으고 비활성 탭까지 세는지 확인, 항목이 사라지면 tree 와 호버도 함께 비우기, 모달이 떠 있으면 클릭을 비켜 주기, hover 가 다른 영역의 hover 해제를 가로채지 않기, 휠 가드가 notice 해제를 가로채지 않기, 상태바로 도크를 열 때 레이아웃 후속까지 하기가 3라운드부터 9라운드까지 순서대로 나왔습니다. quick terminal 에 상태바가 서던 것, 창 크기 변경 후 호버가 남던 것, 빈 구간에서 텍스트 커서가 뜨던 것, 폭에 따라 항목 우선순위가 뒤집히던 것도 함께 고쳤습니다.
스크롤 쪽은 SV2·SV3 을 진행했습니다. SV2 계획을 탐색기 코드 조사 결과로 다시 쓰고 판정자를 Lab 이 아니라 제품 AppSession 하네스로 정한 뒤, SV2-0 으로 행 창에 판정자를 세우고 SV2a 를 셀 pane scissor 방식으로 정했습니다. 도중 pane clip 전제가 틀렸음을 기록하고 앞서 적은 "함정"을 정정하는 등 설계를 실측에 맞춰 계속 고쳤습니다. 구현은 셀 격자 본문 한 구간을 자르는 ABI(SV2a-1)를 낸 뒤 탐색기 pane 을 그 seam 의 첫 소비자로 만들고(SV2a-2) 스크롤을 행에서 픽셀로 옮겼으며(SV2a-3), SV2b 로 탐색기 스크롤바를 공용 ScrollArea 선언으로 이관했습니다. SV3a 는 소스 컨트롤 목록을 픽셀 스크롤로 옮겼고 SV3b 로 스크롤바를 내면서 발행 상태를 두 뷰가 공유하게 했습니다. follow 와 clamp 가 같은 창을 보는지, hit 영역이 반열린 구간인지, 드래그 capture 가 자기 스냅샷에서만 살아남는지 등 경계마다 판정자를 붙였습니다.
렌더러에서는 한 번도 돌지 않던 scissor 를 살렸습니다. 셀이 자기 clip 을 들도록 바꾸고(ABI v169), 사이드바 셀 scissor 산술을 .m 에서 Zig 로 옮겼습니다(ABI v168). 그 밖에 선택 해제 전이를 만들어 잔여 하이라이트를 없애고, 지연 스크린샷이 실제로 찍히게 고쳤으며, strip ABI 를 가장자리로 바꾸는 방향과 "지금 안 하는 이유"를 문서에 남겼습니다.
커밋
ohah/maru
- fix(renderer): 셀이 자기 clip을 들게 해 한 번도 돌지 않던 scissor를 살린다 (ABI v169)
- fix(input): 선택 해제 전이를 만들어 잔여 하이라이트를 없앤다
- fix(chrome): quick terminal에 상태바가 서던 것을 막는다
- fix(chrome): 상태바 항목 우선순위가 폭에 따라 뒤집히던 것을 고친다
- test(chrome): 상태바가 spawn grid에 흡수되는지 못박는다
- fix(chrome): 창 크기가 바뀌어도 상태바 호버가 남던 것을 고친다
- fix(chrome): 빈 상태바 구간에서 텍스트 커서가 뜨던 것을 고친다
- fix(chrome): 상태바로 도크를 열 때 레이아웃 후속까지 한다(적대적 검증 9라운드)
- fix(chrome): 상태바 휠 가드가 notice 해제를 가로채지 않게 한다(적대적 검증 8라운드)
- fix(chrome): 상태바 hover가 다른 영역의 hover 해제를 가로채지 않게 한다(적대적 검증 7라운드)
- fix(chrome): 모달이 떠 있으면 상태바 클릭을 비켜 준다(적대적 검증 6라운드)
- fix(chrome): 항목이 사라지면 상태바 tree와 호버도 함께 비운다(적대적 검증 5라운드)
- test(chrome): 에이전트 집계가 비활성 탭까지 세는지 못박는다(적대적 검증 4라운드)
- refactor(chrome): 에이전트 집계를 한 번 순회로 모은다(적대적 검증 3라운드)
- fix(chrome): 상태바 상호작용 버퍼 크기를 상수에서 파생한다(적대적 검증)
- feat(chrome): 상태표시줄에 막힌 에이전트를 구분해 올린다
- fix(chrome): 적대적 검증이 찾은 소스 컨트롤 스크롤 결함 둘을 고친다
- test(chrome): 도크 목록과 상태표시줄의 경계를 판정자로 고정한다
- feat(chrome): 소스 컨트롤 목록을 픽셀 스크롤로 옮긴다 (SV3a)
- feat(chrome): 탐색기 스크롤바를 공용 ScrollArea 선언으로 옮긴다 (SV2b)
- fix(chrome): 상태표시줄 호버 배경에 좌우 여백을 준다
- feat(chrome): 상태표시줄을 typed tree 소비자로 만들고 클릭·호버를 붙인다
- test(boundary): SV2a-3로 바뀐 app_session 반사 인벤토리 digest를 갱신한다
- feat(chrome): 탐색기 스크롤을 행에서 픽셀로 옮긴다 (SV2a-3)
- docs(chrome): strip ABI를 가장자리로 바꾸는 방향과 "지금 안 하는 이유"를 남긴다
- refactor(chrome): 사이드바 셀 scissor 산술을 .m에서 Zig로 옮긴다 (ABI v168)
- test(chrome): 상태표시줄 hit-test가 그려진 rect와 같은 자리인지 강제한다
- fix(chrome): 상태표시줄 높이를 텍스트 행에서 파생해 위아래 여백을 준다
- fix(chrome): 지연 스크린샷이 실제로 찍히게 하고, 그 사실을 문서에 맞춘다
- docs(chrome): 하단 상태표시줄 사양을 적고 ML-GEO의 예측 서술을 실제와 맞춘다
- feat(chrome): 상태표시줄 우측에 실행 중 에이전트 수를 올린다 (SB1-S3e)
- feat(chrome): 탐색기 pane을 v147 seam의 첫 소비자로 만든다 (SV2a-2)
- feat(chrome): 상태표시줄 우측에 알림 수를 올리고, 배경이 텍스트를 덮던 결함을 고친다 (SB1-S3d)
- docs(chrome): SV2a-2 설계를 적고 앞서 적은 "함정"을 정정한다
- feat(chrome): 셀 격자 본문 한 구간을 자를 수 있게 ABI를 낸다 (SV2a-1, 값 0)
- feat(chrome): 상태표시줄 좌측에 작업 경로를 올린다 (SB1-S3c)
- test(chrome): 드래그 capture가 자기 스냅샷에서만 살아남는지 판정한다
- test(chrome): 탐색기 스크롤바 hit 영역이 반열린 구간임을 판정한다
- test(chrome): 탐색기 스크롤의 남은 경계 넷을 판정한다
- test(chrome): follow의 위 분기와 스크롤바 칸 예약을 판정한다
- test(chrome): follow·clamp도 같은 창을 보는지 판정한다
- test(chrome): 적대적 검증이 드러낸 hit-test 경계 셋에 판정자를 세운다
- docs(chrome): SV2a를 A(셀 pane scissor)로 정하고 착수 함정을 적는다
- docs(chrome): SV2a의 pane clip 전제가 틀렸음을 기록한다
- test(chrome): SV2-0 — 탐색기 스크롤 행 창에 판정자를 세운다
- feat(chrome): 상태표시줄 좌측에 git 브랜치를 올린다 (SB1-S3b)
- feat(chrome): 상태표시줄 항목의 좌/우 슬롯 배치를 만든다 (SB1-S3a, 순수)
- docs(chrome): SV2-0 판정자를 Lab이 아니라 제품 AppSession 하네스로 정한다
- docs(chrome): SV2 계획을 탐색기 코드 조사 결과로 다시 쓴다
- feat(chrome): 하단 상태표시줄 높이를 세운다 (SB1-S2b)