Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
327 commits
Select commit Hold shift + click to select a range
5d05241
🌟feat: NotificationCenter 주입 받은 인스턴스 받을 수 있도록 변경
yy-ss99 Mar 25, 2026
19f7a3f
🌟feat: 오류처리 가능하게 수정
yy-ss99 Mar 25, 2026
819045d
🩹chore: ViewController에 불필요한 코드 제거
yy-ss99 Mar 25, 2026
e650049
Merge pull request #21 from mastarTrack/feature/MissionResultView#6
yy-ss99 Mar 25, 2026
bc555fb
Merge branch 'develop' into feature/StopWatch#8
TyrHanz Mar 25, 2026
d346f30
Merge branch 'develop' into Feature/MissionView#4
ybin4548 Mar 25, 2026
f7b0231
♻️refactor: 레이블 설정값 수정
TyrHanz Mar 25, 2026
de7cadd
Merge pull request #14 from mastarTrack/feature/StopWatch#8
TyrHanz Mar 25, 2026
4784933
Merge branch 'develop' into feature/StopWatch#9
TyrHanz Mar 25, 2026
6a9c919
🐛fix: AlarmListViewCell 메서드 주석처리, ViewController 연결
ybin4548 Mar 25, 2026
8b8b510
♻️refactor: 레이블 설정값 수정
TyrHanz Mar 25, 2026
476e5c5
Merge pull request #15 from mastarTrack/feature/StopWatch#9
TyrHanz Mar 25, 2026
7b82bed
Merge pull request #22 from mastarTrack/Fix
yy-ss99 Mar 25, 2026
eab6b2c
Merge branch 'develop' into feature/StopWatch#10
TyrHanz Mar 25, 2026
2de7487
Merge pull request #18 from mastarTrack/feature/StopWatch#10
TyrHanz Mar 25, 2026
135be2c
Merge branch 'develop' into Feature/MissionView#4
ybin4548 Mar 25, 2026
62020b5
♻️ refactor: ActivatedMissionCell 시간 위치 수정
ybin4548 Mar 25, 2026
388f698
♻️ refactor: ActivatedMissionCell StateLabel 수정
ybin4548 Mar 25, 2026
619fecd
♻️ refactor: ActivatedMissionCell Label Config 수정
ybin4548 Mar 25, 2026
c65f749
♻️ refactor: CustomMissionCell Label Config 수정
ybin4548 Mar 25, 2026
b425312
♻️ refactor: ActivatiedMissionCell Button Background 지정
ybin4548 Mar 25, 2026
8a2a9f5
♻️ refactor: CustomButtonCell Button 수정
ybin4548 Mar 25, 2026
3822bd8
♻️ refactor: CreateMissionView Label Config 수정
ybin4548 Mar 25, 2026
6fc12d8
✨feat: ChartView 생성 및 배치 완료
devBambu Mar 25, 2026
ca0d298
✨feat: Color Assets 추가: secondLabel
ybin4548 Mar 25, 2026
45c7e1f
🌟feat: 스탑워치 기본 로직 구현
TyrHanz Mar 25, 2026
071bf6b
♻️ refactor: StateLabel convenience init -> font 설정 추가
ybin4548 Mar 25, 2026
1704bb1
♻️Refactor: rx -> addTarget으로 가볍게 동작하도록 수정
coduhee Mar 25, 2026
8a85037
✨Feat: Alarm 데이터 모델에 isOn 변수 추가
coduhee Mar 25, 2026
a37e257
♻️ refactor: CustomMissionCell -> titleLabel font 설정 추가
ybin4548 Mar 25, 2026
98c7d1e
♻️ refactor: MissionHeaderView -> Label Config 추가
ybin4548 Mar 25, 2026
ec48d3b
♻️ refactor: CreateMissionView Heaer -> Label Config 수정, Stepper 제약 조…
ybin4548 Mar 25, 2026
899bbf3
Merge pull request #20 from mastarTrack/Feature/MissionView#4
ybin4548 Mar 25, 2026
b9ce458
♻️ refactor: CreateMissionView Layout 수정
ybin4548 Mar 25, 2026
d25ef17
♻️ refactor: CreateMissionView Layout 수정
ybin4548 Mar 25, 2026
a6fc418
✨feat: CreateMissionViewModel 생성, Stepper Data -> valueLabel 바인딩
ybin4548 Mar 25, 2026
809e95e
✨Feat: MainController에 알람 VC 연결
coduhee Mar 25, 2026
74fef4b
✨Feat: AlarmModel 구현
coduhee Mar 25, 2026
e055676
✨Feat: AlarmList 로직 구현
coduhee Mar 25, 2026
b2f82de
✨feat: 미션 생성 로직 구현(조건 제약 x)
ybin4548 Mar 25, 2026
7c65ce6
🚚build: 애니메이션을 위한 에셋 추가
yy-ss99 Mar 25, 2026
7d0b95a
🚚build: TimerAnimationView 파일 및 기본 구현 추가
yy-ss99 Mar 25, 2026
8b54213
🚚build: TimerAnimationViewController 파일 추가 및 기본 구현
yy-ss99 Mar 25, 2026
47db047
🚚build: TimerView 파일 추가 및 기본 구현
yy-ss99 Mar 25, 2026
f4f52d3
✨feat: MainView UI 구성 완료
devBambu Mar 25, 2026
250deb1
✨feat: ChartView의 HostingController VC와 생명주기 동기화
devBambu Mar 25, 2026
2a8d918
🩹chore: 설명 주석 추가
devBambu Mar 25, 2026
d5104da
Merge branch 'develop' into feature/HomeTab#11
devBambu Mar 25, 2026
fbeb9ab
♻️refactor: 피드백 반영 수정
devBambu Mar 25, 2026
806f889
Merge branch 'feature/HomeTab#11' of https://github.com/mastarTrack/R…
devBambu Mar 25, 2026
9f3892c
🌟feat: 일시정지 로직 추가
TyrHanz Mar 26, 2026
f9a7b3b
🌟feat: 뷰모델 프로토콜 제작
TyrHanz Mar 26, 2026
801799d
Update RocketCall/ViewModel/ViewModelProtocol.swift
TyrHanz Mar 26, 2026
47cb98e
Merge pull request #27 from mastarTrack/feature/ProtocolDef
TyrHanz Mar 26, 2026
6381339
✨feat: 조건에 따라 버튼 enabled
ybin4548 Mar 26, 2026
13b314c
♻️refactor: 피드백 반영 setLayout 메서드 경량화
devBambu Mar 26, 2026
a57972e
Merge branch 'develop' into feature/AlarmSettingViewModel#17
coduhee Mar 26, 2026
15fc0bd
✨feat: 빠른 선택 View 클릭 시 색상 표시 이벤트 추가
ybin4548 Mar 26, 2026
c61d3da
✨feat: 빠른 선택 시 Stepper 바인딩, 취소 시 포함
ybin4548 Mar 26, 2026
142c892
Merge branch 'develop' into Feature/CreateMission#19
ybin4548 Mar 26, 2026
12c2410
✨feat: Alert 추가 -> Error 메시지 추가 필요
ybin4548 Mar 26, 2026
e9fc3b6
🩹chore: 네이밍 수정
ybin4548 Mar 26, 2026
6bf8143
♻️ refactor: ViewModel Error 지정
ybin4548 Mar 26, 2026
7ce7e8d
✨Feat: AlarmSettingView UI 구현
coduhee Mar 26, 2026
332baba
✨Feat: AlarmSetting VC, VM 구현
coduhee Mar 26, 2026
5e5af2e
♻️Refactor: AlarmListViewCell 셀 간격 수정
coduhee Mar 26, 2026
e0d824d
✨Feat: ViewModel 프로토콜 채택
coduhee Mar 26, 2026
8d92215
✨Feat: 코어데이터 AlarmEntity에 isOn 추가
coduhee Mar 26, 2026
46ec8fa
🐞fix: 차트뷰 오토레이아웃 버그 수정
devBambu Mar 26, 2026
3496b14
Merge pull request #26 from mastarTrack/feature/HomeTab#11
devBambu Mar 26, 2026
d2d8d98
🚚build: Alarm 폴더로 파일 이동
coduhee Mar 26, 2026
ca8fd69
♻️ refactor: 저장 실패 시 Alert -> 오류 문구 추가, BaseCardView isOn alpha 조정
ybin4548 Mar 26, 2026
07763ab
Merge pull request #29 from mastarTrack/Feature/CreateMission#19
ybin4548 Mar 26, 2026
d0263b3
📝docs: Mission 디렉토리 분리
ybin4548 Mar 26, 2026
bc116aa
Merge branch 'develop' into feature/AlarmSettingViewModel#17
coduhee Mar 26, 2026
dba4ebf
✨feat: CustomMissionCell CoreData 연결
ybin4548 Mar 26, 2026
ed6f2e9
♻️ refactor: 미션 생성 후 bind를 위해 viewWillAppear에 PublishSubject 추가
ybin4548 Mar 26, 2026
8cf332c
♻️ refactor: CustomMissionCell 시간 표시 조건 추가
ybin4548 Mar 26, 2026
5c96a34
Merge pull request #31 from mastarTrack/feature/AlarmSettingViewModel#17
coduhee Mar 26, 2026
7954e2e
✨Feat: AppDelegate에 알람 권한 요청
coduhee Mar 26, 2026
d3844db
✨Feat: AlarmModel에 애플 기준 요일 숫자 로직 추가
coduhee Mar 26, 2026
23c4f1b
🌟feat: 스탑워치 reset 로직 추가
TyrHanz Mar 26, 2026
cefc68e
✨feat: HomeViewModel 생성 및 새로고침 이벤트 생성
devBambu Mar 26, 2026
71b6c3f
🌟feat: 행성 커지는 애니메이션 구현
yy-ss99 Mar 26, 2026
e1daee2
✨feat: MainController VC 수정
devBambu Mar 26, 2026
c0645d8
🩹chore: 차트 카드뷰 테두리 색상 수정
devBambu Mar 26, 2026
a51b481
Merge branch 'feature/TimerAnimationView#25' into feature/TimerAnimat…
yy-ss99 Mar 26, 2026
94a7670
✨feat: 가장 가까운 알람 불러오기 로직 구현
devBambu Mar 26, 2026
8346549
✨feat: sceneDidActiveBecome 동작 추가
devBambu Mar 26, 2026
f36d209
✨feat: fetchData 이벤트 변경
devBambu Mar 26, 2026
61c5fc7
🩹chore: 주석 추가
devBambu Mar 26, 2026
a4d5392
🌟feat: BottomView 구현
yy-ss99 Mar 26, 2026
a661c65
✨feat: 누적 결과 계산 로직 구현 완료
devBambu Mar 26, 2026
7c0c6eb
✨feat: ActivatedMissionPayload 추가
ybin4548 Mar 26, 2026
6c33272
🌟feat: 스탑워치 레코드 기능추가
TyrHanz Mar 26, 2026
a9b73e9
✨feat: TimerViewModel 추가
ybin4548 Mar 26, 2026
2ffe34b
✨feat: alarm 바인딩 작업중
devBambu Mar 26, 2026
844f4dc
✨feat: 커스텀 임무 활성화 기능 추가
ybin4548 Mar 26, 2026
d5e9c9d
✨feat: DiffableDataSource 추가
ybin4548 Mar 26, 2026
afb3bf0
✨feat: 타이머 기능 연결
ybin4548 Mar 26, 2026
4b75bf9
♻️ refactor: 애니메이션 수정
ybin4548 Mar 26, 2026
d01d7e2
✨feat: 타이머 일시정지, 재개 기능 추가
ybin4548 Mar 26, 2026
5718148
✨feat: 타이머 종료 시 저장 로직 추가
ybin4548 Mar 26, 2026
08b3883
✨feat: 타이머 정지 기능 추가(정지 버튼 클릭 시 상태 false로 저장)
ybin4548 Mar 26, 2026
8c9ca24
✨feat: CoreData 로딩 실패 error Alert 로직 추가
ybin4548 Mar 26, 2026
8e713c1
✨feat: 메인화면 바인딩 완료
devBambu Mar 26, 2026
beaead8
✨feat: 주간 기록 로직 작성
devBambu Mar 26, 2026
924ac76
✨Feat: AppIcon 추가
coduhee Mar 27, 2026
066e79b
✨feat: 차트뷰 데이터 바인딩 완료
devBambu Mar 27, 2026
89302bc
✨feat: 알람 카드뷰 제스처 추가
devBambu Mar 27, 2026
f472feb
🐞fix: AlarmCardView 레이아웃 버그 수정
devBambu Mar 27, 2026
5ef4a3b
🩹chore: 주석 추가, 차트뷰 데이터 바인딩 위치 변경
devBambu Mar 27, 2026
792a732
🩹chore: 주석 추가
devBambu Mar 27, 2026
87b4720
Update RocketCall/View/HomeTab/View/AlarmCardView.swift
devBambu Mar 27, 2026
2b4f95b
♻️refactor: 피드백 반영 수정
devBambu Mar 27, 2026
f63465d
Merge branch 'feature/HomeTab-28' of https://github.com/mastarTrack/R…
devBambu Mar 27, 2026
9785c8e
✨feat: DetailCollectionView 생성
devBambu Mar 27, 2026
77f211f
🩹chore: 불필요 모듈 삭제
devBambu Mar 27, 2026
7171a8f
Merge branch 'feature/HomeTab-28' into feature/HomeTab#35
devBambu Mar 27, 2026
a0b0769
🌟feat: 컨테이너뷰 구현 완료
yy-ss99 Mar 27, 2026
cac4e63
Merge pull request #36 from mastarTrack/containerView#33
yy-ss99 Mar 27, 2026
1302f63
✨feat: DetailCollectionView 레이아웃 생성
devBambu Mar 27, 2026
eaaeac3
✨feat: SumlCardViewCell 생성
devBambu Mar 27, 2026
c867259
♻️Refactor: 앱아이콘 png파일 삭제
coduhee Mar 27, 2026
d25fa20
✨Feat: AlarmSound.wav 파일 추가
coduhee Mar 27, 2026
dbb747e
♻️Refactor: AlarmModel appleWeekDay 오타 수정
coduhee Mar 27, 2026
90bf445
♻️Refactor: 레이아웃 우선순위 지정
coduhee Mar 27, 2026
9520c3b
✨Feat: 스와이프 삭제, 토글 버튼 알람 예약 로직 구현
coduhee Mar 27, 2026
f560b26
✨Feat: AlarmRingVC 띄우는 로직 추가
coduhee Mar 27, 2026
ce2f05c
🌟feat: 낮은 버전에도 statusBar 부분 잘 보이도록 설정
yy-ss99 Mar 27, 2026
ccd7679
♻️Refactor: timeLabel weight 수정, snoozeButton 백그라운드 색상 변경
coduhee Mar 27, 2026
76b0af6
✨Feat: AlarmRingVC 구현
coduhee Mar 27, 2026
c653259
✨Feat: 앱 아이콘 icon 파일 추가
coduhee Mar 27, 2026
37f57a3
✨Feat: NotificationManager 구현
coduhee Mar 27, 2026
497d50b
🌟feat: 자식 뷰 컨트롤러가 변경 못하게 수정 하기
yy-ss99 Mar 27, 2026
77334ec
✨Feat: 앱 아이콘 이름 설정
coduhee Mar 27, 2026
9ff0611
Merge pull request #38 from mastarTrack/feature/statusBarCustom#37
yy-ss99 Mar 27, 2026
cb191fb
♻️Refactor: 중괄호 오타 수정
coduhee Mar 27, 2026
13ff1b0
✨feat: sumSectionCell Registration
devBambu Mar 27, 2026
ff45e79
✨Feat: 알람 예약 로직 추가 및 타임피커 버그 수정
coduhee Mar 27, 2026
d7c2e53
Merge branch 'develop' into feature/AlarmNotification#32
coduhee Mar 27, 2026
8b658ad
♻️Refactor: 스누즈 알람 타이머 시간 10초->300초 변경
coduhee Mar 27, 2026
e16896c
✨feat: ChartCell Registration
devBambu Mar 27, 2026
e54e833
✨feat: 차트뷰 클릭 시 상세 화면 VC push 기능 구현
devBambu Mar 27, 2026
4bdff34
🌟feat: 백그라운드 진입 관련 로직 추가
TyrHanz Mar 27, 2026
5cad9b8
🐛fix: 공용 코드 수정 부분 삭제
TyrHanz Mar 27, 2026
88652e2
✨feat: 미션 결과 ListCell 생성
devBambu Mar 27, 2026
eb49031
✨feat: updateMission 로직 수정
ybin4548 Mar 27, 2026
b88e70b
Merge branch 'develop' into Feature/MissionViewController#30
ybin4548 Mar 27, 2026
eb63c9b
♻️ refactor: Diffable 순환참조 방지
ybin4548 Mar 27, 2026
6717d36
♻️ refactor: TimerViewModel saveMission 인스턴스 self 캡쳐
ybin4548 Mar 27, 2026
bce9439
🩹chore: ActivatedMissionCell 변수명 수정
ybin4548 Mar 27, 2026
0631c22
♻️ refactor: Cell Dequeue Fail 시 fatalError 추가
ybin4548 Mar 27, 2026
b14d77c
🩹chore: hash 판단 기준 수정
devBambu Mar 27, 2026
3aa22e9
♻️ refactor: mission 중복 선언 제거
ybin4548 Mar 27, 2026
28eaa3a
🩹chore: initialize 네이밍 오타 수정
ybin4548 Mar 27, 2026
83424a5
🩹chore: 목업 데이터 값 수정
yy-ss99 Mar 27, 2026
34417d8
♻️refactor: 스탑워치 VC - VM 바인딩 로직 변경
TyrHanz Mar 27, 2026
f3b4e8e
Merge pull request #42 from mastarTrack/feature/TimerAnimationView2#25
yy-ss99 Mar 27, 2026
71b7c30
🐞fix: setLayout 추가
devBambu Mar 27, 2026
64879cf
Merge branch 'develop' into feature/HomeTab-28
devBambu Mar 27, 2026
74025da
Merge pull request #34 from mastarTrack/feature/HomeTab-28
devBambu Mar 27, 2026
f7cbc2f
♻️refactor: 스탑워치 초기화 시, 최신 레코드 배경색상이 잘못배치되는 문제 해결
TyrHanz Mar 27, 2026
b9fb908
Merge pull request #39 from mastarTrack/feature/AlarmNotification#32
coduhee Mar 27, 2026
024023a
♻️refactor: 셀 cornerRadius 값 수정
TyrHanz Mar 27, 2026
add1dba
Merge pull request #43 from mastarTrack/feature/HomeTab#35
devBambu Mar 27, 2026
660d212
Merge pull request #40 from mastarTrack/feature/StopWatch#23
TyrHanz Mar 27, 2026
a2eb94c
Merge branch 'develop' into Feature/MissionViewController#30
ybin4548 Mar 27, 2026
0d2a29b
Merge pull request #41 from mastarTrack/Feature/MissionViewController#30
ybin4548 Mar 27, 2026
e779df0
🐛fix: MainController 괄호 수정
ybin4548 Mar 27, 2026
7634acd
🩹chore: fourthVC 연결
ybin4548 Mar 27, 2026
2ba0a07
🐛fix: MainController 괄호 수정
ybin4548 Mar 27, 2026
9ad9844
✨feat: Timer Background 동작, Notifications 추가
ybin4548 Mar 27, 2026
9f06a78
✨feat: ResultListCell Registration
devBambu Mar 27, 2026
3ee73fe
✨feat: identifier 수정
ybin4548 Mar 27, 2026
80b7f82
✨feat: 백그라운드 시 알림 클릭할 경우 임무 탭 연결
ybin4548 Mar 27, 2026
4f1fe67
feat: 기능 추가
ybin4548 Mar 27, 2026
f90fe29
✨feat: 결과 저장 시 MissionResult 연결
ybin4548 Mar 27, 2026
830088d
✨feat: 빠른선택 시 Stepper (plus,minus Button Enabled)
ybin4548 Mar 27, 2026
8fb5891
♻️ refactor: identifier 추출 -> 타이머 관련 알람만 제거
ybin4548 Mar 27, 2026
d90adcd
Merge pull request #48 from mastarTrack/Feature/TimerBackground#47
ybin4548 Mar 27, 2026
708afce
✨feat: GradientProgressView 생성
devBambu Mar 27, 2026
255ae4b
✨feat: ProgressCell 구성
devBambu Mar 27, 2026
2790077
✨feat: progressCell Registration, setSnapshot
devBambu Mar 27, 2026
9728a86
✨feat: 상세화면 collectionview 데이터 바인딩 기초작업 완료
devBambu Mar 27, 2026
0601d57
🐞fix: DetailCollectionView 레이아웃 수정
devBambu Mar 28, 2026
7121dd8
🐞fix: DetailCollectionView 레이아웃 수정
devBambu Mar 28, 2026
9b1df3c
♻️refactor: 미션 결과 통계 계산 메서드 리팩토링
devBambu Mar 28, 2026
535e9b8
♻️refactor: 주간 누적 기록 fetch 메서드 리팩토링
devBambu Mar 28, 2026
c86a0ea
♻️refactor: HomeViewModel 리팩토링, HomeMainView 바인딩 함수 리팩토링
devBambu Mar 28, 2026
af011c1
✨feat: Progress Section 사용 데이터 생성 함수
devBambu Mar 28, 2026
fd3b12b
✨feat: ProgressView 사용 데이터 생성 함수
devBambu Mar 28, 2026
8e00990
✨feat: 상세화면 컬렉션뷰 데이터 바인딩 완료
devBambu Mar 28, 2026
83857c3
✨feat: 결과 목록 셀 표시형식 변경
devBambu Mar 28, 2026
aac4e60
🐞fix: 차트뷰 단위 수정
devBambu Mar 28, 2026
f19b9d0
✨feat: Notification Manager 확장 - 가장 가까운 알람의 UUID 가져오기
devBambu Mar 28, 2026
4983e87
✨feat: 가장 가까운 알람 불러오기 로직 수정
devBambu Mar 28, 2026
6c88531
✨feat: 가장 가까운 알람 가져오기 기능 구현
devBambu Mar 28, 2026
082c55f
✨feat: 행성 목록 present
devBambu Mar 28, 2026
fa232ae
✨feat: 기록 결과 화면 present
devBambu Mar 28, 2026
6f3fc50
🐞fix: 피드백 반영 오류 수정
devBambu Mar 29, 2026
65daf7c
Merge pull request #49 from mastarTrack/feature/HomeTab#45
devBambu Mar 29, 2026
3989123
✨feat: Home HeaderView 생성
devBambu Mar 29, 2026
5fa8ec1
✨feat: 컬렉션뷰 헤더 컴포넌트 생성
devBambu Mar 29, 2026
f7185cf
✨feat: 상세화면 컬렉션뷰 헤더 추가
devBambu Mar 29, 2026
06c2857
✨feat: 헤더 레이아웃 수정
devBambu Mar 29, 2026
7da6a35
🌟feat: 백그라운드 동작 로직 추가
TyrHanz Mar 29, 2026
833a7a2
🌟feat: 자유항행 기준 현재 위치 텍스트 표시
TyrHanz Mar 29, 2026
1b8b6f0
🌟feat: 자유항행 목적지별 정보 컨테이너 표기 기능 추가
TyrHanz Mar 29, 2026
cb06912
Merge pull request #51 from mastarTrack/feature/Stopwatch#46
TyrHanz Mar 29, 2026
c5975d7
✨feat: 상세 보기 버튼 동작 설정
devBambu Mar 29, 2026
7817084
✨feat: 상세화면 - Result 섹션 헤더뷰 액션 바인딩
devBambu Mar 29, 2026
9f1bbef
🌟feat: 마무리 하기
yy-ss99 Mar 29, 2026
84f3cde
♻️refactor: ProgressCell 바인딩 리팩토링
devBambu Mar 29, 2026
7f311ed
♻️refactor: 화면 전환이나 불필요한 파라미터 생성을 막도록 수정
yy-ss99 Mar 29, 2026
5b990e6
🌟feat: 타이머마다 다른 행성 뜨는 기능 추가
yy-ss99 Mar 29, 2026
5b1d3e3
Merge pull request #52 from mastarTrack/feature/TimerAnimationViewRef…
yy-ss99 Mar 29, 2026
95cceee
✨feat: 모든 미션 결과 화면 구성 및 push 동작 구현 완료
devBambu Mar 29, 2026
a248fc7
♻️Refactor: 디버깅 print문 삭제
coduhee Mar 29, 2026
e32a1f4
✨feat: 미션 결과 화면 상세화면 띄우기 구현 완료
devBambu Mar 29, 2026
72e98a5
🐞Fix: 알람 중지시 요일 반복 알람 삭제 버그 수정
coduhee Mar 29, 2026
b48b513
Merge pull request #55 from mastarTrack/feature/AlarmNotification#32
coduhee Mar 29, 2026
a2f74c2
♻️refactor: 상세 화면 띄우기 바인딩 코드 리팩토링
devBambu Mar 29, 2026
14f529b
🩹chore: 주석 삭제
devBambu Mar 29, 2026
43ac824
Merge pull request #54 from mastarTrack/feature/HomeTab#50
devBambu Mar 29, 2026
99d7836
🐞Fix: 알람 (초) 설정 8->9 오탈자 수정
coduhee Mar 29, 2026
97c568e
♻️Refactor: 의존성 주입 코드 수정
coduhee Mar 29, 2026
d8627cd
🐞Fix: 알람 uuid 전달 버그, 알람 추가 비동기 시간 버그 수정
coduhee Mar 29, 2026
118ff55
♻️Refactor: 디버깅 print문 삭제
coduhee Mar 29, 2026
942b3d0
Merge branch 'feature/AlarmNotification#32' into develop
coduhee Mar 29, 2026
4b39cd9
🌟feat: 홈으로가기 버튼 삭제
yy-ss99 Mar 30, 2026
4f29db9
Merge pull request #56 from mastarTrack/feature/fixResultView
yy-ss99 Mar 30, 2026
a6b24c5
Revise README with project overview and features
TyrHanz Mar 30, 2026
f40dc72
Fix formatting for GitHub and Figma links
TyrHanz Mar 30, 2026
0c52430
♻️refactor: 미션 결과 셀 사용 모델 리팩토링
devBambu Mar 30, 2026
f0b5dc7
✨feat: 상세화면 컨트롤러 알럿
devBambu Mar 30, 2026
726dc91
✨feat: 메인 화면 알럿
devBambu Mar 30, 2026
632716a
✨feat: 미션 결과 화면 알럿
devBambu Mar 30, 2026
637fca4
✨feat: ActivatedMissionCell에 ProgressView 추가
ybin4548 Mar 30, 2026
8d6ce3a
✨feat: ActivatedMissionCell에 ProgressView 추가
ybin4548 Mar 30, 2026
816e040
Merge pull request #60 from mastarTrack/ReadMe
TyrHanz Mar 30, 2026
d74eb1d
🐞fix: 프로그레스바 계산 로직 입력값 수정
devBambu Mar 30, 2026
7808a20
Remove 'World Clock' feature from future improvements
TyrHanz Mar 30, 2026
496b0cf
🌟feat: 이전 화면으로 가기 버튼 기능추가
yy-ss99 Mar 30, 2026
05df132
Merge pull request #62 from mastarTrack/feature/HomeTab#57
devBambu Mar 30, 2026
2cc8521
🐞fix: HomeHeaderView titleLabel 우선순위 수정
devBambu Mar 30, 2026
0632622
✨feat: CustomMissionCell 삭제 기능 추가
ybin4548 Mar 30, 2026
7a8d7ce
✨feat: CustomMissionCell 삭제 기능 추가
ybin4548 Mar 30, 2026
f3784fa
♻️ refactor: 오타 수정, 오류 출력 수정
ybin4548 Mar 30, 2026
4abc35c
♻️ refactor: 오타 수정, 오류 출력 수정
ybin4548 Mar 30, 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
305 changes: 305 additions & 0 deletions .github/workflows/project-status-sync.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,305 @@
name: Sync Project Status from Issue Flow

