From dfb3b0feeb391e5d64d33499117c3a519790ccae Mon Sep 17 00:00:00 2001 From: jihun Date: Wed, 25 Feb 2026 18:53:15 +0900 Subject: [PATCH 1/5] =?UTF-8?q?fix:=20=EC=9E=90=EA=B0=84=20tracking?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD=20-=20#146?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/Resources/Typography/View+Typography.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Projects/Shared/DesignSystem/Sources/Resources/Typography/View+Typography.swift b/Projects/Shared/DesignSystem/Sources/Resources/Typography/View+Typography.swift index 72380df7..61e05f37 100644 --- a/Projects/Shared/DesignSystem/Sources/Resources/Typography/View+Typography.swift +++ b/Projects/Shared/DesignSystem/Sources/Resources/Typography/View+Typography.swift @@ -16,6 +16,6 @@ public extension View { .padding(.vertical, token.lineSpacing / 2) .font(token.font.swiftUIFont(size: token.size)) .lineSpacing(token.lineSpacing) - .kerning(token.kerning) + .tracking(token.kerning) } } From 5e280b37217843a9c44c6b88506647299a01f939 Mon Sep 17 00:00:00 2001 From: jihun Date: Wed, 25 Feb 2026 20:37:05 +0900 Subject: [PATCH 2/5] =?UTF-8?q?fix:=20certification-0001=20=EC=9D=B8?= =?UTF-8?q?=EC=A6=9D=EC=83=B7=20=EB=93=B1=EB=A1=9D=20-=20=EC=84=B8?= =?UTF-8?q?=EB=B6=80=20=EB=94=94=EC=9E=90=EC=9D=B8=20=EB=B3=80=EA=B2=BD=20?= =?UTF-8?q?-=20#146?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProofPhoto/Sources/ProofPhotoView.swift | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/Projects/Feature/ProofPhoto/Sources/ProofPhotoView.swift b/Projects/Feature/ProofPhoto/Sources/ProofPhotoView.swift index 523d6dad..fca44780 100644 --- a/Projects/Feature/ProofPhoto/Sources/ProofPhotoView.swift +++ b/Projects/Feature/ProofPhoto/Sources/ProofPhotoView.swift @@ -86,6 +86,7 @@ private extension ProofPhotoView { var mainContent: some View { VStack(spacing: 0) { topBar + .padding(.trailing, 10) titleText .padding(.top, 25) photoPreview @@ -110,7 +111,9 @@ private extension ProofPhotoView { store.send(.closeButtonTapped) } label: { Image.Icon.Symbol.closeM + .resizable() .renderingMode(.template) + .frame(width: 24, height: 24) .foregroundStyle(Color.Gray.gray100) .frame(width: 44, height: 44) } @@ -179,14 +182,11 @@ private extension ProofPhotoView { @ViewBuilder var bottomControls: some View { - Group { - if store.hasImage { - uploadControls - } else { - captureControls - } + if store.hasImage { + uploadControls + } else { + captureControls } - .frame(height: 74) } var captureControls: some View { @@ -223,6 +223,7 @@ private extension ProofPhotoView { .frame(width: 50) } .frame(maxWidth: .infinity) + .frame(height: 74) } var galleryButton: some View { @@ -258,6 +259,7 @@ private extension ProofPhotoView { .frame(width: 84, height: 84) ) } + .frame(width: 84, height: 84) .disabled(store.isCapturing) } @@ -278,7 +280,7 @@ private extension ProofPhotoView { func previewContainer( @ViewBuilder content: @escaping () -> some View ) -> some View { - let shape = RoundedRectangle(cornerRadius: 76) + let shape = RoundedRectangle(cornerRadius: 76, style: .continuous) return Color.clear .frame(maxWidth: .infinity) From 96ce637897b6b2725b14fafedfdb395a669aac82 Mon Sep 17 00:00:00 2001 From: jihun Date: Wed, 25 Feb 2026 20:40:50 +0900 Subject: [PATCH 3/5] =?UTF-8?q?fix:=20certification-0002=20=EC=9D=B8?= =?UTF-8?q?=EC=A6=9D=EC=83=B7=20=EB=93=B1=EB=A1=9D=20-=20=EC=82=AC?= =?UTF-8?q?=EC=A7=84=20=EC=97=85=EB=A1=9C=EB=93=9C=20=EC=A0=84=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EC=84=B8=EB=B6=80=20=EB=94=94=EC=9E=90=EC=9D=B8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20-=20#146?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/Components/Button/ShadowButton/TXShadowButton.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Projects/Shared/DesignSystem/Sources/Components/Button/ShadowButton/TXShadowButton.swift b/Projects/Shared/DesignSystem/Sources/Components/Button/ShadowButton/TXShadowButton.swift index 0ac9c9b3..a1398561 100644 --- a/Projects/Shared/DesignSystem/Sources/Components/Button/ShadowButton/TXShadowButton.swift +++ b/Projects/Shared/DesignSystem/Sources/Components/Button/ShadowButton/TXShadowButton.swift @@ -47,7 +47,7 @@ public struct TXShadowButton: View { var borderColor: Color = .clear let borderWidth: CGFloat = 1.6 let shadowHeight: CGFloat = 70 - let shadowTopPadding: CGFloat = 4 + let shadowTopPadding: CGFloat = 6 let frameHeight: CGFloat = 74 var buttonWidth: CGFloat? { From 20ff5056ee215e12852e59390f2ad76da5cc7dfc Mon Sep 17 00:00:00 2001 From: jihun Date: Wed, 25 Feb 2026 21:25:00 +0900 Subject: [PATCH 4/5] =?UTF-8?q?fix:=20certification-0006=20=EC=BD=94?= =?UTF-8?q?=EB=A9=98=ED=8A=B8=20=ED=85=8D=EC=8A=A4=ED=8A=B8=20=ED=95=84?= =?UTF-8?q?=EB=93=9C=20=EB=94=94=EC=9E=90=EC=9D=B8=20=EC=84=B8=EB=B6=80=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20-=20#146?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProofPhoto/Sources/ProofPhotoView.swift | 2 +- .../TextField/TXCommentCircle.swift | 70 ++++++++++++++----- 2 files changed, 55 insertions(+), 17 deletions(-) diff --git a/Projects/Feature/ProofPhoto/Sources/ProofPhotoView.swift b/Projects/Feature/ProofPhoto/Sources/ProofPhotoView.swift index fca44780..bd9f9d39 100644 --- a/Projects/Feature/ProofPhoto/Sources/ProofPhotoView.swift +++ b/Projects/Feature/ProofPhoto/Sources/ProofPhotoView.swift @@ -316,7 +316,7 @@ private extension ProofPhotoView { } commentCircle } - .padding(.bottom, 26) + .padding(.bottom, 28) .frame(width: rectFrame.width, height: rectFrame.height, alignment: .bottom) .offset(x: posX, y: posY) .animation(.easeOut(duration: 0.25), value: keyboardInset) diff --git a/Projects/Shared/DesignSystem/Sources/Components/TextField/TXCommentCircle.swift b/Projects/Shared/DesignSystem/Sources/Components/TextField/TXCommentCircle.swift index df1fa26b..c0f633e3 100644 --- a/Projects/Shared/DesignSystem/Sources/Components/TextField/TXCommentCircle.swift +++ b/Projects/Shared/DesignSystem/Sources/Components/TextField/TXCommentCircle.swift @@ -65,7 +65,7 @@ public struct TXCommentCircle: View { onFocused?(isFocused) externalFocus?.wrappedValue = isFocused } - .onChange(of: externalFocus?.wrappedValue) { newValue in + .onChange(of: externalFocus?.wrappedValue) { _, newValue in guard let newValue, newValue != isFocused else { return } isFocused = newValue } @@ -75,23 +75,15 @@ public struct TXCommentCircle: View { // MARK: - SubViews private extension TXCommentCircle { var borderCircles: some View { - HStack(spacing: Constants.circleSpacing) { - ForEach(0.. AnyShape { + let outer = mergedCircleShape(inset: 0) + let inner = mergedCircleShape(inset: lineWidth) + return AnyShape(outer.subtracting(inner)) + } + + func mergedCircleShape(inset: CGFloat) -> AnyShape { + let diameter = Constants.circleSize - (inset * 2) + let step = Constants.circleSize + Constants.circleSpacing + let baseCircle = AnyShape( + PositionedCircleShape( + posX: inset, + posY: inset, + diameter: diameter + ) + ) + + var merged = baseCircle + for index in 1.. Path { + Path(ellipseIn: CGRect(x: posX, y: posY, width: diameter, height: diameter)) + } +} + #Preview { @Previewable @State var text: String = "" TXCommentCircle( From b04a27b83bda9edc55ffbfe6b4417edab2bee7dd Mon Sep 17 00:00:00 2001 From: jihun Date: Wed, 25 Feb 2026 21:36:57 +0900 Subject: [PATCH 5/5] =?UTF-8?q?fix:=20certification-0007=20=EC=9D=B8?= =?UTF-8?q?=EC=A6=9D=EC=83=B7=20=EB=93=B1=EB=A1=9D=20-=20=EC=83=81?= =?UTF-8?q?=EB=8C=80=20=EC=99=84=EB=A3=8C=20&=20=EB=82=98=20=EB=AF=B8?= =?UTF-8?q?=EC=99=84=EB=A3=8C=20=EC=8B=9C,=20=EB=82=98=20=EC=9D=B8?= =?UTF-8?q?=EC=A6=9D=EC=83=B7=20=EB=93=B1=EB=A1=9D=20=ED=99=94=EB=A9=B4=20?= =?UTF-8?q?=EC=98=A4=EB=A5=98=20-=20#146?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GoalDetail/Sources/Detail/GoalDetailReducer+Impl.swift | 2 +- .../Feature/ProofPhoto/Sources/ProofPhotoReducer+Impl.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Projects/Feature/GoalDetail/Sources/Detail/GoalDetailReducer+Impl.swift b/Projects/Feature/GoalDetail/Sources/Detail/GoalDetailReducer+Impl.swift index e5698a78..4ee29d4d 100644 --- a/Projects/Feature/GoalDetail/Sources/Detail/GoalDetailReducer+Impl.swift +++ b/Projects/Feature/GoalDetail/Sources/Detail/GoalDetailReducer+Impl.swift @@ -244,7 +244,7 @@ extension GoalDetailReducer { state.isPresentedProofPhoto = false return .none - case let .proofPhoto(.delegate(.completedUploadPhoto(myPhotoLog, editedImageData: editedImageData))): + case let .proofPhoto(.delegate(.completedUploadPhoto(myPhotoLog, editedImageData))): state.isPresentedProofPhoto = false state.pendingEditedImageData = editedImageData var myPhotoLog = myPhotoLog diff --git a/Projects/Feature/ProofPhoto/Sources/ProofPhotoReducer+Impl.swift b/Projects/Feature/ProofPhoto/Sources/ProofPhotoReducer+Impl.swift index ebc50b71..e4ac9798 100644 --- a/Projects/Feature/ProofPhoto/Sources/ProofPhotoReducer+Impl.swift +++ b/Projects/Feature/ProofPhoto/Sources/ProofPhotoReducer+Impl.swift @@ -156,7 +156,7 @@ extension ProofPhotoReducer { .delegate( .completedUploadPhoto( myPhotoLog: myPhotoLog, - editedImageData: nil + editedImageData: imageData ) ) )