Skip to content

iOS 18 이상에서 시스템 적응형 탭과 탐색 흐름을 정비한다 - #885

Merged
opficdev merged 9 commits into
developfrom
ui/#842
Sep 10, 2026
Merged

iOS 18 이상에서 시스템 적응형 탭과 탐색 흐름을 정비한다#885
opficdev merged 9 commits into
developfrom
ui/#842

Conversation

@opficdev

@opficdev opficdev commented Sep 10, 2026

Copy link
Copy Markdown
Owner

🔗 연관된 이슈

🎯 의도

iOS 18 이상에서 시스템 적응형 탭을 사용하도록 탐색 구조 정리 및 프로필 중심의 최근 활동 구성

📝 작업 내용

📌 요약

  • 최소 지원 버전을 iOS 18로 상향
  • 단일 TabView(selection:).sidebarAdaptable로 네 메인 탭 구성
  • 기존 Coordinator·NavigationSplitView·사용자 정의 탭바 제거
  • Home 웹페이지 저장·검색·열기 기능 제거
  • ProfileCard 적용 및 최근 Todo 기능의 Profile 이전

🔍 상세

  • 각 화면의 Store·NavigationStack 소유권 유지
  • isTabContentActive·activePresentation으로 비활성 탭의 모달 표시 차단
  • 최근 Todo 조회·변경 감시·카테고리 동기화·로딩 처리를 Profile로 이동
  • Mac 편집 창 저장 결과를 최근 Todo 상세에 전달
  • Markdown의 불필요한 하단 가림 영역 보정 제거
  • develop의 색상·문자열 리소스 이동 반영

@opficdev opficdev self-assigned this Sep 10, 2026
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 10, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-10T16:20:25.619198Z 0da90e8 Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@opficdev

Copy link
Copy Markdown
Owner Author

@codex review

@opficdev
opficdev merged commit dd69678 into develop Sep 10, 2026
9 checks passed
@opficdev
opficdev deleted the ui/#842 branch September 10, 2026 16:19

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0da90e84f7

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

.fill(Color(.secondarySystemGroupedBackground))
)
if store.showDoneButton {
Text("프로필")

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 프로필 헤더를 현재 로케일에 맞게 표시하세요

앱 언어가 한국어가 아닌 경우에도 이 제목과 아래의 새 부제목이 한국어 리터럴로 표시되어 프로필 화면만 다른 언어로 노출됩니다. 기존 PresentationResources.bundlenav_profile처럼 지역화 키를 사용하고 부제목도 문자열 리소스에 추가해야 합니다.

Useful? React with 👍 / 👎.

@@ -102,7 +101,6 @@ struct MarkdownWebView: UIViewRepresentable {
webView: WKWebView
) {
self.view = view

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Markdown 하단 inset 계약을 동기화하세요

이 호출과 구현을 제거하면서 저장소 전체에서 obscuredContentInsets.bottom 처리가 사라졌지만, 현재 아키텍처 계약은 TodoMarkdownContentView가 탭바·safe-area 적응을 소유하고 내부 MarkdownWebView가 하단 가림 inset 처리를 유지하도록 명시합니다. 새 시스템 레이아웃에서 보정이 불필요해진 것이 승인된 변경이라면 해당 계약도 함께 갱신하고, 그렇지 않다면 내부 처리를 복원해야 합니다. .agents/rules/architecture.mdL189-L190

Useful? React with 👍 / 👎.

Comment on lines +66 to +69
.onReceive(windowSubmits) { submit in
guard case .create(let value) = submit,
value.matchesCreate(category: store.category, source: .list) else { return }
store.send(.view(.windowTodoCreated))

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Mac Todo 생성 완료 처리를 화면 수명과 분리하세요

사용자가 목록에서 별도 편집 창을 연 뒤 저장 전에 목록에서 뒤로 이동하면 이 TodoListViewonReceive 구독이 제거됩니다. TodoEditorWindowEvent는 replay 없는 PassthroughSubject이고 Home 수신부는 .home source만 처리하므로, 이후 .list 생성 결과가 도착해도 windowTodoCreated가 전달되지 않아 기존에 TodoWindowCoordinator가 항상 기록하던 todoCreate analytics가 누락됩니다. 창 완료 처리는 목록 View가 아니라 Entry 수명의 window 소유자에서 수신해야 합니다. .agents/rules/architecture.mdL178-L178

Useful? React with 👍 / 👎.

}
case .search:
SearchView(store: coordinator.makeSearchStore())
SearchView(store: searchStore)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 검색 화면을 다시 열 때 이전 상태를 초기화하세요

searchStoreHomeView 수명 동안 재사용하지만, SearchFeature는 검색 화면을 닫을 때 진행 중인 effect만 취소하고 searchQuerytodos를 초기화하지 않습니다. 따라서 검색을 취소한 뒤 다시 열면 이전 검색어와 결과가 그대로, 이후 Todo가 변경된 경우에는 오래된 상태로 표시됩니다. 기존 makeSearchStore()는 매 presentation마다 새 Store를 만들었으므로, 닫을 때 검색 상태를 재설정하거나 새 presentation용 Store를 생성해야 합니다.

Useful? React with 👍 / 👎.

Comment thread Application/Shared/Version.xcconfig
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

iOS 18 이상에서 시스템 적응형 탭과 탐색 흐름을 정비한다

1 participant