on:
issues:
types: [opened]
create:
push:
pull_request:
types: [opened, reopened, ready_for_review]

permissions:
contents: read

jobs:
sync-status:
runs-on: ubuntu-latest

steps:
- name: Sync issue status in project
uses: actions/github-script@v7
env:
PROJECT_OWNER: mastarTrack
PROJECT_NUMBER: "7"

STATUS_BACKLOG: Backlog
STATUS_READY: Ready
STATUS_IN_PROGRESS: In progress
STATUS_IN_REVIEW: In review
with:
github-token: ${{ secrets.PROJECT_TOKEN }}
script: |
const repoOwner = context.repo.owner;
const repoName = context.repo.repo;

const PROJECT_OWNER = process.env.PROJECT_OWNER;
const PROJECT_NUMBER = Number(process.env.PROJECT_NUMBER);

const STATUS = {
backlog: process.env.STATUS_BACKLOG || "Backlog",
ready: process.env.STATUS_READY || "Ready",
inProgress: process.env.STATUS_IN_PROGRESS || "In Progress",
inReview: process.env.STATUS_IN_REVIEW || "In Review",
};

let cachedProject = null;
let cachedStatusField = null;

function uniqueNumbers(values) {
return [...new Set(values.filter(Boolean).map(Number))];
}

