Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
1a676ff
feat : login and MainFE to MainAPP migration
lejuho Mar 11, 2026
4e5faff
chore : 카카오 로그인 디버깅
lejuho Mar 12, 2026
b635d98
Fix Kakao OAuth redirect handling
lejuho Mar 12, 2026
01f435c
feat: 홈 이식 체크리스트 문서 추가
lejuho Mar 12, 2026
a33eb35
refactor: 디자인 변경 구간에 블록 주석 추가
lejuho Mar 12, 2026
9c49fd4
feat: 홈 화면을 MainFE 구조에 맞게 분리
lejuho Mar 12, 2026
e061696
refactor: 홈 이식 체크리스트 진행 상태 갱신
lejuho Mar 12, 2026
fb38d70
feat: 홈 패널 데이터와 지도 모달을 연결
lejuho Mar 12, 2026
6929099
fix: 홈 화분 위치와 말풍선 및 패널 드래그 조정
lejuho Mar 12, 2026
f73f585
refactor: 인증 갱신 API를 분리해 순환 참조 제거
lejuho Mar 12, 2026
48702b7
fix: 홈 마음건강 체크 응답 상태 즉시 반영
lejuho Mar 12, 2026
9e66505
refactor: 홈 미션 패널 기본 위치와 드래그 영역 조정
lejuho Mar 12, 2026
3662e9b
fix: 홈 액션 아이콘 중앙 정렬 조정
lejuho Mar 12, 2026
59cea52
refactor: 홈 화분과 주변 오브젝트 하단 배치 조정
lejuho Mar 12, 2026
a4b14e5
chore: 홈 마이그레이션 문서 상태 동기화
lejuho Mar 12, 2026
e86367d
refactor: 홈 바텀시트 열림 닫힘 인터랙션 개선
lejuho Mar 12, 2026
543bfbd
refactor: 홈 잠금 텃밭 전용 레이아웃과 패널 조건 분리
lejuho Mar 12, 2026
8eb2b66
feat: 일기 작성 이미지 업로드와 제출 흐름 연결
lejuho Mar 12, 2026
b3cc5e8
fix: 홈 미션 상태 갱신 반영
lejuho Mar 13, 2026
b59a379
feat: 퀴즈 재진입 시 답안과 해설 복원
lejuho Mar 13, 2026
c7bc4bf
feat: 완료된 일기 미션에서 오늘 일기 상세 이동
lejuho Mar 13, 2026
c9eada5
refactor: 일기 작성 하단 푸터를 단일 등록 버튼으로 단순화
lejuho Mar 13, 2026
d8a0624
chore: react native gesture handler 의존성 추가
lejuho Mar 13, 2026
9c0f176
refactor: 공통 헤더 액션 레이아웃 조정
lejuho Mar 13, 2026
1bac18a
refactor: 일기 작성 입력 컴포넌트 스타일 조정
lejuho Mar 13, 2026
1363249
fix: 완료된 마음 건강 체크 미션 터치 비활성화
lejuho Mar 13, 2026
1b6ab80
feat: 소망 나무 진행도 게이지 정보 보강
lejuho Mar 13, 2026
1b84838
fix: 홈 미션 패널 확장 높이와 내부 스크롤 보완
lejuho Mar 13, 2026
560f174
refactor: 홈 미션 패널 퀵링크 제거
lejuho Mar 13, 2026
3041d01
fix: 홈 액션 버튼 SVG 정렬 보정
lejuho Mar 13, 2026
cf76acd
fix: 물주기 연출 위치를 식물 왼쪽 상단으로 조정
lejuho Mar 13, 2026
6fa72fc
feat: 비둘기 트래킹 모달을 2주 완수 조건으로 연결
lejuho Mar 13, 2026
ee37265
feat: 비둘기 알림 모달에 방명록과 기록 탭 연결
lejuho Mar 13, 2026
ac13235
feat: 홈 비둘기 알림 배지 표시 추가
lejuho Mar 13, 2026
291a1d6
feat : 트래킹 리포트 상태 조회와 확인 API 연결
lejuho Mar 14, 2026
3ed69c6
feat : 홈에서 2주 리포트 자동 노출 흐름 연결
lejuho Mar 14, 2026
924bcc1
chore: 피드 상세 무한 스크롤 계획 문서 추가
lejuho Mar 15, 2026
4a2ecbf
feat: 피드 상세 무한 스크롤 화면 구현
lejuho Mar 15, 2026
d7dbbb3
feat: 피드 댓글 하단 시트 UX 적용
lejuho Mar 15, 2026
6cbf2c5
fix: 피드 댓글 시트 배경 정렬 보정
lejuho Mar 15, 2026
ef76110
fix: 피드 댓글 시트 전체 높이 고정
lejuho Mar 15, 2026
0b3b701
feat: 피드 댓글 시트 높이 비율 적용
lejuho Mar 15, 2026
6fcce33
feat: 피드 댓글 입력창 하단 고정 적용
lejuho Mar 15, 2026
7299c2f
feat: 피드 댓글 시트 드래그 제스처 적용
lejuho Mar 15, 2026
e3db030
refactor: 피드 댓글 시트를 bottom sheet로 전환
lejuho Mar 15, 2026
e967b1c
fix: 리애니메이티드 버전 불일치 정리
lejuho Mar 15, 2026
3f55cca
fix: 바텀시트 모달 프로바이더 적용
lejuho Mar 15, 2026
237d8a0
feat: 피드 댓글 시트 초기 높이와 랜덤 댓글 입력 지원
lejuho Mar 15, 2026
13a2262
fix: 피드 댓글 입력창 하단 고정 보정
lejuho Mar 15, 2026
742162d
refactor: 피드 댓글 입력창을 바텀시트 푸터로 고정
lejuho Mar 15, 2026
7b2a084
feat: 피드 공감 토글 API 연결
lejuho Mar 15, 2026
e7cefe8
fix: 피드 상세 훅 호출 순서 보정
lejuho Mar 15, 2026
c58188e
fix: 피드 공감 토글 요청 방향 고정
lejuho Mar 15, 2026
9411f97
refactor: 타인 프로필을 정원 페이저 구조로 재구성
lejuho Mar 15, 2026
e05e2eb
feat: 방명록 조회와 작성 API 훅 추가
lejuho Mar 15, 2026
a1e9875
feat: 방명록 전체 화면과 프로필 진입 연결
lejuho Mar 15, 2026
9ab86d8
feat: 타인 프로필 우편함 장식 추가
lejuho Mar 15, 2026
4cfc04d
refactor: 홈 방명록 모달 문구를 수신 흐름에 맞춤
lejuho Mar 15, 2026
df75ef9
refactor: 방명록 작성 후 홈 알림 조회도 갱신
lejuho Mar 15, 2026
c3b6ee9
chore: 소셜 닉네임과 프로필 헤더 계획 문서 추가
lejuho Mar 15, 2026
c229d73
feat: 소셜 신규 유저 닉네임 설정 단계 추가
lejuho Mar 15, 2026
5ddf48a
refactor: 타인 프로필 상단 헤더를 박스형으로 분리
lejuho Mar 15, 2026
607bc71
chore: 소셜 온보딩과 설정 메뉴 현황 문서 추가
lejuho Mar 15, 2026
6e2816e
feat: 설정에서 유저 닉네임 변경 화면 연결
lejuho Mar 15, 2026
d7180d2
feat: 설정에서 이용약관 화면 연결
lejuho Mar 15, 2026
697472a
feat: 설정에서 아바타 닉네임 변경 화면 연결
lejuho Mar 15, 2026
0070228
refactor: 서비스 안내에 온보딩 슬라이드 재사용
lejuho Mar 15, 2026
4b790f3
chore: 비회원 소셜 연동 전환 계획 문서 추가
lejuho Mar 15, 2026
18dd0d7
feat: 소셜 닉네임 설정 필요 응답 분기 추가
lejuho Mar 15, 2026
fdbaf51
feat: 타인 프로필 물주기 연출과 상태 반영
lejuho Mar 15, 2026
de6a3d0
feat: 타인 프로필 물주기 성공 토스트 추가
lejuho Mar 15, 2026
586addc
fix: 물주기 연속 탭 쿨다운 적용
lejuho Mar 15, 2026
0f8d164
feat: 홈 비둘기 기록 unread 배지와 읽음 처리 추가
lejuho Mar 15, 2026
d18d851
fix: 홈 알림 읽음 캐시와 배지 동기화 보정
lejuho Mar 15, 2026
69d118a
fix: 홈 알림 읽음 필드 호환 처리
lejuho Mar 15, 2026
9848986
refactor : 중간 정리
lejuho Mar 15, 2026
7c5fc7e
chore: 성능 점검 계획 문서 추가
lejuho Mar 15, 2026
d0c790b
chore: 화면 로딩 타이밍 로그 추가
lejuho Mar 15, 2026
c9f8959
fix : 아바타 닉네임 변경 1단계 레이아웃 위치 조정 및 한글 주석 추가
lejuho Mar 17, 2026
2f78e18
chore : 중간 정리
lejuho Mar 17, 2026
9b36510
fix: 피드와 팔로우 화면에 새로고침 UI 추가
lejuho Mar 17, 2026
fd70acb
fix : 일기 쓰기 날짜 텍스트 스타일 디자인 반영 (13px→16px, 색상 #282828)
lejuho Mar 17, 2026
7113a9c
fix : 일기 쓰기 제목 입력 영역 디자인 반영 (날짜+제목 섹션 묶음, 24px SemiBold)
lejuho Mar 17, 2026
f98dcb2
feat : 일기 쓰기 화면 피그마 디자인 전면 반영
lejuho Mar 17, 2026
ee1a31b
chore : 화면 조정 및 api 연결,최적화
lejuho Mar 27, 2026
e9ece56
chore : 로고 수정
lejuho Mar 30, 2026
d7da3e5
chore : 크기 및 간격 수정
lejuho Mar 30, 2026
a9daed1
chore : 에이전트 세팅
lejuho Apr 25, 2026
b6946fb
chore : review out of git tracking
lejuho Apr 25, 2026
4b31e2d
refactor : notification read method modify
lejuho Apr 25, 2026
9b418ac
feat : 탈퇴 구현
lejuho Apr 25, 2026
22d3218
fix : expo sdk rollback
lejuho Apr 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions .claude/CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# Architecture
Web2, java spring backend - JDK 17, expo,react native frontend,r2 storage,supabase
# Conventions

# Commands

# prohibited pattern

## 금지 - basic
- critical한 파일 임의 수정 금지

## 금지 — Backend
- req.body 직접 DB, userId from body
- any 타입, 에러 raw throw

## 금지 — Frontend
- useEffect 안 fetch, 인라인 스타일

# Testing & Verify

# Past Failures -> Rules
- 실패/의도와 다른 에러 발생 시 여기에 한줄씩 추가

# Workflow Rules

- 새 모듈/기능 작업 시작 전, 첫 코드 작성 직전에 advisor 호출.
형식: "Approach check: [모듈명], [핵심 판단 지점 2-3개]"
→ Skill("advisor") 로드 후 Agent(model: "opus")로 위임. 응답은 100단어 이내, 단계 나열로만.

- "작업 완료" 선언 직전 advisor 재호출.
형식: "Completion check: [변경된 파일], [회귀 우려 지점]"
→ Skill("advisor") 로드 후 Agent(model: "opus")로 위임. 응답은 100단어 이내.

- Plan 문서(plan.md) 없이 Generate 단계 진입 금지.
plan.md는 Codex가 작성, Claude Code가 비판적 리뷰 후 v2 확정한 것만 유효.

# Cross-Review Loop
- 작업 완료 advisor 호출 후, Codex 세션에 review.md 작성 요청.
- review.md에 issue 1건 이상이면 Claude Code 세션 재개하여 수정.
- 수정 완료 후 같은 review.md에 "RESOLVED: [항목]" 추가하고 Codex 재검증 요청.
- review.md v2도 issue 0건이어야 PR 가능.
- 3회 사이클 후에도 미해결 시 사용자 에스컬레이션. 자동 진행 금지.

# Cross-Review Loop (필수)

작업 완료 선언 직전 advisor 호출 후, 다음 2-pass 교차 검증을 거쳐야 PR 가능:

## Pass 1 — Codex 검증
- Claude Code 세션 종료
- 별도 Codex 세션에서 review.md 작성
- review.md는 다음 3가지를 명시:
1. plan.md Sprint Contract 미충족 항목 (있으면 모두 나열)
2. 자동 체크(test/lint/slither/build) 실패 항목
3. plan.md에 없던 변경사항 (scope creep 식별)
- review.md에 issue 0건이면 Pass 1 완료, 1건 이상이면 Claude Code 세션 재개

## Pass 2 — Claude Code 수정 + 자체 재검증
- Codex review.md 읽고 수정 작업 수행
- 수정 후 자체 테스트/lint 재실행
- 수정 완료 시 review.md에 "RESOLVED: [항목]" 한 줄씩 추가
- 모든 issue가 RESOLVED 되면 작업 완료 advisor 재호출

## Pass 3 — Codex 재검증
- 별도 Codex 세션에서 review.md v2 작성
- v2에서도 issue 발견되면 Pass 2로 복귀
- v2 issue 0건이면 PR 생성 가능

## 최대 반복 횟수
- Pass 1 → Pass 2 → Pass 3 사이클은 최대 3회.
- 3회 후에도 issue 잔존 시 사용자에게 에스컬레이션. 자동 머지 절대 금지.
34 changes: 34 additions & 0 deletions .claude/hooks/force-advisor-check.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#!/bin/bash
# Stop hook — fail-open 원칙: 훅 자체가 실패하면 차단하지 않고 통과

INPUT=$(cat)

# jq 없으면 즉시 통과 (block 안 함)
if ! command -v jq >/dev/null 2>&1; then
exit 0
fi

# JSON 파싱 실패 시 통과
TRANSCRIPT=$(echo "$INPUT" | jq -r '.transcript_path // empty' 2>/dev/null)
STOP_HOOK_ACTIVE=$(echo "$INPUT" | jq -r '.stop_hook_active // false' 2>/dev/null)

# 무한루프 방지 — 한 번 block 한 적 있으면 무조건 통과
[ "$STOP_HOOK_ACTIVE" = "true" ] && exit 0

# transcript 경로가 비었거나 파일이 없으면 통과
[ -z "$TRANSCRIPT" ] && exit 0
[ ! -f "$TRANSCRIPT" ] && exit 0

# transcript 끝부분 읽기 실패 시 통과
RECENT=$(tail -c 20000 "$TRANSCRIPT" 2>/dev/null) || exit 0

# Completion check 이미 했으면 통과
echo "$RECENT" | grep -q "Completion check" && exit 0

# 여기까지 와야 block 발동
cat <<'EOF'
{
"decision": "block",
"reason": "종료 전 강제 advisor 호출 누락. 형식: 'Completion check: [변경 파일 리스트], [회귀 우려 지점 2-3개]'. 100단어 이내 응답을 받은 후 종료할 것."
}
EOF
30 changes: 30 additions & 0 deletions .claude/hooks/track-failures.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/bin/bash
# .claude/hooks/track-failures.sh
# PostToolUse(Bash) — Bash 출력에서 실패 패턴 추적

INPUT=$(cat)
TOOL_OUTPUT=$(echo "$INPUT" | jq -r '.tool_response.stdout // ""')
TOOL_STDERR=$(echo "$INPUT" | jq -r '.tool_response.stderr // ""')

# 실패 시그니처 추출 (테스트명/에러 첫 줄)
SIGNATURE=$(echo "$TOOL_STDERR$TOOL_OUTPUT" \
| grep -E "FAIL|Error:|revert|✗" \
| head -1 \
| sha256sum | cut -c1-16)

[ -z "$SIGNATURE" ] && exit 0 # 실패 없으면 종료

# 카운터 파일에 누적
COUNTER_FILE="/tmp/claude-failures-$$.log"
COUNT=$(grep -c "^$SIGNATURE$" "$COUNTER_FILE" 2>/dev/null || echo 0)
echo "$SIGNATURE" >> "$COUNTER_FILE"

if [ "$COUNT" -ge 1 ]; then
# 2회째 — advisor 호출 강제
cat <<EOF
{
"decision": "block",
"reason": "같은 에러가 2회 반복됨. 같은 방법으로 재시도 금지. 즉시 advisor 호출하여 다른 접근법 받을 것. 형식: 'Loop break: [에러 시그니처], [지금까지 시도한 것 3개], [근본 원인 가설]'. 100단어 이내."
}
EOF
fi
62 changes: 62 additions & 0 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
{
"permissions": {
"allow": [
"Read(//c/Users/USER/.claude/**)",
"Bash(bash /c/MainAPP/.claude/hooks/force-advisor-check.sh)",
"Bash(echo \"exit=$?\")",
"Bash(codex --version)",
"Bash(npx @openai/codex --version)",
"Bash(npm show *)",
"Edit(/.claude/skills/advisor/**)"
],
"additionalDirectories": [
"c:\\MainAPP\\.claude\\skills"
]
},
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": ".claude/hooks/block-dangerous.sh"
}
]
}
],
"PostToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": ".claude/hooks/track-failures.sh"
}
]
},
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": ".claude/hooks/auto-format.sh"
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": ".claude/hooks/force-advisor-check.sh"
}
]
}
]
},
"enabledPlugins": {
"codex@openai-codex": true
}
}
22 changes: 22 additions & 0 deletions .claude/settings.local.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"permissions": {
"allow": [
"Skill(update-config)",
"mcp__figma-desktop__get_design_context",
"Bash(python3 -c \"import json,sys; d=json.load\\(sys.stdin\\); print\\(json.dumps\\(d.get\\(''''mcpServers'''', {}\\), indent=2\\)\\)\")",
"Bash(claude mcp:*)",
"mcp__plugin_figma_figma__whoami",
"mcp__plugin_figma_figma__get_design_context",
"mcp__plugin_figma_figma__get_metadata",
"Bash(python3:*)",
"mcp__figma-desktop__get_screenshot",
"mcp__plugin_figma_figma__get_screenshot",
"Bash(git add:*)",
"Bash(git commit:*)",
"Read(//c/MainBE/**)",
"Bash(xargs grep:*)",
"Bash(head -20 grep -n \"usePostComment\\\\|useDeleteComment\\\\|refetch\\\\|comments\" c:/MainAPP/src/pages/feed/FeedAvatarScreen.tsx)",
"Bash(grep -r fastapi /c/MainBE --include=*.yml --include=*.yaml --include=*.properties --include=*.env)"
]
}
}
26 changes: 26 additions & 0 deletions .claude/skills/advisor/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
name: advisor
description: "아키텍처·구현 접근법에 대한 Opus 모델 어드바이저. CLAUDE.md 워크플로우 규칙에 따라 Approach check / Completion check 시 호출. 100단어 이내, 단계 나열로만 응답."
---

# Advisor 규칙

이 스킬이 로드되면 반드시 **Agent tool (model: "opus")** 을 통해 어드바이저 응답을 위임한다.

## 호출 방식

```
Agent({
subagent_type: "general-purpose",
model: "opus",
description: "Advisor check",
prompt: "<사용자의 Approach check / Completion check 질문 그대로 전달>"
})
```

## 응답 형식 (Opus에게 전달할 프롬프트에 포함)

- 100단어 이내
- 단계 나열로만 (산문 금지)
- Approach check: 접근 순서 + 핵심 판단 지점만
- Completion check: 회귀 위험 항목 + 검증 필요 포인트만
Loading