Files
gravity_control/docs/devlog/entries/20260324-003.md

1.8 KiB

DOM Observer /trigger-click 렌더링 순서 오작동 및 False Positive 프리징 해결 (v0.5.10)

  • 시간: 2026-03-24 17:50~18:20
  • Commit: HEAD (예정)
  • Vikunja: #514 관련 디버깅/핫픽스

결정 사항

  • 문제: "0.5.9 패치한 이후 화면이 펜딩되서 움직여지지않아" 라는 증상 확인.
    • v0.5.9에서 DOM 쿼리를 [role="button"] 등으로 확장했으나, 정규식이 /^Run/i 등으로 풀어진 상태여서 에디터 뷰의 "Run Test" 등 수많은 CodeLens 버튼들을 Agent의 트리거로 오인함.
    • 결과적으로 아무 조작도 하지 않았는데 계속 터미널 실행 대기상태(Pending)로 무한 진입하여 UI 화면이 프리징(Freeze)됨.
    • 특히 디스코드에서 Approve 명령을 내렸을 때도, DOM 트리상 상단에 우연히 "Run" CodeLens가 있으면 먼저 캡처되어 진짜 Agent 패널의 버튼을 클릭하지 못하고 엉뚱한 요소를 클릭하는 위험한 순위 불일치 버그까지 있었음.
  • 해결책 (Structural Context Filtering):
    1. 감지(Scan): 단순 정규식을 빡빡하게 변경하면 동적인 버튼 이름("Run script" 등)이 안 먹히는 부작용이 있으므로 느슨함을 유지하되, **발생 영역(DOM Context)**에 강제 필터를 부여.
      • isVSCodeMainWindow 및 노드 루트가 document.body인지를 체크하여, 에디터 본문 영역 안에서는 "Run", "Approve", "Accept" 캡처를 전부 무시.
    2. 제어(Trigger-click 우선순위): observer-script.tsdeepFindButtons() 내부 스캔 트리를 변경하여 findPanel()로 안티그래비티 패널을 1순위로 조회, 알림 Toast를 2순위, 본문 Document를 3순위로 탐색하게 강제하여 엉뚱한 버튼 클릭 사고를 100% 방지함.

미완료

  • 없음 (빌드 및 검증 완료)