function extractIssueNumbersFromBranch(branchName) {
if (!branchName) return [];
const matches = [...branchName.matchAll(/#(\d+)/g)];
return uniqueNumbers(matches.map(m => m[1]));
}

function extractIssueNumbersFromRefText(text) {
if (!text) return [];
const matches = [
...text.matchAll(/(?:^|\s)refs?\s+#(\d+)\b/gi),
...text.matchAll(/(?:^|\s)(?:close|closes|closed|fix|fixes|fixed|resolve|resolves|resolved)\s+#(\d+)\b/gi),
];
return uniqueNumbers(matches.map(m => m[1]));
}

function extractIssueNumbersFromPR(pr) {
const fromBranch = extractIssueNumbersFromBranch(pr?.head?.ref || "");
const fromText = extractIssueNumbersFromRefText(
`${pr?.title || ""}\n${pr?.body || ""}`
);
return uniqueNumbers([...fromBranch, ...fromText]);
}

async function getProject() {
if (cachedProject) return cachedProject;

const data = await github.graphql(
`
query($projectOwner: String!, $projectNumber: Int!) {
organization(login: $projectOwner) {
projectV2(number: $projectNumber) {
id
number
fields(first: 100) {
nodes {
... on ProjectV2SingleSelectField {
id
name
options {
id
name
}
}
}
}
}
}
user(login: $projectOwner) {
projectV2(number: $projectNumber) {
id
number
fields(first: 100) {
nodes {
... on ProjectV2SingleSelectField {
id
name
options {
id
name
}
}
}
}
}
}
}
`,
{
projectOwner: PROJECT_OWNER,
projectNumber: PROJECT_NUMBER,
}
);

cachedProject = data.organization?.projectV2 ?? data.user?.projectV2;

if (!cachedProject) {
throw new Error(`Project not found: ${PROJECT_OWNER} / #${PROJECT_NUMBER}`);
}

return cachedProject;
}

async function getStatusField() {
if (cachedStatusField) return cachedStatusField;

const project = await getProject();
const statusField = project.fields.nodes.find(
field => field && field.name === "Status"
);

if (!statusField) {
throw new Error('Status field not found in the project.');
}

cachedStatusField = statusField;
return cachedStatusField;
}

async function getIssueAndItem(issueNumber) {
const data = await github.graphql(
`
query($owner: String!, $repo: String!, $issueNumber: Int!) {
repository(owner: $owner, name: $repo) {
issue(number: $issueNumber) {
id
number
projectItems(first: 100) {
nodes {
id
project {
... on ProjectV2 {
id
number
}
}
}
}
}
}
}
`,
{
owner: repoOwner,
repo: repoName,
issueNumber,
}
);

return data.repository?.issue ?? null;
}

async function ensureProjectItem(issueNumber) {
const project = await getProject();
const issue = await getIssueAndItem(issueNumber);

if (!issue) {
core.warning(`Issue #${issueNumber} not found in ${repoOwner}/${repoName}`);
return null;
}

let itemId = issue.projectItems.nodes.find(
node => node.project?.number === PROJECT_NUMBER
)?.id;

if (!itemId) {
const added = await github.graphql(
`
mutation($projectId: ID!, $contentId: ID!) {
addProjectV2ItemById(input: { projectId: $projectId, contentId: $contentId }) {
item {
id
}
}
}
`,
{
projectId: project.id,
contentId: issue.id,
}
);

itemId = added.addProjectV2ItemById.item.id;
}

return itemId;
}

async function moveIssueToStatus(issueNumber, statusName) {
const project = await getProject();
const statusField = await getStatusField();

const option = statusField.options.find(opt => opt.name === statusName);
if (!option) {
throw new Error(`Status option "${statusName}" not found.`);
}

const itemId = await ensureProjectItem(issueNumber);
if (!itemId) return;

await github.graphql(
`
mutation($projectId: ID!, $itemId: ID!, $fieldId: ID!, $optionId: String!) {
updateProjectV2ItemFieldValue(
input: {
projectId: $projectId
itemId: $itemId
fieldId: $fieldId
value: { singleSelectOptionId: $optionId }
}
) {
projectV2Item {
id
}
}
}
`,
{
projectId: project.id,
itemId,
fieldId: statusField.id,
optionId: option.id,
}
);

core.info(`Moved issue #${issueNumber} -> ${statusName}`);
}

async function run() {
const eventName = context.eventName;
const action = context.payload.action;
let issueNumbers = [];
let targetStatus = null;

if (eventName === "issues" && action === "opened") {
issueNumbers = [context.payload.issue.number];
targetStatus = STATUS.backlog;
}

if (eventName === "create" && context.payload.ref_type === "branch") {
issueNumbers = extractIssueNumbersFromBranch(context.payload.ref || "");
targetStatus = STATUS.ready;
}

if (eventName === "push") {
const commits = context.payload.commits || [];
issueNumbers = uniqueNumbers(
commits.flatMap(commit => extractIssueNumbersFromRefText(commit.message || ""))
);
targetStatus = STATUS.inProgress;
}

if (eventName === "pull_request") {
const pr = context.payload.pull_request;

if ((action === "opened" || action === "reopened") && pr.draft) {
core.info("Draft PR detected. Waiting for ready_for_review.");
return;
}

issueNumbers = extractIssueNumbersFromPR(pr);
targetStatus = STATUS.inReview;
}

if (!targetStatus || issueNumbers.length === 0) {
core.info("No matching issue numbers or target status.");
return;
}

for (const issueNumber of issueNumbers) {
await moveIssueToStatus(issueNumber, targetStatus);
}
}

await run();
Loading
Loading