Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
971 commits
Select commit Hold shift + click to select a range
51bf3a4
style(web): 온보딩 버튼·셀렉트카드 컬러 트랜지션 추가 (#134)
ehye1 Jul 12, 2026
4d94be6
refactor(web): main 태그를 section으로 변경 및 console.log 제거 (#134)
ehye1 Jul 12, 2026
11fe4cb
fix(web): todo-schema.ts의 존재하지 않는 apiResponseSchema import 제거
kimminna Jul 12, 2026
a63f37b
Merge branch 'develop' of https://github.com/Team-Timo/Timo-client in…
jjangminii Jul 12, 2026
63281e6
Merge remote-tracking branch 'origin/develop' into feat/web/134-onboa…
ehye1 Jul 12, 2026
4d8abde
Merge pull request #127 from Team-Timo/feat/web/122-settings-page-view
jjangminii Jul 12, 2026
626f3c6
refactor(web): 로그인 애니메이션 ariaLabel i18n 키로 전환 (#134)
ehye1 Jul 12, 2026
cb5bf23
Merge pull request #146 from Team-Timo/feat/web/145-orval-api-client-…
kimminna Jul 12, 2026
cda1a38
Merge pull request #139 from Team-Timo/feat/web/134-onboarding-funnel
ehye1 Jul 12, 2026
8ad63d2
refactor(web): 시간 관련 상수·유틸을 공통 파일로 추출한다 (#136)
jjangminii Jul 12, 2026
422c453
file(web): formatDurationLabel을 컴포넌트 폴더에서 유틸 폴더로 이동한다 (#136)
jjangminii Jul 12, 2026
abda0f2
comment(web): formatDurationLabel에 JSDoc을 추가한다 (#136)
jjangminii Jul 12, 2026
220182d
Merge branch 'develop' of https://github.com/Team-Timo/Timo-client in…
jjangminii Jul 12, 2026
4cdc567
refactor(web): 통계 캘린더 컨테이너 분리 (#142)
yumin-kim2 Jul 12, 2026
b0fa9b6
fix(web): 타이머 종료·정지 모달의 임시 SVG를 로고 에셋으로 교체한다 (#136)
jjangminii Jul 12, 2026
2b2a6f2
Merge remote-tracking branch 'origin/develop' into feat/web/142-stati…
yumin-kim2 Jul 12, 2026
9c68e48
fix(web): 통계 날짜 유틸 공용 경로 반영 (#142)
yumin-kim2 Jul 12, 2026
1f9826d
docs(root): timo-refactor 스킬에 공통 유틸 배치 기준을 추가한다 (#148)
jjangminii Jul 12, 2026
75e1db8
Merge pull request #140 from Team-Timo/feat/web/136-connect-modal
jjangminii Jul 12, 2026
9184b74
docs(root): timo-refactor 스킬의 JSDoc 규칙과 예시를 다듬는다 (#148)
jjangminii Jul 12, 2026
bd554bf
refactor(web): 통계 패널 상태 타입 명확화 (#142)
yumin-kim2 Jul 12, 2026
1df8105
Merge pull request #150 from Team-Timo/docs/root/148-add-util-placeme…
jjangminii Jul 12, 2026
2d480a7
Merge pull request #143 from Team-Timo/feat/web/142-statistics-calend…
yumin-kim2 Jul 12, 2026
5eccca3
feat(web): 구글 소셜 로그인 및 accessToken 재발급 처리 구현 (#147)
ehye1 Jul 12, 2026
a84ddbf
refactor(web): 하드코딩된 경로를 ROUTES 상수로 교체 (#147)
ehye1 Jul 12, 2026
c04aaa9
feat(web): ROUTES 상수에 LOGIN, ONBOARDING 경로 추가 (#147)
ehye1 Jul 12, 2026
16bb2e6
docs(root): API 연동 스킬(timo-api-integration) 추가 및 백엔드 반영 내용 갱신 (#149)
kimminna Jul 12, 2026
aab7c83
chore(web): 백엔드 응답 스펙 수정에 따른 orval 응답 스키마 재생성 (#149)
kimminna Jul 12, 2026
64f9ce6
fix(web): 코드래빗 리뷰 반영 - 인증 실패 엣지 케이스 처리 및 query key 정합성 수정 (#147)
ehye1 Jul 12, 2026
97576c6
ci(root): 빌드 단계에 NEXT_PUBLIC_API_BASE_URL 환경변수 주입 (#147)
ehye1 Jul 12, 2026
5b0080d
ci(root): 성능 분석 빌드 단계에 NEXT_PUBLIC_API_BASE_URL 환경변수 주입 (#147)
ehye1 Jul 12, 2026
27b3996
docs(root): timo-api-integration 스킬에 스펙 사전 확인 단계 추가 및 트리거 보강 (#149)
kimminna Jul 12, 2026
39a6dc6
Merge pull request #153 from Team-Timo/chore/web/149-verify-openapi-r…
kimminna Jul 12, 2026
44263ea
Merge branch 'develop' of https://github.com/Team-Timo/Timo-client in…
ehye1 Jul 12, 2026
4bb860d
fix(web): 구글 로그인 토큰 재발급 응답 처리 수정 (#147)
ehye1 Jul 12, 2026
6bcb68b
feat(web): 기존 투두 상세 모달 진입점 연결 (#151)
yumin-kim2 Jul 12, 2026
199ccea
style(ui): 드롭다운 패널에 그림자 스타일 추가 (#155)
kimminna Jul 12, 2026
418f70e
fix(ui): 모달 내 드롭다운 바깥 클릭 시 모달까지 닫히는 문제 수정 (#155)
kimminna Jul 12, 2026
21071cb
fix(web): OverlayModal 바깥 클릭 시 열린 드롭다운을 무시하도록 수정 (#155)
kimminna Jul 12, 2026
7da9f11
fix(web): 로그인 카드 고정 너비 제거 및 패딩 기반 레이아웃으로 수정 (#147)
ehye1 Jul 12, 2026
46ea500
feat(web): 온보딩 완료 API 연동 및 홈 리다이렉트 구현 (#147)
ehye1 Jul 12, 2026
c087d48
refactor(web): OauthCallbackPage Suspense를 AsyncBoundary로 교체 (#147)
ehye1 Jul 12, 2026
4f1df0e
fix(web): 온보딩 완료 버튼 중복 제출 방지 (#147)
ehye1 Jul 12, 2026
7b17cef
refactor(web): 투두 아이콘 필드 공통화 (#151)
yumin-kim2 Jul 12, 2026
90223a4
feat(web): 메모 필드 300자 제한 스키마 검증 추가 (#157)
kimminna Jul 12, 2026
fc3494d
feat(web): 상세 투두 모달 기본 레이아웃 구성 (#151)
yumin-kim2 Jul 12, 2026
9e9c6ce
feat(web): 메모 필드 자동 높이 조절 및 스크롤 처리 (#157)
kimminna Jul 12, 2026
994540d
feat(web): 하위 태스크 다중 입력 및 투두명 글자 수 제한 구현 (#157)
kimminna Jul 12, 2026
6025373
fix(web): 완료된 투두 체크박스 비활성화 제거 (#157)
kimminna Jul 12, 2026
354eb92
refactor(web): 상세 투두 본문 영역 컴포넌트 분리 (#151)
yumin-kim2 Jul 12, 2026
c261863
feat(web): 온보딩 페이지 인증 가드 추가 (#147)
ehye1 Jul 12, 2026
c39acc0
feat(web): 온보딩 완료 실패 시 에러 토스트 표시 (#147)
ehye1 Jul 12, 2026
39aaecc
feat(web): 홈 섹션 AsyncBoundary 에러 폴백 추가 (#147)
ehye1 Jul 12, 2026
847e704
fix(web): 하위 태스크 목록에 안정적인 id 기반 key 적용 (#157)
kimminna Jul 12, 2026
bbee8f3
feat(web): 상세 투두 메모 영역 추가 (#151)
yumin-kim2 Jul 12, 2026
1aa0548
fix(web): CI 빌드 에러 수정 - 홈 섹션 에러 폴백 제거 (#147)
ehye1 Jul 12, 2026
cafecd7
refactor(web): 온보딩 시간 드롭다운 AM/PM 제거 및 스크롤바 개선 (#147)
ehye1 Jul 12, 2026
169a67e
fix(web): 취침·기상 시간 동일 여부 검증 및 에러 메시지 수정 (#147)
ehye1 Jul 12, 2026
3c02616
feat(web): 툴바 컴포넌트 임시값으로 연결 (#151)
yumin-kim2 Jul 12, 2026
fdcbf65
feat(web): 상세 투두 툴바 상태 변경 연결 (#151)
yumin-kim2 Jul 12, 2026
053f72c
Merge pull request #152 from Team-Timo/feat/web/147-google-login-toke…
kimminna Jul 12, 2026
1c9b19e
refactor(web): 상세 투두 폼 상태 훅 분리 (#151)
yumin-kim2 Jul 12, 2026
e98c0da
feat(web): 홈 화면 조회 API 연동 (#159)
kimminna Jul 12, 2026
c162f93
fix(web): 연장 모달 닫기 로직과 최대 연장 시간 상수를 정리한다 (#154)
jjangminii Jul 12, 2026
6404983
fix(web): 타이머 정지 모달 전환 버튼 문구를 완료하기로 수정한다 (#154)
jjangminii Jul 12, 2026
4db13c9
Merge pull request #156 from Team-Timo/fix/ui/155-modal-closes-with-d…
kimminna Jul 12, 2026
8cc09da
refactor(web): 하위 태스크 입력 엔터·백스페이스 로직을 공통 유틸로 분리 (#157)
kimminna Jul 12, 2026
8b39b01
Merge pull request #158 from Team-Timo/feat/web/157-home-todo-modal-i…
kimminna Jul 12, 2026
5317715
Merge branch 'develop' of https://github.com/Team-Timo/Timo-client in…
kimminna Jul 12, 2026
38abc3d
feat(web): 상세 투두 입력 상태 보완 (#151)
yumin-kim2 Jul 12, 2026
78f98d3
Merge remote-tracking branch 'origin/develop' into feat/web/151-detai…
yumin-kim2 Jul 12, 2026
796de1f
feat(web): 상세 투두 실행 버튼 동작 연결 (#151)
yumin-kim2 Jul 12, 2026
1fca154
feat(web): 상세 투두 제목 및 하위 태스크 수정 연결 (#151)
yumin-kim2 Jul 12, 2026
ab7a493
feat(web): 상세 투두 삭제 동작 연결 (#151)
yumin-kim2 Jul 12, 2026
5f87fd8
fix(web): 홈 화면 투두 카드 날짜 범위 및 오늘 스크롤 위치 수정 (#159)
kimminna Jul 12, 2026
442fbd2
feat(web): 약관 페이지 및 설정 약관 탭을 구현한다 (#163)
jjangminii Jul 12, 2026
86daee3
feat(web): 투두 툴바 라벨 주입 지원 (#151)
yumin-kim2 Jul 12, 2026
b128a11
feat(web): 투두 모달 다국어 문구 적용 (#151)
yumin-kim2 Jul 12, 2026
f2a6109
feat(web): TODO 생성 API 연동 (#159)
kimminna Jul 12, 2026
6c7af2e
fix(web): 설정 약관 탭을 서비스 이용약관/개인정보 처리방침으로 분리한다 (#163)
jjangminii Jul 13, 2026
360b2c0
fix(web): 오른쪽 패널 배경색 추가 (#168)
yumin-kim2 Jul 13, 2026
0ac2501
fix(web): 오른쪽 패널 레이아웃 수정 (#168)
yumin-kim2 Jul 13, 2026
47d0bf8
feat(web): 중간 캘린더 가로 스크롤 추가 (#168)
yumin-kim2 Jul 13, 2026
f1c0fe4
refactor(web): 설정 약관·정책 화면의 중복 로직을 SettingsTermsContainer로 통합한다 (#163)
jjangminii Jul 13, 2026
e6fcd5d
fix(web): 홈 투두 응답의 null priority·tag 파싱 오류 수정 (#159)
kimminna Jul 13, 2026
d90e37d
feat(web): 집중페이지를 실제 API와 연동한다 (#169)
jjangminii Jul 13, 2026
8d5df34
refactor(web): 세로 스크롤시 날짜, 요일 고정 (#168)
yumin-kim2 Jul 13, 2026
92ba234
fix(web): 홈 투두 응답 icon null 파싱 오류 수정 (#159)
kimminna Jul 13, 2026
0bf7ac1
feat(web): 투두 및 하위 투두 완료 상태 변경 API 연동 (#159)
kimminna Jul 13, 2026
f794401
refactor(web): 투두 생성 성공 시 홈 뷰 쿼리 무효화로 전환 (#159)
kimminna Jul 13, 2026
dd6c46d
feat(web): 시간 트리거 클릭 시 AI 소요 시간 자동 추천 (#159)
kimminna Jul 13, 2026
21658cb
fix(web): 드롭다운 바깥 클릭 시 모달까지 닫히는 레이스 컨디션 수정 (#159)
kimminna Jul 13, 2026
001b574
fix(web): 홈 뷰 쿼리 staleTime 제거로 토글 시 재요청 보장 (#159)
kimminna Jul 13, 2026
dca3e17
feat(web): 투두 순서 변경 API 연동 (#159)
kimminna Jul 13, 2026
2258826
feat(web): 설정 프로필 조회·언어 수정 API 연동 (#172)
kimminna Jul 13, 2026
7f566cf
fix(web): OAuth 콜백 프로필 캐시 시딩 오류 수정 (#172)
kimminna Jul 13, 2026
bcb7a83
fix(ui): PlayButton 비활성 상태 aria-label을 로케일에 맞게 오버라이드할 수 있게 한다
jjangminii Jul 13, 2026
de08d88
fix(web): OverlayModal 오버레이 클릭 감지에 터치/펜 입력 지원 (#159)
kimminna Jul 13, 2026
219c3c2
Merge pull request #160 from Team-Timo/feat/web/159-integrate-home-vi…
kimminna Jul 13, 2026
589b8d9
fix(web): 집중 빈 상태 카드의 접근성 이슈를 수정한다
jjangminii Jul 13, 2026
250a2e6
fix(web): 집중페이지 뮤테이션에 에러 핸들링을 추가한다
jjangminii Jul 13, 2026
17217a7
Merge branch 'develop' of https://github.com/Team-Timo/Timo-client in…
jjangminii Jul 13, 2026
94e839f
Merge pull request #170 from Team-Timo/feat/web/169-focus-page-api-in…
jjangminii Jul 13, 2026
3a5ec10
name(web): TimerSessionControls의 boolean state를 isFromEndModal로 리네이밍한다
jjangminii Jul 13, 2026
317052f
Merge pull request #161 from Team-Timo/fix/web/154-extend-modal-butto…
jjangminii Jul 13, 2026
8faa640
feat(web): 로그아웃/회원탈퇴 API 연동 (#175)
ehye1 Jul 13, 2026
c56d383
fix(web): mutationFn 타입 에러 수정 (#175)
ehye1 Jul 13, 2026
999ff37
feat(web): 태그 API 공유 스키마·쿼리 훅·생성 모달 추가 (#177)
kimminna Jul 13, 2026
3cc36f5
feat(web): 홈 모달 태그 목록/생성 API 연동 (#177)
kimminna Jul 13, 2026
c0c4d00
feat(web): 설정 페이지 태그 목록/생성/삭제 API 연동 (#177)
kimminna Jul 13, 2026
fd4e586
fix(web): 설정 페이지 기본 태그 삭제 버튼 오표시 수정 (#177)
kimminna Jul 13, 2026
de88ff6
refactor(web): 세션 정리 로직 공통화 및 탈퇴 에러 토스트 교체 (#175)
ehye1 Jul 13, 2026
784b3a9
Merge remote-tracking branch 'origin/develop' into feat/web/177-tag-a…
kimminna Jul 13, 2026
83fe429
refactor(web): margin값을 제외한 레이아웃 재구성 (#151)
yumin-kim2 Jul 13, 2026
78de45d
remove(web): 설정 계정 탭 페이지 제거
kimminna Jul 13, 2026
b0c3491
file(web): 설정 정책·탈퇴 하위 폴더를 settings 루트 구조로 이동
kimminna Jul 13, 2026
cc776ec
Merge pull request #171 from Team-Timo/fix/web/168-statistics-panel-l…
kimminna Jul 13, 2026
0b1b20c
feat(web): Today 페이지 스크롤 레이아웃 및 날짜 헤더 컨테이너 추가 (#141)
ehye1 Jul 11, 2026
268a56c
refactor(web): TodayTodoCardContainer isPlaying 상태를 prop 기반 파생값으로 변경 …
ehye1 Jul 11, 2026
5ed648c
chore(web): 스크롤 확인용 todo 목데이터 추가 (#141)
ehye1 Jul 11, 2026
7191daf
style(web): 투두 리스트 스크롤 오른쪽 패딩 추가 (#141)
ehye1 Jul 12, 2026
bab2e47
refactor(web): TodayDayHeaderContainer 리네임 및 DateInformation 공통 컴포넌트 …
ehye1 Jul 12, 2026
5242acd
file(web): 투두 모달 컴포넌트·훅 공통 경로로 이동 (#141)
ehye1 Jul 13, 2026
6998c9d
feat(web): 오늘 화면 투두카드 인터랙션 구현 (#141)
ehye1 Jul 13, 2026
a806556
feat(web): 타이머 정지 API를 연동한다 (#162)
jjangminii Jul 13, 2026
a729882
feat(web): 홈/사이드바 타이머 API를 연동한다 (#162)
jjangminii Jul 13, 2026
5fb6a9e
fix(web): 타이머 완료/중지 판정 기준을 시간 소진 여부로 수정한다 (#162)
jjangminii Jul 13, 2026
6989e1a
refactor(web): 활성 타이머 폴링을 클라이언트 카운트다운으로 대체한다 (#162)
jjangminii Jul 13, 2026
7a664fe
refactor(web): 투두 생성 모달 공통 컴포넌트 적용 (#141)
ehye1 Jul 13, 2026
2e51673
fix(web): OAuth 콜백 페이지 수정 (#141)
ehye1 Jul 13, 2026
d3d34b9
fix(ui): Dropdown 컴포넌트 수정 (#141)
ehye1 Jul 13, 2026
4862d81
refactor(web): TodayTodoCard 툴바 비활성화 및 카드 클릭 구조로 전환 (#141)
ehye1 Jul 13, 2026
1e10160
refactor(web): TodayTodoListContainer 상태 로직을 useTodayTodoList 훅으로 분리 …
ehye1 Jul 13, 2026
1e465d2
fix(web): HomeDayHeaderContainer getToday 임포트 경로 수정 (#141)
ehye1 Jul 13, 2026
279d5f7
fix(web): HomeDayHeaderContainer parseDateKey 임포트 경로 수정 (#141)
ehye1 Jul 13, 2026
6925613
refactor(web): 투두 유틸 공용 경로로 이동 (#151)
yumin-kim2 Jul 13, 2026
7912b5b
fix(web): TodayTodoCard 툴바 아이콘 색상 및 카드 상호작용 리팩토링 (#141)
ehye1 Jul 13, 2026
e8c6223
refactor(web): PolicyDocument의 미사용 headingLevel prop을 제거한다 (#163)
jjangminii Jul 13, 2026
504afc4
fix(web): CI lint/type 에러 수정 (#141)
ehye1 Jul 13, 2026
35568b2
Merge branch 'develop' of https://github.com/Team-Timo/Timo-client in…
jjangminii Jul 13, 2026
1b9bda4
Merge pull request #144 from Team-Timo/feat/web/141-today-todocard-in…
ehye1 Jul 13, 2026
2b0bae8
Merge pull request #167 from Team-Timo/feat/web/163-terms-policy-pages
jjangminii Jul 13, 2026
cd0c888
refactor(web): 투두 모달 훅 공용 경로로 이동 (#151)
yumin-kim2 Jul 13, 2026
23daadb
refactor(web): 투두 모달 컴포넌트 공용 경로로 이동 (#151)
yumin-kim2 Jul 13, 2026
d26ec72
feat(web): accessToken을 localStorage에 저장하고 인증 세션 초기화를 루트에서 1회만 수행한다 (…
kimminna Jul 13, 2026
e91b655
feat(web): 홈 접근 시 유저 언어에 따라 ko/en 로케일을 동기화한다 (#179)
kimminna Jul 13, 2026
cbeb6a5
file(web): utils 폴더를 duration/date 하위 폴더로 재구성한다 (#179)
kimminna Jul 13, 2026
c763069
refactor(web): 태그 라벨 판별 유틸 공용화 (#151)
yumin-kim2 Jul 13, 2026
13d8e39
Merge pull request #173 from Team-Timo/feat/web/172-settings-profile-…
kimminna Jul 13, 2026
6accb01
refactor(web): 상세 투두 모달 다국어 요일 처리 (#151)
yumin-kim2 Jul 13, 2026
b2ef268
feat(web): 언어 동기화를 앱 전역으로 확장하고 비로그인 사용자에게 접속 국가 기반 기본 로케일을 적용한다 (#179)
kimminna Jul 13, 2026
7dfc1ee
Merge remote-tracking branch 'origin/develop' into feat/web/179-auth-…
kimminna Jul 13, 2026
90eea50
style(web): 상세 투두 하위 태스크 간격 통일 (#151)
yumin-kim2 Jul 13, 2026
df8fadf
refactor(web): 상세 투두 폼 상태 관리 react-hook-form으로 개선 (#151)
yumin-kim2 Jul 13, 2026
83e6d99
refactor(web): 유저 프로필 조회 쿼리를 공용 useMyProfile로 통합한다 (#179)
kimminna Jul 13, 2026
98827f7
fix(web): 유저 프로필 응답의 null 가능 필드 zod 검증 오류를 수정한다 (#179)
kimminna Jul 13, 2026
1370156
fix(web): 투두 카드 키보드 이벤트 전파 방지 (#151)
yumin-kim2 Jul 13, 2026
63616c6
feat(web): 루트 경로 접근 시 /home으로 리다이렉트한다 (#179)
kimminna Jul 13, 2026
687269e
fix(web): 포커스 태스크 아이템의 시간 배지가 연장분을 반영하지 않던 문제를 수정한다 (#162)
jjangminii Jul 13, 2026
b6cbf99
feat(web): 시간 소진 시 종료 모달 자동 표시 및 연장 구간 오버타임 링을 연동한다 (#162)
jjangminii Jul 13, 2026
c45c17d
fix(web): 설정에서 언어 저장 시 프로필 캐시가 갱신되지 않아 로케일이 되돌아가던 문제를 수정한다 (#179)
kimminna Jul 13, 2026
6a19c33
refactor(web): FocusSessionContainer의 로직을 use-focus-session 훅으로 분리한다 …
jjangminii Jul 13, 2026
c715de1
merge: develop 최신 변경 반영
yumin-kim2 Jul 13, 2026
fd70993
refactor(web): LanguageSyncProvider가 Suspense 대신 AsyncBoundary를 쓰도록 바…
kimminna Jul 13, 2026
297538e
Merge pull request #181 from Team-Timo/feat/web/179-auth-route-guards
kimminna Jul 13, 2026
4f43cda
Merge branch 'develop' of https://github.com/Team-Timo/Timo-client in…
kimminna Jul 13, 2026
14343d0
merge: develop 최신 변경 재반영
yumin-kim2 Jul 13, 2026
d914094
Merge branch 'develop' into feat/web/175-logout-withdrawal-api-integr…
ehye1 Jul 13, 2026
967b55f
feat(web): 새로고침·페이지 이동 후에도 오버타임 링 상태를 유지한다 (#162)
jjangminii Jul 13, 2026
d2f65c2
fix(web): 타이머 mutation 성공 시 홈 뷰 쿼리도 함께 무효화한다 (#162)
jjangminii Jul 13, 2026
a228e4f
refactor(web): 타이머 plannedLabel 표시 형식을 분 단위로 단순화한다 (#162)
jjangminii Jul 13, 2026
3c8366d
fix(ui): z-index 토큰 이름을 --z-index-* 컨벤션에 맞게 수정한다 (#162)
jjangminii Jul 13, 2026
ddbb03c
Merge branch 'develop' of https://github.com/Team-Timo/Timo-client in…
jjangminii Jul 13, 2026
909490e
fix(web): 홈 투두 카드의 재생 아이콘이 활성 타이머 상태를 반영하지 않던 문제를 수정한다 (#162)
jjangminii Jul 13, 2026
1379f3b
fix(web): 타이머 시간 표시에서 1분 미만 초를 내림 대신 올림 처리한다 (#162)
jjangminii Jul 13, 2026
6059533
fix(web): 시간 소진 시 타이머를 자동 일시정지하고 연장 시 재개한다 (#162)
jjangminii Jul 13, 2026
afcd505
fix(web): 타이머 링이 값이 몰아서 바뀔 때만 트랜지션 없이 스냅되게 한다 (#162)
jjangminii Jul 13, 2026
4f6b827
fix(web): 타이머 정지 시 투두 완료 처리 API를 함께 호출한다 (#162)
jjangminii Jul 13, 2026
b508fa0
fix(web): 종료 버튼 클릭 시 모달 분기 기준을 재생 여부 대신 시간 소진 여부로 수정한다 (#162)
jjangminii Jul 13, 2026
1ef1af2
fix(web): 홈에서 투두 순서 변경 시 포커스 페이지 쿼리도 무효화한다 (#162)
jjangminii Jul 13, 2026
071b16b
refactor(web): todo 응답 스키마를 공유 위치로 이동 (#180)
ehye1 Jul 14, 2026
9766a76
feat(web): today 탭 API 연동 (#180)
ehye1 Jul 14, 2026
91fea28
Merge pull request #176 from Team-Timo/feat/web/175-logout-withdrawal…
ehye1 Jul 14, 2026
628899b
feat(web): today 쿼리 staleTime 설정 (#180)
ehye1 Jul 14, 2026
c6b5158
fix(web): develop 머지 충돌 해결 — utils 경로 업데이트 (#180)
ehye1 Jul 14, 2026
592a3e4
fix(web): 타이머 정지 성공 후에만 투두 완료 상태를 변경하도록 순서를 보장한다 (#162)
jjangminii Jul 14, 2026
7da8e77
fix(web): 홈에서 투두/서브태스크 완료 처리 시 포커스 페이지 쿼리도 무효화한다 (#162)
jjangminii Jul 14, 2026
669c158
feat(web): 설정에서 태그/로그아웃 확인 모달을 추가하고 탭 단위로 폴더를 재구조화한다 (#177)
kimminna Jul 14, 2026
8117609
refactor(web): 생성 모달 컨테이너와 날짜 포맷 유틸 공용화 (#151)
yumin-kim2 Jul 14, 2026
425da74
feat(web): 홈 투두 카드 체크박스도 포커스 페이지와 동일하게 정지 확인 모달을 거치도록 한다 (#162)
jjangminii Jul 14, 2026
2f12b99
Merge remote-tracking branch 'origin/develop' into feat/web/177-tag-a…
kimminna Jul 14, 2026
589f0f5
chore(web): 불필요한 gitkeep 파일 제거 (#177)
kimminna Jul 14, 2026
b60d39d
refactor(web): useClearSession을 settings 내부 공용 훅으로 이동한다 (#177)
kimminna Jul 14, 2026
e3c01dc
feat(web): 다른 투두의 타이머가 실행 중일 때 재생을 막고 토스트로 안내한다 (#162)
jjangminii Jul 14, 2026
5a9b50f
fix(web): 언어 변경 후 프로필 캐시를 직접 조작하지 않고 invalidate하도록 수정한다 (#177)
kimminna Jul 14, 2026
786b8b2
refactor(web): 활성 타이머/홈 뷰 쿼리 무효화 로직을 useTimerQueryInvalidation 훅으로 공통…
jjangminii Jul 14, 2026
1c653ea
fix(web): 언어 변경 실패 시 alert 대신 토스트를 노출한다 (#177)
kimminna Jul 14, 2026
a829f7c
refactor(web): 타이머 액션 핸들러를 useTimerActions 훅으로 공통화한다 (#162)
jjangminii Jul 14, 2026
9d75ebc
refactor(web): 상세 투두 하위 태스크 로직 분리 (#151)
yumin-kim2 Jul 14, 2026
2162b89
fix(web): Timer의 렌더 간격 비교용 ref 갱신을 렌더 이후로 옮긴다 (#162)
jjangminii Jul 14, 2026
ea5bf7e
refactor(web): 홈 뷰/포커스 쿼리 무효화 중복 호출을 invalidateHomeAndFocus로 묶는다 (#162)
jjangminii Jul 14, 2026
9470836
refactor(web): 상세 투두 UI 상태를 모달 컨텐츠로 분리 (#151)
yumin-kim2 Jul 14, 2026
e1a0a90
Merge pull request #164 from Team-Timo/feat/web/151-detail-todo-modal
yumin-kim2 Jul 14, 2026
75210bc
fix(web): 오버타임 연장 시 RESUME 성공 후에만 extendTimer를 호출하도록 순서를 보장한다 (#162)
jjangminii Jul 14, 2026
2a5a5df
name(web): 세팅 훅 파일명을 kebab-case로 통일한다
kimminna Jul 14, 2026
883df20
refactor(web): useSettingsProfile 훅에서 JSX와 UI state를 컨테이너로 분리한다 (#177)
kimminna Jul 14, 2026
1c440ff
fix(web): 오버타임 저장값 초기화를 하이드레이션 안전하게 하고 손상된 값을 방어한다 (#162)
jjangminii Jul 14, 2026
0ea024a
file(web): tag·todo 스키마를 api/common으로 이동한다
kimminna Jul 14, 2026
1716114
feat(web): 타이머 아이콘을 투두가 선택한 IconGraphic으로 교체한다 (#162)
jjangminii Jul 14, 2026
41f9598
Merge remote-tracking branch 'origin/develop' into feat/web/177-tag-a…
kimminna Jul 14, 2026
9616cf9
Merge pull request #178 from Team-Timo/feat/web/177-tag-api-integration
kimminna Jul 14, 2026
d29ba5d
Merge branch 'develop' of https://github.com/Team-Timo/Timo-client in…
jjangminii Jul 14, 2026
63453d4
Merge branch 'develop' of https://github.com/Team-Timo/Timo-client in…
jjangminii Jul 14, 2026
373dfac
chore(web): develop 머지 충돌 해결 (#180)
ehye1 Jul 14, 2026
2a02b18
feat(web): 포커스 투두 메모를 연동하고 icon 검증 크래시를 방지한다 (#162)
jjangminii Jul 14, 2026
9bfb559
feat(web): today 투두 생성 API 연동 및 아이콘 표시 (#180)
ehye1 Jul 14, 2026
d6e20c7
fix(web): today 하위 투두 체크박스 정렬 수정 (#180)
ehye1 Jul 14, 2026
000bcf0
refactor(web): 홈 모달/토스트 UI 상태를 훅에서 컨테이너로 옮긴다 (#162)
jjangminii Jul 14, 2026
7705fe5
fix(web): 계획 시간이 60분을 넘으면 시/분 형식으로 표시한다 (#162)
jjangminii Jul 14, 2026
95c6e06
feat(web): 사이드바 타임박스 패널에 타임박스 API를 연동한다 (#162)
jjangminii Jul 14, 2026
8cde952
feat(web): 타이머 조작과 투두 체크 시 타임박스 쿼리도 함께 무효화한다 (#162)
jjangminii Jul 14, 2026
eab4ad3
fix(web): 타임박스가 같은 timerId면 끊긴 구간도 진행 중으로 표시한다 (#162)
jjangminii Jul 14, 2026
b072d04
style(web): 타임박스 라벨 폰트를 11px로 줄이고 세로 중앙정렬로 바꾼다 (#162)
jjangminii Jul 14, 2026
e2cd1f9
fix(web): 하위 할일 입력 중 한글 조합 상태에서 Enter 처리로 잔여 글자가 남는 문제를 수정한다 (#188)
kimminna Jul 14, 2026
0dc9ce0
fix(web): 기본 태그 이름을 tagId 기반으로 다국어 처리한다 (#188)
kimminna Jul 14, 2026
dd71ffb
fix(ui): 투두 아이콘 셀렉터 글리프 크기를 24px로 통일한다 (#188)
kimminna Jul 14, 2026
f8ca73c
fix(web): 시간 duration 필드의 분:초 단위 정합성을 수정한다 (#188)
kimminna Jul 14, 2026
113634e
feat(ui): 시간 선택 UI를 분/초 입력으로 분리하고 툴바 트리거 색상 상태를 정리한다 (#188)
kimminna Jul 14, 2026
3750d09
fix(web): 생성 모달 날짜 표시 형식을 상세 모달과 통일한다 (#188)
kimminna Jul 14, 2026
996f97e
style(web): 타임박스 패널 행 높이와 라벨 배치를 조정한다 (#162)
jjangminii Jul 14, 2026
ecb744c
fix(web): today 투두 완료 시 하단 정렬 로직 추가 (#180)
ehye1 Jul 14, 2026
f546d00
feat(web): today 투두 카드 클릭 시 상세 모달 연결 (#180)
ehye1 Jul 14, 2026
acdf6d4
fix(web): useTodayTodoList timerStatus 타입 추론 오류 수정 (#180)
ehye1 Jul 14, 2026
40555ec
Merge pull request #185 from Team-Timo/feat/web/180-today-todolist-ap…
ehye1 Jul 14, 2026
e2b377b
Merge pull request #189 from Team-Timo/refactor/web/188-todo-modal-ti…
kimminna Jul 14, 2026
7c5a0bd
Update apps/timo-web/app/[locale]/(main)/(with-time-sidebar)/home/_co…
jjangminii Jul 14, 2026
1de49a8
Update apps/timo-web/app/[locale]/(main)/focus/_hooks/use-focus-sessi…
jjangminii Jul 14, 2026
d21a381
refactor(web): 포커스 세션 UI 상태를 컨테이너로 옮긴다 (#162)
jjangminii Jul 14, 2026
124cf57
refactor(web): 트리비얼 토스트 닫기 핸들러를 인라인한다 (#162)
jjangminii Jul 14, 2026
36896d7
chore(web): 이름을 그대로 되풀이하는 불필요한 주석을 제거한다 (#162)
jjangminii Jul 14, 2026
7fe278f
Merge branch 'feat/web/162-timer-api-integration' of https://github.c…
jjangminii Jul 14, 2026
3ef3556
chore(web): 남은 주석을 마저 제거한다 (#162)
jjangminii Jul 14, 2026
10d7c8c
Merge branch 'develop' of https://github.com/Team-Timo/Timo-client in…
jjangminii Jul 14, 2026
bb7737b
chore(web): 남은 주석을 마저 제거한다 (#162)
jjangminii Jul 14, 2026
bac9d73
rename(web): HomeStopCompleteModal을 HomeStopCompleteModalContainer로 이…
jjangminii Jul 14, 2026
3ec7ed7
Merge pull request #184 from Team-Timo/feat/web/162-timer-api-integra…
kimminna Jul 14, 2026
0666b4d
fix(web): AI 추천 시간 입력 시 시:분 단위로 트리거와 데이터에 즉시 반영한다 (#192)
kimminna Jul 14, 2026
82ac10c
fix(ui): TimeSelector 입력창의 잘못된 aria-label을 시간/분으로 수정한다 (#192)
kimminna Jul 14, 2026
f023126
comment(web): use-time-field 주석을 한 줄로 정리한다 (#192)
kimminna Jul 14, 2026
87b8dce
Merge pull request #193 from Team-Timo/fix/web/192-time-selector-form…
kimminna Jul 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
77 changes: 77 additions & 0 deletions .agents/skills/api/timo-api-integration/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# timo-api-integration

## 트리거

- "API 연동해줘 / 연동 세팅하자"
- "orval / 제너레이터 나온 거 붙여줘"
- mock 데이터를 실제 API 호출로 교체하는 작업

## 참조

- `docs/architecture/state.md` → 서버 상태는 React Query가 단일 출처
- `docs/architecture/structure.md` → `_queries/` 위치 규칙
- `apps/timo-web/api/generated/` → orval이 생성한 훅·zod 스키마·모델 (직접 수정 금지)
- `apps/timo-web/api/client/custom-instance.ts`, `apps/timo-web/api/client/axios.ts` → axios 인스턴스, 에러 인터셉터
- `apps/timo-web/api/error/api-error.ts` → `ApiError`, `parseApiError`

## 배경

- `api/generated/endpoints/{domain}/{domain}.ts` — orval이 생성한 react-query 훅(`useGetXxx`)과 순수 fetcher 함수, `queryKey` 헬퍼, `getXxxQueryOptions` 팩토리
- `logout`/`withdraw`/`deleteTodo`/`deleteTag`/`completeOnboarding`처럼 실제로 반환 데이터가 없는 엔드포인트는 백엔드가 `data`를 Java `Object`(빈 스키마)로 선언해서 여전히 `data: zod.unknown().optional()`로 생성된다 — 이건 버그가 아니라 정상이다(정말로 shape이 없는 값이므로).
- `api/generated/models/*.ts` — 응답 DTO 타입. 실제로 항상 오는 필드는 이제 `?` 없이 생성된다. 다만 gen 스키마는 백엔드가 스펙을 바꿀 때마다 사람 리뷰 없이 재생성되므로 100% 맹신하지는 않는다.
- 그래도 도메인 로컬 zod 스키마(`app/(domain)/_types/*.ts`)로 한 번 더 검증한다 — 로컬 스키마의 `.parse()`가 "백엔드가 계약을 조용히 느슨하게 바꿨는지"를 잡아내는 방어선 역할을 한다. 로컬 스키마 작성 시 gen 응답 스키마를 기반 초안으로 그대로 가져다 쓰고, UI가 추가로 좁혀야 하는 부분(더 좁은 enum, 파생 필드 등)만 수정한다.

## 워크플로우

### Phase 1 — 대상 엔드포인트 확인

- `/v3/api-docs`에서 대상 성공 응답의 `application/json` content type과 필드별 `required`를 확인한다.
- 확인 결과를 반영하도록 `pnpm gen:api`를 실행한 뒤 생성된 모델·Zod 스키마를 검토한다.
- `api/generated/endpoints/{domain}/{domain}.ts`에서 필요한 fetcher 함수(예: `getHome`)와 `getGetXxxQueryKey` 헬퍼를 찾는다.
- 응답이 `BaseResponseXxx { status, message, data }` 형태로 감싸져 있는지 `api/generated/models/`에서 확인한다 — 실제 필요한 값은 `.data`에 있다.

### Phase 2 — 로컬 zod 스키마로 응답 검증

- 도메인 `_types/*.ts`에 이미 손으로 작성한 zod 스키마가 있는지 확인한다. 없으면 생성된 응답 zod 스키마(`api/generated/endpoints/{domain}/{domain}.zod.ts`)를 기반 초안으로 가져와 작성한다 — 이제 실제 shape을 담고 있으므로 신뢰할 수 있다.
- gen 스키마와 UI가 실제로 필요로 하는 shape이 다르면(더 좁은 enum, 파생 필드 등) 로컬 스키마에서 추가로 좁힌다.
- `select`에서 로컬 스키마의 `.parse()`/`.safeParse()`로 최종 검증한다 — gen 스키마를 UI까지 직접 노출하지 않고 반드시 로컬 스키마를 한 번 거친다. 백엔드가 스펙을 다시 느슨하게 바꿔도 이 단계가 조용히 깨지지 않고 파싱 실패로 드러나게 하는 방어선이다.

### Phase 3 — `_queries/` 훅 작성

- 위치: `app/(domain)/_queries/use-xxx.ts`
- `useSuspenseQuery`를 쓸지 `useQuery`를 쓸지는 컴포넌트가 `AsyncBoundary`(Suspense) 안에 있는지로 결정한다. `AsyncBoundary`로 감싸져 있으면 `useSuspenseQuery`를 쓴다.
- **주의**: 생성된 `getGetXxxQueryOptions()` 팩토리를 그대로 `useSuspenseQuery`에 스프레드하면 `UseQueryOptions`가 허용하는 `skipToken`과 `UseSuspenseQueryOptions`가 타입 충돌을 일으킨다. `queryKey`/`queryFn`은 생성된 `getGetXxxQueryKey` + 원본 fetcher 함수로 직접 조립한다.
- `select`에서 `BaseResponse.data`를 언랩하고 로컬 zod 스키마로 `.parse()`해서 반환한다.

```ts
"use client";

import { useSuspenseQuery } from "@tanstack/react-query";

import {
getGetHomeQueryKey,
getHome,
} from "@/api/generated/endpoints/home/home";
import { homeViewDataSchema } from "@/app/[locale]/(main)/(with-time-sidebar)/home/_types/home-view-type";

export const useHomeView = ({ filter, baseDate }: GetHomeViewParams) =>
useSuspenseQuery({
queryKey: getGetHomeQueryKey({ filter, baseDate }),
queryFn: ({ signal }) => getHome({ filter, baseDate }, undefined, signal),
select: ({ data }) => homeViewDataSchema.parse(data),
});
```

### Phase 4 — 컨테이너 연결

- mock 함수 import를 제거하고 새 훅으로 교체한다.
- 다른 도메인이 같은 mock을 참조하고 있는지 확인(`Grep`)하고, 참조 중이면 mock 파일 자체는 지우지 않는다.
- 로그인 연동 전이라 요청이 401/네트워크 에러로 실패할 수 있다 — `useSuspenseQuery`가 던지는 에러는 상위 `error.tsx`(라우트 레벨) 또는 `AsyncBoundary`의 `errorFallback`이 잡는지 확인한다. 둘 다 없으면 최소한 라우트 레벨 `error.tsx` 존재 여부를 확인해 화면이 완전히 깨지지 않게 한다.

### Phase 5 — 자가 검토

- [ ] `api/generated/` 내부 파일을 직접 수정하지 않았는가 (재생성 시 사라짐)
- [ ] 응답을 로컬 zod 스키마로 `.parse()`해서 검증했는가 (gen 응답 스키마를 그대로 UI까지 노출하지 않았는가)
- [ ] `useSuspenseQuery` 사용 시 `queryKey`/`queryFn`을 직접 조립해 타입 충돌을 피했는가
- [ ] `tsc --noEmit`, `eslint` 통과
- [ ] 다른 도메인이 참조하는 mock을 실수로 지우지 않았는가
82 changes: 81 additions & 1 deletion .agents/skills/git/timo-commit/SKILL.md
Original file line number Diff line number Diff line change
@@ -1 +1,81 @@
<!-- diff를 읽어 기능 단위로 커밋을 분해하고 메시지를 작성한다 -->
# timo-commit

## 트리거

- "커밋해줘", "커밋 만들어줘", "commit"
- "staged 변경 정리해줘", "변경사항 나눠줘"

## 참조

- `docs/conventions/commit.md` → 커밋 타입·스코프·형식·규칙

## 핵심 원칙

1. **secret guard 먼저**: `.env`, 비밀번호, API 키, 토큰이 스테이징되어 있으면 즉시 멈추고 알린다.
2. **atomic 단위 분리**: 논리적으로 무관한 변경은 별도 커밋으로 나눈다.
3. **2단계 진행**: Phase 1(계획표 출력 → 승인) → Phase 2(실행). 승인 없이 커밋하지 않는다.
4. **push는 명시적 요청 시에만**: 커밋까지만 하고, push는 사용자가 동의하면 수행한다.

---

## Phase 1 — 분석 및 계획 수립

1. `git status`와 `git diff --cached`로 스테이징된 변경 확인.
2. **secret guard**: `.env`, `password`, `api_key`, `secret`, `token` 패턴 검색 — 발견 시 즉시 중단.
3. 변경된 파일들을 도메인/기능/계층 단위로 커밋 그룹 분류.
4. 아래 형식의 계획표를 출력하고 **사용자 승인 대기**.

### 계획표 출력 형식

```
## 커밋 계획

### 커밋 1: feat(web): 소셜 로그인 컴포넌트 추가 (#5)
- apps/timo-web/src/components/SocialLogin/index.tsx
- 소셜 로그인 UI 컴포넌트를 추가했습니다

### 커밋 2: chore(root): turbo filter 스크립트 추가
- package.json
- dev:web, build:web 등 필터 스크립트를 추가했습니다

계속 진행할까요?
```

---

## Phase 2 — 커밋 실행

승인 후 각 그룹별 `git add <파일>` → `git commit -m` 순으로 실행한다.
완료 후 `git log --oneline -n <커밋 수>`로 결과 요약 출력.

---

## 계층별 분리 원칙

같은 기능이라도 계층이 다르면 **별도 커밋**으로 분리한다:

1. **의존성 변경**: `package.json`, `pnpm-lock.yaml` → `chore`
2. **핵심 구현**: 컴포넌트, 훅, 유틸리티 → `feat` / `fix` / `refactor`
3. **설정/라우팅**: 라우트 등록, 설정 파일 → `chore` / `feat`

---

## 커밋 메시지 형식

→ `docs/conventions/commit.md` 참조 (타입 목록·스코프 기준·형식·규칙)

핵심 요약:

- 형식: `타입(스코프): 한국어 제목 (#이슈번호)`
- 본문: 반드시 `~했습니다` 체로 종결
- 대괄호 스코프 금지: `feat: [web] …` ❌
- 이슈 번호 모르면 사용자에게 확인

---

## 금지

- `--no-verify` 플래그 사용 금지 (사용자가 요청해도 이유를 먼저 묻는다)
- 스테이징되지 않은 파일을 임의로 `git add` 하지 않는다
- `.env`, 인증서, 토큰 파일을 커밋에 포함하지 않는다
- 승인 없이 커밋을 실행하지 않는다
166 changes: 165 additions & 1 deletion .agents/skills/git/timo-issue/SKILL.md
Original file line number Diff line number Diff line change
@@ -1 +1,165 @@
<!-- 요청을 받아 재현 조건·수용 기준이 포함된 GitHub 이슈를 작성한다 -->
# timo-issue

## 트리거

다음 요청이 오면 이 스킬을 사용한다:

- "이슈 만들어줘", "이슈 올려줘", "이슈 써줘"
- 새 기능 개발 또는 버그 수정 시작 전

인자 없이 실행하면 현재 대화 컨텍스트에서 작업 내용을 자동으로 추론한다.

---

## 이슈 타입

→ `docs/conventions/issue-pr.md` 참조 (TYPE 목록·형식·규칙)

PREFIX는 `[FEAT]`, `[FIX]`, `[CI]` 등 작업 성격에 따라 대문자로 자유롭게 지정한다.

---

## 이슈 본문 템플릿

### Feature Request — feat / refactor / ui / style / docs / chore / ci / perf / init

`.github/ISSUE_TEMPLATE/feature_request.md` 기반:

```markdown
### 🛠️ 만들고자 한 기능 설명

{작업 목적과 내용을 2-3문장으로 서술}

### ✅ TODO LIST

- [ ] {세부 작업 1}
- [ ] {세부 작업 2}

### ⏰ 예상 작업 기간

{컨텍스트 기반 예상 기간, 모르면 "-"}

### 📝 참고 링크(선택)

### 🗣️ ETC(선택)

### 📸 피그마 스크린샷
```

### Bug Report — fix

`.github/ISSUE_TEMPLATE/bug_report.md` 기반:

```markdown
## 어떤 버그인가요?

{버그를 간결하게 설명}

<br><br>

## 어떤 상황에서 발생한 버그인가요?

- **Given**: {사전 조건}
- **When**: {어떤 행동을 했을 때}
- **Then**: {어떤 문제가 발생했는지}

<br><br>

## 예상 결과

{정상적으로 동작했어야 할 결과}

<br><br>

## 참고자료

{관련 스크린샷, 에러 로그 등 — 없으면 생략}
```

---

## 브랜치 네이밍 컨벤션

→ `docs/conventions/branch.md` 참조 (구조·타입·형식·규칙)

```
{type}/{scope}/{이슈번호}-{kebab-case-영어설명}

feat/web/5-social-login
fix/web/7-redirect-error
refactor/ui/12-button-cleanup
chore/root/15-turbo-filter-scripts
```

---

## 워크플로우

### Phase 1 — 분석 및 계획 수립

1. 인자에서 타입과 설명 파싱. 없으면 현재 대화 컨텍스트에서 추론.
2. 타입에 맞는 템플릿 선택 후 내용 채우기.
3. `git config user.name`으로 작성자 확인.
4. 계획표 출력 후 **사용자 승인 대기**.

```
## 이슈 생성 계획

타입: feat
제목: [FEAT] 소셜 로그인 기능 구현
Assignee: @me

### 이슈 본문 미리보기
---
(본문 내용)
---

생성될 브랜치: feat/web/{번호}-social-login
Base 브랜치: develop

계속 진행할까요?
```

### Phase 2 — 이슈 생성

```bash
gh issue create \
--title "[FEAT] 소셜 로그인 기능 구현" \
--body "$(cat <<'EOF'
...
EOF
)" \
--assignee "@me"
```

출력된 이슈 URL에서 번호 파싱.

### Phase 3 — 브랜치 생성 및 체크아웃

```bash
git checkout -b {type}/{scope}/{번호}-{description} origin/develop
```

```
이슈 생성 완료: #{번호} — {제목}
URL: https://github.com/{repo}/issues/{번호}
브랜치 생성 완료: {type}/{scope}/{번호}-{description}
이제 작업을 시작할 수 있습니다.
```

---

## 주의사항

- assignee는 항상 `@me`
- `gh` CLI 미인증 시 `gh auth login` 먼저 안내
- 같은 이름의 브랜치가 이미 있으면 사용자에게 알리고 다른 이름 제안
- `origin/develop`이 없는 경우 사용자에게 base 브랜치를 물어본다

---

## 금지

- 사용자 승인 없이 이슈를 생성하지 않는다
- 브랜치 설명에 한국어를 그대로 쓰지 않는다 (반드시 영어 kebab-case 변환)
- `gh` 인증 상태를 확인하지 않고 실행하지 않는다
Loading
Loading