From 00acc72aa279e39c2ac1549fa394d5d4958f48f8 Mon Sep 17 00:00:00 2001 From: seonghobae <8172694+seonghobae@users.noreply.github.com> Date: Wed, 5 Aug 2026 14:00:34 +0000 Subject: [PATCH 1/5] =?UTF-8?q?=E2=9A=A1=20Bolt:=20LCP=20=EC=9D=B4?= =?UTF-8?q?=EB=AF=B8=EC=A7=80=20=EC=84=B1=EB=8A=A5=20=EC=B5=9C=EC=A0=81?= =?UTF-8?q?=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .jules/bolt.md | 4 ++++ CHANGELOG.md | 1 + index.html | 6 ++++-- tests/test_styles.py | 7 +++++-- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/.jules/bolt.md b/.jules/bolt.md index c10fb9b..d3a0f65 100644 --- a/.jules/bolt.md +++ b/.jules/bolt.md @@ -12,3 +12,7 @@ ## 2026-07-10 - Remove unnecessary DOMPurify for performance **Learning:** 애플리케이션이 `textContent`와 같은 안전한 DOM API만 사용하고 `innerHTML` 등의 위험한 싱크를 사용하지 않는다면 DOMPurify와 같은 라이브러리를 통해 Trusted Types 정책을 생성할 필요가 없음. **Action:** 불필요한 번들 다운로드 및 스크립트 실행을 방지하기 위해 사용하지 않는 라이브러리를 식별하고 제거할 것. + +## 2026-08-05 - LCP (Largest Contentful Paint) Image Optimization +**Learning:** Adding `decoding="async"` to critical above-the-fold LCP SVG images delays their rendering and degrades the LCP metric, as the browser shifts decoding to a background thread instead of processing them immediately alongside the main content. +**Action:** Remove `decoding="async"` from non-lazy loaded critical images (like the top logo and hero graphics) while maintaining it on `loading="lazy"` off-screen images to prioritize main thread rendering speed. diff --git a/CHANGELOG.md b/CHANGELOG.md index ca1847a..49eae22 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # CHANGELOG ## [Unreleased] +- **성능 최적화**: LCP(Largest Contentful Paint) 개선을 위해 화면 상단의 주요 SVG 이미지(로고, 히어로 그래픽)에서 `decoding="async"` 속성을 제거하여 백그라운드 스레드 지연 없이 즉시 렌더링되도록 수정했습니다. - **UX/접근성 개선**: 프로젝트 카드의 클릭 영역을 카드 전체로 확장하여 사용자 편의성을 높였습니다. 태그를 확장하는 대신 가상 요소(pseudo-element) 겹침 방식을 사용하여 스크린 리더 접근성을 유지했습니다. - **보안 개선**: 컴포넌트 갤러리의 인라인 스크립트와 스타일을 외부 파일로 분리하고, 엄격한 Content-Security-Policy를 적용해 XSS 방어를 강화했습니다. - **성능 회귀 복원**: 오프스크린 `.section` 렌더링을 `content-visibility: auto`로 지연하고, 일반 섹션은 600px·콘텐츠가 큰 DIKW/projects 섹션은 1000px의 `contain-intrinsic-size` placeholder를 유지해 초기 렌더링 비용과 스크롤바 이동을 함께 줄였습니다. diff --git a/index.html b/index.html index fd888db..a2dbbd7 100644 --- a/index.html +++ b/index.html @@ -29,7 +29,8 @@