v 1.0.3#396
Conversation
- 모든 소셜 로그인 버튼을 동일한 SocialLoginButton(풀 버튼) 형태로 통일 - Apple 버튼 다크모드 대응: 전용 색상 토큰(apple-button/apple-button-dark) 추가 - Apple 로고 SVG fill을 currentColor로 변경하여 colorClassName 지원 - 미사용 SocialLoginIconButton 컴포넌트 및 "또는" 구분선 제거 Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* fix(mobile): 디자인 스펙에 맞게 oklch 색상 값 교정 - gray 5~10 L값 교정 (반올림으로 인한 어둡게 렌더링 수정) - gray-10 보라빛 틴트 제거 (C=0.005 H=285 → 0) - main/secondary/error 브랜드 색상 스펙 hex 정밀 매칭 - dark white 따뜻한 틴트 제거 (H=29 → 무채색) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(mobile): 다크 모드 background/surface 색상 틴트 제거 - --background: 따뜻한 틴트(C=0.0056, H=29) 제거 → 무채색 - --surface: 보라빛 틴트(C=0.005, H=285) 제거 → 무채색 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* feat(mobile): 주간 달성 배지 기능 추가 - 주간 완료율 기반 배지 시스템 (perfect/almost/completed) - 상장 스타일 요약 카드 및 배지 목록 UI - Achievement 모델, 서비스, 매퍼, 쿼리, 뷰모델 구현 - DI 컨테이너 등록 및 마이페이지 내비게이션 연결 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs(mobile): ViewModel 패턴 아키텍처 문서 추가 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(mobile): 긴 텍스트 잘림 방지를 위한 레이아웃 수정 - 리포트 헤더 날짜 범위 flex-wrap 적용 - 프리미엄 배너, 제안 목록 텍스트 정렬 및 줄바꿈 전략 추가 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore(mobile): 달성 배지 UI 가이드 문서 제거 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor(mobile): 달성 배지 연도를 현재 연도 자동 계산으로 변경 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(mobile): weekly-badge 관련 로깅 추가 * refactor(mobile): 배지 이미지를 webp 포맷으로 변환 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs(mobile): ViewModel 예외 케이스 가이드 추가 단순 변환은 select에서 인라인 처리 가능하다는 예외 케이스 문서화 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(mobile): 주간 배지 상세 페이지 추가 - detail API 연결 (service + query key + query options) - achievements/[year]/[week] 상장 카드 상세 화면 - 리스트 아이템 탭 → 상세 네비게이션 + ListRow 리팩토링 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor(mobile): CertificateBorder 공용 컴포넌트 분리 AchievementSummaryCard에서 CertificateBorder를 별도 파일로 추출하여 상세 페이지와 리스트 요약 카드에서 공유 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: 김용민 <dydals3440@gmail.com>
* refactor(api): scheduler 내부 정리 및 WeeklyAchievement catch-up 추가 - ITimezoneStrategy 인터페이스 추출, 모든 strategy에 implements 적용 - handleHourlySweep → handleMinuteSweep 메서드명 정정 - pushEnabled 유저 없는 타임존의 WeeklyAchievement catch-up 로직 추가 - wrapAllTimezones 캐시 메서드 및 allTimezones 캐시 키 추가 - subtractMonths 날짜 유틸리티 추가 - jobs barrel export 추가 * refactor(api): WeeklyAchievement catch-up 중복 dayjs 계산 제거 및 테스트 데이터 보정
* feat(mobile): 반복 설정 날짜 선택 UX 개선 - 반복 기간 설정 라벨 변경 및 날짜 범위 표시 개선 - 선택된 반복 요일 요약 텍스트 추가 - 반복 모드에서 오늘 날짜 배경 하이라이트 비활성화 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(mobile): 피드 프로필 이름 최대 너비 제한 및 InfoIcon 텍스트 전환 - 긴 이름(최대 20자)이 레이아웃을 깨지 않도록 max-w + numberOfLines 적용 - InfoIcon SVG를 ⓘ 텍스트로 변경하여 폰트 스케일 대응 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(mobile): 시스템 글꼴 크기 비례 스케일링 유틸 함수 추가 fontScaledSize(size, ratio) — PixelRatio.getFontScale() 기반으로 아이콘/버튼 크기를 시스템 글꼴에 비례하여 스케일링한다. ratio 파라미터로 반영 비율 조절 가능 (기본 0.5). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(mobile): 아이콘/버튼 시스템 글꼴 스케일 적용 및 바텀시트 레이아웃 개선 - TodoFormContent: chips flex-wrap 레이아웃으로 변경, 버튼/아이콘 fontScaledSize 적용 - PickerHeader: CloseIcon fontScaledSize 적용 - TodoList: 카테고리 PlusIcon fontScaledSize 적용 - ProfileCard: CopyIcon fontScaledSize 적용 - KeyboardBottomSheet: 하단 패딩 여유 추가 - testing-guide: 유틸 함수 테스트 가이드 추가 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs(mobile): fontScaledSize JSDoc 기본값 수정 (0.3 → 0.5) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor(mobile): fontScaledSize 호출을 인라인으로 변경 - PickerHeader의 HEADER_ICON_SIZE 상수 제거 - TodoFormContent의 scaledButtonSize/scaledIconSize/scaledMicIconSize 변수 제거 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor(mobile): 테스트 설명에서 Given/When/Then 장황한 형식 제거 - testing-guide.md: it 설명은 간결하게 작성하도록 가이드 수정 - scale.test.ts: 7개 테스트 설명을 간결한 한국어로 변경 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* chore(mobile): 알림 설정 설명 문구를 ~해요 체로 통일 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(mobile): 24시간제 설정을 앱 전체 시간 표시에 반영 - 알림 설정 화면에 24시간제 토글 추가 - 할일 목록, 친구 할일, AI 리포트 시간 표시에 timeFormat 반영 - iOS DateTimePicker locale 동적 전환 (en_GB/ko) - formatTime, formatHour, formatReminderTime에 timeFormat 파라미터 추가 - formatTimeDisplay 유틸 함수 및 테스트 추가 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(mobile): TodoTimePickerContent에 Suspense boundary 추가 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(mobile): formatTimeDisplay 기본값을 TWELVE_HOUR로 통일 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* feat(mobile): 주간 배지 공유 기능 추가 - useShareView 훅으로 ViewShot 캡처 + expo-sharing 공유 로직 분리 - 배지 상세/요약 화면에 공유 버튼 추가 - badge_share_attempted 애널리틱스 이벤트 추가 - ShareIcon 아이콘 추가 및 fontScaledSize 적용 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(mobile): 공유 캡처 실패 시 에러 토스트 추가 - isAvailableAsync 체크를 캡처 전으로 이동 - 캡처 실패 시 에러 토스트 표시 - trackEvent를 shareCapture 전으로 이동 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(mobile): 배지 목록 빈 상태 UI를 상장 스타일로 개선 - 기본 Result 컴포넌트 대신 CertificateBorder 활용한 empty state - 기록 영역에 Result 컴포넌트로 안내 표시 - badge_empty 이미지 에셋 추가 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(mobile): 콕 찌르기 쿨다운 에러 메시지 수정 - 오늘 할 일 기반이므로 시간 안내 대신 상태 안내로 변경 --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* feat(api): AI 제안에 카테고리 추천 추가 및 분석 주기를 매일로 변경 (#370) * feat(mobile): 카테고리 id를 기준으로 바로 선택할 수 있게 UX 변경 * refactor(api): Gemini 코드 리뷰 반영 — jobId 타임존 버그 수정 * feat(api): 투두 파싱 프롬프트에 요일 약어 및 월+요일 복합 규칙 추가 - DayAbbr 규칙: 한글 요일 약어 매핑(월=MON, 화=TUE, ...) 및 조합 패턴(월수금→MON+WED+FRI) - Compound 확장: N월+요일약어→isRecurring:true, startDate=N월1일, endDate=N월말일 - "4월 월수금 출근" 같은 월+요일 복합 표현의 endDate가 해당 월 말일로 정확히 설정됨 * feat(mobile): v1.0.1 update
* feat(mobile): 캘린더 뷰 모드 선택 값 MMKV 저장 closes #375 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor(mobile): MMKV persist 함수 네이밍 통일 - useState setter는 관례적 네이밍(setX) 유지 - MMKV 저장 포함 함수는 persistX로 변경 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor(mobile): 캘린더 뷰 모드 읽기에서 타입 단언 제거 - VALID_VIEW_MODES 배열 + as CalendarViewMode 대신 직접 문자열 비교로 변경 - TypeScript 자동 narrowing 활용 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor(mobile): MMKV 저장소에 DIP 적용 및 preference 순수 함수 분리 --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: 김용민 <dydals3440@gmail.com>
* feat(mobile): analytics 이벤트 강화 및 친구 요청 lifecycle 추적 추가 - todo_created 이벤트에 source, is_recurring, has_scheduled_time, is_all_day, visibility 속성 추가 - 반복 할 일 생성(createRecurringTodo) 추적 추가 - category_created에 color 속성, category_updated 이벤트 신규 추가 - AI 파싱 source를 react-hook-form 상태로 관리 (props 없이) - friend_request_accepted, friend_request_rejected 이벤트 추가 - onSuccess 내 trackEvent 호출 순서 통일 (invalidate → toast → trackEvent) * fix(mobile): onSuccess 내 trackEvent 호출 순서 통일 (Gemini review) 카테고리 생성/수정 mutation에서 trackEvent를 invalidateQueries, toast 뒤로 이동하여 전체 코드베이스의 onSuccess 패턴(invalidate → toast → trackEvent)과 일관성 유지
* fix(mobile): 문의하기 화면 키보드 UX 개선 (#393) * refactor(mobile): scrollTo 매직 넘버를 실제 콘텐츠 높이로 대체 onContentSizeChange로 콘텐츠 높이를 추적하여 scrollTo의 하드코딩된 9999 값을 제거하고 정확한 스크롤 위치를 사용
* feat(api,mobile): 친구 목록 드래그 앤 드롭 순서 변경 기능 추가 Follow 모델에 sortOrder 필드를 추가하고, 친구 목록에서 꾹 눌러 드래그로 순서를 변경할 수 있는 기능을 구현한다. API: - Prisma 스키마에 sortOrder 필드 및 인덱스 추가 - PATCH /follows/friends/:followId/reorder 엔드포인트 추가 - 상대 위치 기반 reorder + shift 알고리즘 구현 - 친구 수락 시 sortOrder 자동 할당 (maxSortOrder + 1) - 기존 데이터 하위 호환 SQL 마이그레이션 Mobile: - DraggableFlatList 기반 드래그 앤 드롭 UI - 낙관적 업데이트 훅 (useDraggableFriendReorderList) - reorderFriend 서비스 메서드 및 mutation options * fix: 코드 리뷰 반영 및 친구 목록 레이아웃 수정 - reorder 시 followRequestNotFound → friendReorderTargetNotFound로 변경하여 순서 변경 맥락에 맞는 에러 메시지 사용 - DraggableFlatList에 containerStyle flex:1 추가하여 전체 높이 채우도록 수정 * refactor: 코드 스타일 개선 및 analytics 이벤트 추가 - 단일 라인 if/return을 멀티 라인 브레이스로 변환 (가독성) - API 로그 메시지 영문 → 한국어 전환 (로깅 가이드 준수) - friend_reordered analytics 이벤트 추가
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! 이 릴리스는 사용자 경험을 향상시키기 위한 몇 가지 중요한 기능을 도입합니다. 친구 목록을 개인화할 수 있는 드래그 앤 드롭 순서 변경 기능과 할일 카테고리를 간편하게 수정할 수 있는 옵션이 추가되었습니다. 또한, 친구가 할일을 잊었을 때 알림을 보낼 수 있는 새로운 '리마인드 콕 찌르기' 기능이 도입되었으며, 문의하기 화면의 키보드 동작이 개선되어 더욱 부드러운 사용성을 제공합니다. Highlights
Changelog
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
이번 PR은 친구 목록 순서 변경, 할일 카테고리 변경, 리마인드 콕 찌르기 등 여러 유용한 기능을 추가하고, 문의하기 화면의 UX를 개선했습니다. 코드베이스 전반에 걸쳐 컴포넌트 재사용성을 높이고, 설정을 영속화하며, 분석 이벤트를 상세화하는 등 중요한 리팩토링이 많이 이루어졌습니다. 특히 드래그 앤 드롭 기능 구현과 상태 관리, 그리고 새로운 기능에 대한 백엔드 지원이 인상적입니다. 한 가지 사소한 점으로, PR 제목 및 설명과 코드 내 버전 번호 간에 불일치가 있어 확인이 필요해 보입니다. 전반적으로 훌륭한 업데이트입니다.
Release v1.0.3
✨ Features
🐛 Bug Fixes