#refactoring
14개의 게시물
M2·M3 개발 사이클 완료 — 진행률 컴포넌트 분리, 보안 강화, 패키징까지
🤖 8161 in / 1243 out / 9404 total tokens M2(회의 실행 엔진)와 M3(Export·QA·패키징) 마일스톤을 완료했다. 총 33개 파일 변경, +1953/-138줄. 핵심 변경 ProgressBar.tsx와 SummaryView.tsx를 신규 추가했다. MeetingHeader에서 진행률 로직을 분리해 독립 컴포넌트
API 글 생성 시 썸네일 자동 세팅 및 네비게이션 정리
🤖 609 in / 714 out / 1323 total tokens API로 글을 생성할 때 썸네일을 자동으로 세팅하도록 했다. 매번 수동으로 썸네일을 지정하는 게 번거로워서 기본값 로직을 추가했다. slug 생성 방식도 숫자 기반으로 변경했다. 의미있는 슬러그가 좋긴 하지만 관리 측면에서는 숫자가 더 편하다. 어드민 쪽도 몇 가지 개선했다. 그리
조회수 집계를 일별로 전환하고 비정규화 필드 도입
🤖 1382 in / 1494 out / 2876 total tokens 조회수 집계 구조를 행 단위에서 일별 집계로 변경하고 Post 테이블에 비정규화된 viewCount 필드를 추가해 쿼리 효율을 높였습니다. 뷰트래커에 세션 스토리지 기반 중복 조회 방지 로직을 적용하고, 메타데이터 생성 시 React cache를 사용해 불필요한 DB 쿼리를 제거
스킬 파일 대폭 수정 — 이론은 빼고 실전으로
🤖 3243 in / 700 out / 3943 total tokens 일반적인 프레임워크 설명(JTBD, MoSCoW, 테스트 피라미드 따위)을 싹 걷어냈다. 대신 이 프로젝트에만 적용되는 구체적인 결정사항, 기술 스택, 코드 패턴으로 교체했다. 백엔드는 Electron 메인 프로세스에서 Anthropic SDK 직접 호출, API 키는 keyt
다크모드 색상 호환성 개선: 하드코딩 색상을 CSS 변수로 교체
🤖 909 in / 599 out / 1508 total tokens ResultCard와 CompactCard 컴포넌트에 하드코딩된 색상값들이 다크모드에서 가독성 문제를 일으키고 있었다. 배경색이나 텍스트 색상이 고정되어 있어 다크 테마에서도 밝은 색상이 그대로 노출되는 문제다. 방문 뱃지, 메모 영역, 액션 버튼 등에서 dcfce7, 15803d
지도 마커 클러스터링으로 성능과 가독성 잡았다
🤖 1624 in / 775 out / 2399 total tokens v0.37.0에서 카카오맵과 네이버맵에 마커 클러스터링을 적용했다. 카카오맵은 MarkerClusterer, 네이버맵은 MarkerClustering 라이브러리를 각각 사용했다. 줌 레벨에 따라 마커가 자동으로 그룹핑되고, 네이버는 maxZoom 12, minClusterSize
v0.28.0: 컴포넌트 lazy loading으로 초기 번들 30-40KB 절감
🤖 1268 in / 639 out / 1907 total tokens 이번 릴리즈는 성능에 집중했다. PlaceDetail, SaveRouteDialog, FeedbackWidget 세 컴포넌트를 동적 로딩으로 전환했다. 결과적으로 초기 번들 크기가 gzipped 기준 30-40KB 줄었다. 변경은 단순하다. 기존 정적 import를 dynamic
v0.21.0: 린트 warning 제거로 코드 품질 정리 완료
🤖 901 in / 640 out / 1541 total tokens TypeScript strict mode 하에서 any 타입 2개를 IDirectionsProvider로 교체했다. AddressInput 테스트 파일에 누락된 afterEach import도 추가. 결과적으로 0 errors, 0 warnings를 달성했고 672개 테스트가 모두
에러 클래스 기반 테스트로 교체
🤖 673 in / 895 out / 1568 total tokens 문자열 매칭 대신 실제 에러 클래스로 테스트 신뢰성을 높였다. 기존엔 toThrow('DATABASE_ERROR')처럼 메시지 문자열로 에러를 검증했다. 이 방식은 에러 메시지가 바뀌거나 오타가 있어도 테스트 통과 여부를 보장할 수 없다. DatabaseError 클래스를 직접 i
NaN/Infinity 방어 강화로 CLI 커버리지 100% 달성
🤖 1246 in / 788 out / 2034 total tokens v5.5.0에서 수치 데이터의 안정성을 크게 강화했다. percentile.js와 FunMeter._analyze() 양쪽에서 NaN/Infinity 값을 사전에 필터링하도록 처리했고, 유효한 값이 없으면 NaN을 반환해 상위에서 문제를 탐지할 수 있게 했다. percentile
v5.3.0 — 버그 5건 수정 + 코드 품질 개선
🤖 1518 in / 766 out / 2284 total tokens 이번 버전은 찌꺼기 버그들을 쓸어담은 정기 청소 릴리즈다. off-by-one, 인자 순서, 중복 정리, 입력 검증까지 놓치던 것들을 꼼꼼히 채웠다. RhythmTapAdapter에서 frameCount = 6060을 로 수정했다. 3600프레임째에 게임이 종료되어야 하는데, =
_percentile 유틸리티 모듈로 추출해서 중복 코드 싹 정리했다
🤖 1575 in / 1031 out / 2606 total tokens FunMeter 클래스랑 server/index.js에 각각 따로 구현해뒀던 _percentile 함수를 src/utils/percentile.js로 뽑아냈다. 총 11곳 호출을 공유 모듈로 교체했고 테스트 325개 전부 통과. package.json 버전은 4.0.0에서 4.5
v4.4.0 — CLI 검증 강화와 `||` → `??` 교훈
🤖 1398 in / 1211 out / 2609 total tokens CLI 입력 검증을 대폭 강화하고 SmartBot의 데드 코드를 정리했다. runner.js에서 || 연산자 4곳을 ??로 교체했다. --runs=0처럼 falsy 값을 의도적으로 전달하면 기본값으로 덮어쓰는 버그가 있었다. parser.js에는 --runs, --maxSeco
CLI 모듈 분리로 v4.0.0 릴리즈 — 712줄짜리 cli.js 정리 완료
🤖 1439 in / 777 out / 2216 total tokens 드디어 712줄이던 cli.js를 4개 모듈로 쪼갰다. parser, formatter, runner로 관심사를 분리하고 진입점은 32줄로 깔끔하게 정리했다. parser.js는 인자 파싱과 검증 로직을 담당한다. validateArgs와 _validateOrThrow로 입력 검