Repository navigation
chore: 의존성 보안 업데이트 및 CI·lint 정리 - #22
Merged
Merged
Conversation
Others 카테고리가 새로 생기며 Most Solved Categories 범례가 4개에서 5개로 늘어나 박스 하단이 빡빡해진 문제 수정. 범례 시작점을 위로 올리고 배경 박스를 키워 5개 항목의 상하 여백 균형을 맞춤.
SVG가 <img>로 렌더링되면(GitHub README, 메인페이지 미리보기) 브라우저가 외부 리소스를 불러오지 않아 Google Fonts @import가 무시되고, OS 기본 monospace 폰트(macOS Chrome은 Menlo, Safari는 Courier 등)로 표시되던 문제 수정. JetBrains Mono 가변 폰트를 카드에 쓰는 굵기(400~700)와 ASCII 문자만 남겨 서브셋한 뒤 base64 @font-face로 SVG에 직접 임베드하고, 서브셋 생성 스크립트와 폰트 라이선스(OFL)를 함께 추가. Claude-Session: https://claude.ai/code/session_01AGcght9Lc8cAYdvYCrdSzd
Vercel이 Node.js 20 지원을 종료해(2026-10-01) 배포가 실패하므로 package.json engines로 Vercel 빌드/함수 런타임을 24.x로 지정하고, CI 테스트도 같은 버전으로 맞춤. Claude-Session: https://claude.ai/code/session_01AGcght9Lc8cAYdvYCrdSzd
- 닉네임 등 외부 값을 SVG에 넣을 때 XML 이스케이프 (Try&Catch, DUck_< 카드가 깨지던 문제) - Dreamhack 검색어를 URL 인코딩 (p&p, #7851A9 등을 찾지 못하던 문제)하고, 검색 API가 50개까지만 돌려주므로 최대 5페이지까지 확인 - 사용자를 찾지 못하거나 조회에 실패하면 JSON 대신 안내 카드(SVG, 200)를 반환해 README에 깨진 이미지 대신 이유를 표시 (GitHub camo는 200이 아닌 응답을 502로 바꿈). 찾지 못한 닉네임은 10분간 캐시 - 캐시된 ID가 404일 때 캐시를 지우고 다시 검색하도록 재시도 로직 수정 - 프로필 링크를 숫자 ID 주소로 생성 (/api/user-id 추가, 메인 페이지와 README 안내 수정) - 메인 페이지 미리보기와 생성 코드의 닉네임 인코딩, 입력값 앞뒤 공백 제거 - Dreamhack 요청마다 10초 타임아웃을 두고 함수 최대 실행 시간을 60초로 설정 Claude-Session: https://claude.ai/code/session_01AGcght9Lc8cAYdvYCrdSzd
- next, eslint-config-next 14.2.24 -> 14.2.35 (14.x 최신 보안 패치)와 npm audit fix로 하위 의존성 업데이트. 운영 의존성 취약점 4개 -> 2개 (남은 next 권고는 15.5 이상에서만 수정되며 미들웨어·i18n·App Router· next/image 등 이 앱에서 쓰지 않는 기능 대상) - GitHub Actions를 Node 24 기반 버전으로 업데이트 (checkout v7, setup-node v7, vercel-action v42)해 Node 20 지원 종료 경고 해소 - 동작하지 않던 lint 설정 수리: Next 14의 next lint가 인식하지 못하는 flat config(없는 패키지를 import)를 .eslintrc.json으로 교체하고 CI에 lint 단계 추가 - 사용하지 않는 node-fetch, msw, @testing-library/react, eslint-plugin-prettier와 @vercel/kv 목, verify-tests.sh 제거 Claude-Session: https://claude.ai/code/session_01AGcght9Lc8cAYdvYCrdSzd
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
배경
npm audit에서 next 14.2.24의 보안 권고(critical 포함)와 하위 의존성 취약점 다수npm run lint가 동작하지 않음: Next 14의next lint는 flat config(eslint.config.mjs)를 인식하지 못해 설정 마법사가 대화형으로 뜨고, 그 설정 파일은 존재하지 않는 패키지(eslint-plugin-next,nextConfignamed export)를 import변경 사항
의존성
npm audit fix(호환 범위) 및 brace-expansion 1.1.11 → 1.1.21CI
vercel-args(--prod)를 쓰는 CLI 모드와preview-url출력은 그대로lint
eslint.config.mjs를 Next 14 표준.eslintrc.json(next/core-web-vitals + prettier)으로 교체<img>는 모두 API가 만드는 동적 SVG 카드라@next/next/no-img-element는 끔정리
transformIgnorePatterns, 설치되지 않은@vercel/kv목, Vercel에서 쓰지 않는scripts/verify-tests.sh제거테스트
npm ci(새 lockfile), jest 88개,tsc --noEmit,next build,npm run lint(경고·오류 없음) 통과next start후/,/api/stats,/api/most-solved,/api/user-id,/api/warmup동작 확인🤖 Generated with Claude Code
https://claude.ai/code/session_01AGcght9Lc8cAYdvYCrdSzd