-
Notifications
You must be signed in to change notification settings - Fork 0
[Feature] Tuist 적용 #134
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature] Tuist 적용 #134
Conversation
|
Warning Rate limit exceeded@Monfi98 has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 14 minutes and 11 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (1)
WalkthroughTuist 기반의 프로젝트 관리로 전환하는 초기 설정 작업이 이루어졌습니다. 기존 Xcode 프로젝트 파일과 스킴이 삭제되고, Tuist 관련 설정 파일, 패키지 관리 파일, 프로젝트 및 타겟 정의 파일, Info.plist 등이 새롭게 추가되었습니다. Changes
Sequence Diagram(s)sequenceDiagram
participant Developer
participant Tuist
participant SwiftPM
Developer->>Tuist: tuist generate
Tuist->>SwiftPM: Resolve dependencies (Package.swift, Package.resolved)
Tuist->>Tuist: Read Project.swift, Tuist.swift
Tuist->>Tuist: Generate Xcode project/Workspace
Tuist-->>Developer: Xcode 프로젝트 생성 완료
Assessment against linked issues
Assessment against linked issues: Out-of-scope changes(해당 변경사항 내에서 범위 외 변경사항 없음) ✨ Finishing Touches🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 6
♻️ Duplicate comments (1)
RunLog/Tuist/Package.resolved (1)
1-69: 이 코멘트는 상위.package.resolved에 대한 지적과 동일합니다.
🧹 Nitpick comments (6)
RunLog/Tuist.swift (1)
1-3: 기본 Tuist 구성 검토현재 기본 Tuist 구성(
.tuist())을 사용하고 있습니다. 프로젝트 초기 설정으로는 적절하지만, 향후 프로젝트 성장에 따라 더 명시적인 구성이 필요할 수 있습니다.향후 프로젝트 요구사항이 명확해지면 더 구체적인 Tuist 구성을 고려해보세요:
let tuist = Tuist( project: .tuist(), generationOptions: .options( xcodeProjectName: "RunLog", organizationName: "Your Organization" ) )RunLog/RpTest/InfoPlists/RpTest-Info.plist (1)
5-20: 테스트 번들의CFBundleIdentifier가 비어 있을 수 있음
$(PRODUCT_BUNDLE_IDENTIFIER)가 Xcode 설정에 정의되지 않은 경우, 테스트 실행 시 번들 로딩 오류가 발생합니다.
RpTest타겟의Target -> Build Settings -> PRODUCT_BUNDLE_IDENTIFIER를 확인해 값이 채워져 있는지 검증해 주세요.RunLog/Tuist/Package.swift (1)
15-23: 제품/타깃 정의가 없어서 빈 패키지로 인식됩니다현재
dependencies만 선언되어 있고targets가 없습니다.
오로지 의존성 래핑용 패키지라면 문제없지만, 향후 재사용성을 위해 최소한 빈 타깃을 추가하거나 해당 패키지를 제거하고Project.swift에서 직접 의존성을 선언하는 방안도 고려해 보세요.RunLog/Derived/Sources/TuistBundle+RunLog.swift (1)
14-16: 영문 주석 오타 및 문구 보강 제안
RunLog is a application→RunLog is an application
사용자·리뷰어 모두에게 가독성을 높이는 사소한 부분이니 한 번에 수정해두면 좋겠습니다.RunLog/RunLog/InfoPlists/RunLog-Info.plist (1)
74-77:armv7단독 명시는 최신 단말(arm64) 제외 가능성
UIRequiredDeviceCapabilities에armv7만 있는 경우 arm64 전용 기기(예: 최신 iPhone)에서 설치가 제한될 수 있습니다. 필요하다면 항목 제거 또는arm64추가를 검토하세요.RunLog/Derived/Sources/TuistFonts+RunLog.swift (1)
84-89: 폰트 등록 실패 무시
CTFontManagerRegisterFontsForURL호출 결과를 확인하지 않아, 동일 폰트 중복 등록이나 실패가 발생해도 알 수 없습니다. 반환값을 체크하여 로그를 남기거나assertionFailure로 알림 처리하는 것을 권장합니다.
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (16)
RunLog/.package.resolved(1 hunks)RunLog/Derived/Sources/TuistAssets+RunLog.swift(1 hunks)RunLog/Derived/Sources/TuistBundle+RunLog.swift(1 hunks)RunLog/Derived/Sources/TuistFonts+RunLog.swift(1 hunks)RunLog/Project.swift(1 hunks)RunLog/RpTest/InfoPlists/RpTest-Info.plist(1 hunks)RunLog/RunLog.xcodeproj/xcshareddata/xcschemes/RpTest.xcscheme(1 hunks)RunLog/RunLog.xcodeproj/xcshareddata/xcschemes/RunLog.xcscheme(5 hunks)RunLog/RunLog.xcworkspace/contents.xcworkspacedata(1 hunks)RunLog/RunLog.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings(1 hunks)RunLog/RunLog/InfoPlists/RunLog-Info.plist(1 hunks)RunLog/Tuist.swift(1 hunks)RunLog/Tuist/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata(1 hunks)RunLog/Tuist/Package.resolved(1 hunks)RunLog/Tuist/Package.swift(1 hunks)RunLog/mise.toml(1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
RunLog/Derived/Sources/TuistAssets+RunLog.swift (1)
RunLog/Derived/Sources/TuistFonts+RunLog.swift (1)
iOS(71-81)
🔇 Additional comments (17)
RunLog/mise.toml (1)
1-2: 구성 파일 승인: Tuist 버전 4.55.6 유효성 및 안정성 확인 완료
RunLog/mise.toml의 구조와 문법은 올바릅니다.- Tuist 4.55.6이 공식적으로 출시된 안정 버전임이 확인되었으므로, 해당 설정을 그대로 승인합니다.
더 이상의 조치가 필요 없습니다.
RunLog/Tuist/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata (1)
1-7: Swift Package Manager 워크스페이스 파일 승인이 파일은 Swift Package Manager에 의해 자동 생성되는 표준 워크스페이스 파일입니다. XML 구조와 설정이 올바르며, 표준 SwiftPM 패턴을 따릅니다.
RunLog/RunLog.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings (1)
5-6: 자동 컨텍스트 생성 비활성화 설정 확인
IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded를 false로 설정한 것은 빌드 컨텍스트에 대한 더 나은 제어를 위한 합리적인 선택입니다. 복잡한 프로젝트에서 예상치 못한 컨텍스트 생성을 방지할 수 있습니다.RunLog/RunLog.xcodeproj/xcshareddata/xcschemes/RunLog.xcscheme (2)
3-4: 스킴 버전 다운그레이드 확인 필요스킴 버전이 1.7에서 1.3으로 다운그레이드되었습니다. 이는 일반적이지 않은 변경사항이며 Tuist 적용 과정에서 의도된 변경인지 확인이 필요합니다.
17-17: Blueprint 식별자 변경 확인Blueprint 식별자가 변경되었습니다. 이는 Tuist 프로젝트 생성 과정에서 발생한 변경으로 보이지만, 프로젝트가 정상적으로 빌드되고 실행되는지 확인이 필요합니다.
Also applies to: 48-48, 65-65
RunLog/RunLog.xcworkspace/contents.xcworkspacedata (1)
7-25: 의존성 경로가Tuist/.build/tuist-derived로 하드코딩되어 있습니다
tuist generate가 실행될 때마다.build/tuist-derived위치와 하위 경로가 바뀔 가능성이 있어 워크스페이스가 깨질 수 있습니다.
보통 Tuist 산출물은 소스컨트롤에 포함하지 않고.gitignore로 제외하며, 워크스페이스 역시 Tuist가 재생성하게 두는 편이 재현성과 청결도를 높입니다.
해당 워크스페이스 파일을 커밋해야 하는 특별한 이유가 없다면:
RunLog.xcworkspace를 버전 관리에서 제외.gitignore에/*.xcworkspace혹은Tuist/.build추가방안을 검토해 주세요.
RunLog/.package.resolved (1)
1-69:.package.resolved파일이 두 군데 존재해 관리 오차 가능성프로젝트 루트와
Tuist/하위에 각각Package.resolved가 커밋되어 있습니다.
버전이 불일치하면 의존성 충돌이 일어나 빌드가 달라질 수 있으므로 한 곳만 유지하거나, 자동 생성 파일은 커밋하지 않는 방향을 권장합니다.RunLog/Project.swift (1)
24-26: Core Data 모델 경로 확인 필요
.coreDataModel("RunLog/Sources/Data/DTO/DTOs.xcdatamodeld")가 실제로 존재하는지 확인 바랍니다. 경로가 잘못되면tuist generate단계에서 즉시 오류가 납니다.RunLog/RunLog.xcodeproj/xcshareddata/xcschemes/RpTest.xcscheme (1)
1-87: 스킴 설정 전반 정상으로 보임테스트·프로파일·아카이브 플로우 모두 구성되어 있으며 특이점은 없습니다.
추가 피드백이 없는 한 그대로 두셔도 무방합니다.RunLog/Derived/Sources/TuistAssets+RunLog.swift (8)
1-5: 생성된 파일에 대한 린트 비활성화가 적절함Tuist에서 생성된 파일이므로 SwiftLint와 SwiftFormat 비활성화가 적절합니다.
7-16: 플랫폼별 임포트 구조가 올바름모든 Apple 플랫폼에 대한 조건부 임포트가 올바르게 구성되어 있습니다.
20-39: 에셋 정의가 포괄적이고 일관성 있음RunLogAsset 열거형이 모든 색상과 이미지 에셋에 대한 타입 안전한 접근을 제공합니다. 명명 규칙이 일관되며 각 에셋이 적절한 타입으로 정의되어 있습니다.
43-70: RunLogColors 클래스 구현이 안전하고 포괄적임색상 관리 클래스가 플랫폼별 타입 별칭과 함께 올바르게 구현되어 있습니다.
fatalError사용은 생성된 코드에서 적절한 선택입니다.
72-94: 플랫폼별 색상 초기화 로직이 올바름각 플랫폼에 맞는 색상 초기화 로직이 정확하게 구현되어 있으며, SwiftUI 지원도 적절히 추가되었습니다.
96-126: RunLogImages 구조체가 효율적으로 구현됨이미지 관리 구조체가 색상과 일관된 패턴으로 구현되어 있으며, 모든 플랫폼에 대한 적절한 처리가 포함되어 있습니다.
128-146: SwiftUI 이미지 확장이 다양한 사용 사례를 지원함SwiftUI.Image에 대한 확장이 기본 이미지, 레이블이 있는 이미지, 장식용 이미지 등 다양한 사용 사례를 지원하여 접근성을 고려한 구현입니다.
75-75: Bundle.module 정의 확인 완료
RunLog/Derived/Sources/TuistBundle+RunLog.swift에 다음과 같이extension Foundation.Bundle으로static let module이 정의되어 있어,Bundle.module호출이 정상 동작합니다.
- 파일: RunLog/Derived/Sources/TuistBundle+RunLog.swift
라인 15:static let module = Bundle(for: BundleFinder.self)추가 조치가 필요 없습니다.
| selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" | ||
| shouldUseLaunchSchemeArgsEnv = "YES" | ||
| shouldAutocreateTestPlan = "YES"> | ||
| disableMainThreadChecker = "YES"> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
메인 스레드 체커 비활성화 재검토
메인 스레드 체커를 비활성화하는 것은 중요한 런타임 디버깅 기능을 제거합니다. 이 설정이 Tuist 적용을 위해 반드시 필요한지 재검토해보세요.
메인 스레드 체커를 다시 활성화하는 것을 고려해보세요:
- disableMainThreadChecker = "YES">
+ disableMainThreadChecker = "NO">📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| disableMainThreadChecker = "YES"> | |
| disableMainThreadChecker = "NO"> |
🤖 Prompt for AI Agents
In RunLog/RunLog.xcodeproj/xcshareddata/xcschemes/RunLog.xcscheme at line 30,
the main thread checker is disabled with disableMainThreadChecker set to "YES".
Review whether disabling this debugging feature is necessary for Tuist
integration. If not essential, change disableMainThreadChecker to "NO" to
re-enable the main thread checker for better runtime debugging.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
skip
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Monfi98 알겠습니다. 메인 스레드 체커 비활성화 관련 제안을 건너뛰겠습니다.
| @@ -0,0 +1,23 @@ | |||
| // swift-tools-version: 6.0 | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
swift-tools-version: 6.0 지정은 현재 안정 버전에 부적합
Swift 6.0은 아직 정식 릴리스되지 않았습니다. Xcode 15.x 기준 최대 지원 버전(예: 5.9)으로 수정하지 않으면 swift package와 Tuist 생성 단계에서 오류가 발생합니다.
-// swift-tools-version: 6.0
+// swift-tools-version: 5.9📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| // swift-tools-version: 6.0 | |
| // swift-tools-version: 5.9 |
🤖 Prompt for AI Agents
In RunLog/Tuist/Package.swift at line 1, the swift-tools-version is set to 6.0,
which is not yet officially released and causes errors during swift package and
Tuist generation. Change the swift-tools-version to the latest stable version
supported by Xcode 15.x, such as 5.9, to fix the compatibility issue.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
skip
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Monfi98 Understood! I'll skip this suggestion. You can proceed with Swift 6.0 as the tools version.
| bundleId: "com.ESTSOFTiOSTEAM1.IEEE.RunLog", | ||
| deploymentTargets: .iOS("17.0"), | ||
| infoPlist: .file(path: "RunLog/InfoPlists/RunLog-info.plist"), | ||
| sources: ["RunLog/Sources/**"], | ||
| resources: ["RunLog/Resources/**"], | ||
| dependencies: [ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Info.plist 경로 불일치로 빌드 실패 위험
infoPlist: .file(path: "RunLog/InfoPlists/RunLog-info.plist") 경로가 실제로 커밋된 RunLog/RunLog/InfoPlists/RunLog-Info.plist 와(과) 폴더/대소문자 모두 달라 Xcode & Tuist가 파일을 찾지 못합니다.
- infoPlist: .file(path: "RunLog/InfoPlists/RunLog-info.plist"),
+ infoPlist: .file(path: "RunLog/RunLog/InfoPlists/RunLog-Info.plist"),동일 이슈가 테스트 타깃에도 있습니다(아래 diff 참고).
- infoPlist: .file(path: "RpTest/InfoPlists/RpTest-info.plist"),
+ infoPlist: .file(path: "RunLog/RpTest/InfoPlists/RpTest-Info.plist"),Committable suggestion skipped: line range outside the PR's diff.
🤖 Prompt for AI Agents
In RunLog/Project.swift around lines 11 to 16, the infoPlist file path is
incorrect and causes build failures because it does not match the actual
committed path and casing. Update the infoPlist path from
"RunLog/InfoPlists/RunLog-info.plist" to the correct
"RunLog/RunLog/InfoPlists/RunLog-Info.plist" to match the real file location and
casing. Also, apply the same fix to the test target's infoPlist path if it has
the same issue.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
루트는 여기가 맞아.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
@Monfi98 파일 구조를 확인해보겠습니다.
🏁 Script executed:
#!/bin/bash
# Project.swift 파일 위치 확인
echo "=== Project.swift 파일 위치 ==="
find . -name "Project.swift" -type f
echo -e "\n=== 실제 Info.plist 파일들 위치 ==="
find . -name "*Info.plist" -type f -o -name "*info.plist" -type f
echo -e "\n=== RunLog 프로젝트 구조 ==="
ls -la RunLog/
echo -e "\n=== InfoPlists 디렉토리 구조 ==="
find . -type d -name "*InfoPlists*"
find . -type d -name "*Infoplists*"
echo -e "\n=== RunLog/InfoPlists 경로 확인 ==="
if [ -d "RunLog/InfoPlists" ]; then
echo "RunLog/InfoPlists 디렉토리 존재"
ls -la RunLog/InfoPlists/
else
echo "RunLog/InfoPlists 디렉토리 없음"
fi
echo -e "\n=== RpTest/InfoPlists 경로 확인 ==="
if [ -d "RpTest/InfoPlists" ]; then
echo "RpTest/InfoPlists 디렉토리 존재"
ls -la RpTest/InfoPlists/
else
echo "RpTest/InfoPlists 디렉토리 없음"
fi
Length of output: 1463
@Monfi98 맞습니다! 루트 경로 구조는 정확합니다.
파일 구조 확인 결과:
Project.swift는RunLog/디렉토리에 위치- 상대 경로
"RunLog/InfoPlists/RunLog-info.plist"는 올바르게RunLog/RunLog/InfoPlists/를 참조
다만 대소문자 차이만 있습니다:
- 참조:
RunLog-info.plist(소문자i) - 실제 파일:
RunLog-Info.plist(대문자I)
동일한 이슈가 테스트 타깃에도 있습니다:
- 참조:
RpTest-info.plist - 실제 파일:
RpTest-Info.plist
경로 구조에 대한 지적은 잘못되었습니다. 대소문자만 수정하면 됩니다.
✏️ Learnings added
Learnt from: Monfi98
PR: ESTSOFT-iOS-01/RunLog#134
File: RunLog/Project.swift:11-16
Timestamp: 2025-07-16T08:01:39.547Z
Learning: RunLog 프로젝트에서 Project.swift 파일은 RunLog/ 디렉토리 안에 위치하며, 상대 경로 참조 시 "RunLog/InfoPlists/..."는 "RunLog/RunLog/InfoPlists/..."를 의미하는 올바른 구조입니다.
Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.
| <key>NSAppTransportSecurity</key> | ||
| <dict> | ||
| <key>NSAllowsArbitraryLoads</key> | ||
| <true/> | ||
| </dict> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
NSAllowsArbitraryLoads 전역 허용은 보안·앱스토어 심사 리스크
모든 도메인에 대해 ATS 예외를 주면 HTTPS 강제 정책이 무력화됩니다.
가능한 도메인 화이트리스트 방식(NSExceptionDomains)으로 축소하거나 개발 / 배포 빌드에 따라 조건부 플래그를 권장드립니다.
🤖 Prompt for AI Agents
In RunLog/RunLog/InfoPlists/RunLog-Info.plist around lines 25 to 29, the current
use of NSAllowsArbitraryLoads set to true globally disables ATS security for all
domains, which poses security and App Store review risks. Replace this global
allowance with a domain-specific whitelist using NSExceptionDomains to specify
only trusted domains. Additionally, implement conditional flags to enable this
exception only for development builds while enforcing stricter ATS policies for
production builds.
| <key>UIBackgroundModes</key> | ||
| <array> | ||
| <string>location</string> | ||
| </array> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Background Location 사용 시 위치 권한 설명 키 누락
UIBackgroundModes에 location을 선언했지만 NSLocationWhenInUseUsageDescription / NSLocationAlwaysAndWhenInUseUsageDescription 등이 없습니다. 앱 실행 직후 크래시나 App Store 거절 사유가 되니 반드시 추가해주세요.
🤖 Prompt for AI Agents
In RunLog/RunLog/InfoPlists/RunLog-Info.plist around lines 63 to 66, the plist
declares UIBackgroundModes with location but is missing the required location
permission description keys such as NSLocationWhenInUseUsageDescription and
NSLocationAlwaysAndWhenInUseUsageDescription. Add these keys with appropriate
user-facing description strings explaining why the app needs location access to
prevent crashes on launch and App Store rejection.
| public func font(size: CGFloat) -> Font { | ||
| guard let font = Font(font: self, size: size) else { | ||
| fatalError("Unable to initialize font '\(name)' (\(family))") | ||
| } | ||
| return font | ||
| } | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
fatalError 남용으로 런타임 크래시 가능성
폰트 로딩 실패 시 곧바로 fatalError 로 앱이 종료됩니다.
프로덕션 빌드에서는 기본 시스템 폰트 fallback 후 오류 로깅 정도로 처리하는 편이 안전합니다.
- guard let font = Font(font: self, size: size) else {
- fatalError("Unable to initialize font '\(name)' (\(family))")
- }
+ guard let font = Font(font: self, size: size) else {
+ assertionFailure("Font '\(name)' (\(family)) not found – falling back to system font")
+ return Font.systemFont(ofSize: size)
+ }📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| public func font(size: CGFloat) -> Font { | |
| guard let font = Font(font: self, size: size) else { | |
| fatalError("Unable to initialize font '\(name)' (\(family))") | |
| } | |
| return font | |
| } | |
| public func font(size: CGFloat) -> Font { | |
| guard let font = Font(font: self, size: size) else { | |
| assertionFailure("Font '\(name)' (\(family)) not found – falling back to system font") | |
| return Font.systemFont(ofSize: size) | |
| } | |
| return font | |
| } |
🤖 Prompt for AI Agents
In RunLog/Derived/Sources/TuistFonts+RunLog.swift around lines 63 to 69, the
font(size:) function uses fatalError when font initialization fails, causing a
runtime crash. Replace fatalError with a safer fallback by returning a default
system font and log the error instead, ensuring the app continues running
without crashing in production.
GeunwoongSim
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
구웃 빌드 확인했습니다!
doyeonk429
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
수고하셨습니다!!
💡 PR 유형
✏️ 변경 사항
🚨 관련 이슈
🧪 테스트
✅ 체크리스트
🔥 추가 설명 or 리뷰 포인트
Tuist v4 부터는 mise로의 설치를 권장하네요!
이후 프로젝트가 열리는데, 빌드가 잘되는지 확인해주시면 될 것 같습니다.
이 PR이 합쳐지면 카톡에 말씀드린대로 Layer 별 모듈화를 시작하겠습니다.
Summary by CodeRabbit