Releases: FilteringDev/NamuLink
20.5.0
Tampermonkey & AdGuard CoreLib based 앱의 유저스크립트 매니저가 지원하는 @connect metablock tag를 사용하여 이 메타블록 태그를 지원하는 유저스크립트 매니저가 GM.xmlHttpRequest API에 대한 콜을 더욱 잘 처리할 수 있도록 했습니다.
참고:
- https://gall.dcinside.com/mgallery/board/view/?id=adguard&no=9516&page=1
- https://www.tampermonkey.net/documentation.php?q=connect#meta:connect
주요 commits:
Full Changelog: 20.4.0...20.5.0
20.4.0
- feat: add virtual file system support and entry point handling
- feat: implement caching mechanism for OCR client and enhance image data handling
나무위키의 백엔드가 가끔씩 파워링크 HTMLElement를 구성하는 compoments의 이미지 데이터 (주로 HTMLImageElement)에 대한 유저스크립트의 GM.xmlHttpRequest async method를 통한 요청을 Fetch metadata headers 중에서 forbidden request headers을 검사하는 듯한 유효성 검사로 거부하고 있습니다.
위 문제를 완화 시도하면서도 같은 이미지 URL에 대한 OCR 컴퓨팅 코스트를 줄이기 위해 OCR 컴퓨팅 결과 데이터와 로우 이미지 데이터를 브라우저 인-메모리에 캐싱하는 방법(자동으로 웹 브라우저 엔진이 GC 1 하는 WeakMap이 아닌 Map을 사용)을 사용했습니다.
만약 놓친 파워링크가 있다면 웹 페이지 새로고침 및 빠르게 웹 페이지의 맨 하단과 맨 상단을 스크롤 하는 방법을 시도해보시기 바랍니다.
Full Changelog: 20.3.0...20.4.0
20.3.0
이번 업데이트는 필터링 관련이 아닌 빌드 스크립트 업데이트입니다. esbuild가 아닌 rspack으로 변경했습니다.
Full Changelog: 20.2.1...20.3.0
20.2.1
- fix: update regex pattern in Promise.then handling for improved accuracy
- fix: add origin check in message event listener for improved security
타켓팅된 Promise.prototype.then call의 function 파라미터 2개 중 어느 한개에서 내부 function의 파라미터 표현식이 -가 들어가 있을 때 타켓팅되지 않았던 이슈를 PL2PromiseThenRegexs 업데이트로 해결했습니다.
Full Changelog: 20.2.0...20.2.1
20.2.0
더 이상 setTimeout으로 모바일 환경에서의 나무위키 문서 목차 근처 및 분류 헤더 근처에서 지연된 파워링크 생성을 나무위키 프론트엔드의 은폐된 setTimeout method call로 인해 차단할 수 없으므로, Promise.prototype.then을 대신 mock 하였습니다.
대신, 이로 인해 placeholder가 생기는 이슈가 있으나 setTimeout(() => { ... }, 250)으로 placeholder 처리 함수를 포함시켰기에 문제가 없습니다.
Full Changelog: 20.1.8...20.2.0
20.1.8
- fix: adjust mutation threshold for settled events to improve detection
- fix: enhance mutation detection logic to consider added and removed nodes
- fix: adjust mutation threshold for settled events to improve detection on mobile
- fix: enhance mutation detection logic to include next and previous siblings
- fix: add additional delay to settled timer for improved mutation handling
모바일 Chromium 브라우저 계열에서 MutationObserver의 MutationRecord[]에 대한 이벤트 트리거 최소 조건을 완화 및 지연(QuietMs * 3)된 ArmSettledTimer을 실행하여 SPA warm navigation 안정화 후 몇 십초 이내로 나무위키 문서 근처 분류 헤더에서 파워링크가 다시 부활하는 이슈를 해결했습니다.
Full Changelog: 20.1.6...20.1.8
20.1.6
스마트폰 디스플레이(width가 height 보다 크게 작은 경우)에 열린 나무위키 웹 페이지에서는 viewport의 window.document.body.getBoundingClientRect()의 width가 500 이하가 될 수 있습니다.
따라서, window.document.body.getBoundingClientRect()의 width이 500을 초과한 경우에만 빠른 특정 인물(person)의 기본 프로필 테이블의 HTMLElement.prototype.getBoundingClientRect() 검사를 진행하고 그러지 않은 경우 스킵한 뒤 다른 방법으로 검사하게 수정했습니다.
Full Changelog: 20.1.5...20.1.6
20.1.5
XOR 거리 계산 기반 OCR이 각 국가들의 국기를 제대로 인식하지 못하고 모바일과 데스크톱 관계 없이 넓은 가로폭 해상도을 가진 브라우저 탭에서 나무위키 문서가 열 린 경우, 특정 인물(person)의 기본 정보 테이블을 잘못 숨기는 이슈를 해결했습니다.
Firefox와 Chromium 기반 브라우저 모두 해당됩니다.
Full Changelog: 20.1.4...20.1.5
20.1.4
SPA warm navigation (나무위키내 문서에서 다른 문서로 이동) 하는 경우, URL 변경 감지로 지연된 handler function로 handler를 한번 더 실행하게 수정하였습니다. 이로 인해 vue:settle event 가 트리거되지 않았거라 예상되는 https://namu.wiki/w/...?from= 이슈를 해결하였거라고 판단됩니다.
Full Changelog: 20.1.3...20.1.4
20.1.3
나무위키 웹 사이트에서 SPA warm navigation (문서에서 다른 문서로 이동) 하고 Vue.js 랜더링이 완료되었는지 추측하는 vue:settle 이라는 커스텀 Event를 또 우만레가 저격했습니다.
그래서 MutationObserver 간 최소 간격을 250 ms에서 75 ms 로 변경하고 성능 과부하 방지를 위해서 간격 타이머를 초기화하는 조건을 동시 Mutations 들이 25개 이상있어야 초기화하도록 수정했습니다.
Full Changelog: 20.1.2...20.1.3