1.6 KiB
1.6 KiB
Fix gravity bridge Discord Relay AI Chat Body by patching DOM extraction and Regex literals
- 시간: 2026-04-10 20:30~21:10
- Vikunja: #613 → done
트러블슈팅: Typescript 백틱 안의 정규식 리터럴 파괴 현상
- 증상: JSDOM 가상 모의 환경에서 테스트를 돌려보니, 렌더링 화면이나 타겟 Text가 정확히 매치됨에도 정규식이 조건문에서
false를 내뱉으며 Button Matching을 건너뛰는 현상 발생. - 원인:
observer-script.ts를.js로 변환할 때, Typescript 컴파일러가return \...`템플릿 리터럴 내부의/^(?:Always\s*)?Allow\b/i구문을 해석하면서,\s를 일반 문자s로,\b를 아스키 특수문자Backspace(0x08)`로 직렬화하여 클라이언트에 꽂아버리는 문제가 있었음. 이로 인해 정규식 자체가 오염되어 어떠한 버튼도 매칭하지 못하고 있었음. - 해결:
observer-script내부의 정규식 리터럴 내부의 이스케이프 문자(\s,\b등)를 전부 이중 백슬래시(\\s,\\b)로 패치하여 브라우저에서 스크립트가 실행될 때 올바른 정규식 파서가 열리도록 수정 보완함.
결정 사항: 웹뷰 내 로컬 fetch CSP 패치 통과
html-patcher.ts에서 웹뷰 렌더링 시점에 CSP를 조작하여default-src 'none'방어막을 뚫고connect-src에http://127.0.0.1:* wss://127.0.0.1:*를 주입하도록 강제 적용함. 이를 통해 Bridge 서버로의 로컬 HTTP 통신이 활성화됨.
완료 상태
VSCode VSIX (0.5.27) 빌드 완료 및 릴리스 커밋 패키징 수행.