refactor(viewer): batch history rows before live DOM insertion - #554
refactor(viewer): batch history rows before live DOM insertion#554seonghobae wants to merge 5 commits into
Conversation
- `demo.js`의 `renderHistory` 루프 내에서 발생하는 개별 DOM 노드 삽입을 `DocumentFragment`를 활용하여 일괄 처리하도록 변경했습니다. - 이를 통해 브라우저의 리플로우(reflow)와 리페인트(repaint)를 최소화하여 대량의 렌더링 시 성능이 향상됩니다. - 프로덕션 코드와 연동된 Node.js 테스트 환경(`mock-dom.mjs`, `dom-utils.test.mjs`, `demo-integration.test.mjs`)에 `MockDocumentFragment` 동작을 구현 및 연동하여 100% 테스트 커버리지를 유지합니다.
|
👋 Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Scope
Build history rows in a
DocumentFragmentand publish that fragment to#history-bodythrough one live-DOMappendChildcall per render. The mock DOM implements fragment-flattening semantics so the existing executable JS suite can exercise the same publication shape.This PR establishes a structural batching contract only. It does not claim a measured browser p95/paint/reflow improvement yet: the generated PR description inferred performance from implementation shape without browser profiling, realistic history-size distribution, or current-head E2E timings.
Review → repair
The generated test updates only made
DocumentFragmentavailable to the mock. They did not prove that multiple rows cross the livehistory-bodyboundary in one operation, so a regression could restore row-by-row publication while the tests still passed.Normal descendant
e4400a392a99a56bc6dc7b70226af2109af47047strengthensdemo-integration.test.mjswith two completed history records and instruments the actualhistory-body.appendChildboundary. Acceptance is now:history-body.appendChildoccurs for the render;The implementation/test history was not destructively rewritten to manufacture a historical RED. The original generated implementation preceded this regression; the descendant adds the missing executable contract and records that limitation honestly.
Exact current authority
main@06633a25109c62e24a7015ae04fb9f6e0a246f7ee4400a392a99a56bc6dc7b70226af2109af4704733940807694: queued33940807668: queued33940807693: queued33940807678: queued33940807714: queuedQueued/predecessor evidence is non-passing. Promotion additionally requires the repository-authoritative
mvn -B --no-transfer-progress verifyon this exact head and browser profiling/E2E evidence before any buyer-visible performance claim is added to docs, CHANGELOG, or release material.UI Delivery Gate
No self-approval, bypass, force update, destructive rebase, dummy rerun commit, sample-size manipulation, or synthetic performance claim.