Skip to content

Feature/#37 - NavigationSplitView 기본 틀 구성 및 AppFeature 연결 - #39

Merged
dlguszoo merged 6 commits into
developfrom
feature/#37
Jul 16, 2026
Merged

Feature/#37 - NavigationSplitView 기본 틀 구성 및 AppFeature 연결#39
dlguszoo merged 6 commits into
developfrom
feature/#37

Conversation

@dlguszoo

@dlguszoo dlguszoo commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

✨ What’s this PR?

📌 관련 이슈 (Related Issue)


🧶 주요 변경 내용 (Summary)

  • Presentation모듈 DemoView, 기존 ContentView 제거
  • MainFeature / MainView 신규 생성 — NavigationSplitView 3-column (sidebar / content / detail) 기본 틀 구성
  • AppFeatureScopeMainFeature 자식 리듀서 연결, AppView에서 MainView로 라우팅
  • BindingReducer 적용으로 $store.columnVisibility 직접 바인딩 지원
  • toolbar 타이틀 및 구분선 제거

📸 스크린샷 (Optional)

스크린샷 2026-07-16 오전 2 47 15

🧪 테스트 / 검증 내역

  • UI 정상 동작 확인 (3-column NavigationSplitView 노출, toolbar 타이틀 및 구분선 미노출)
  • sidebar 토글 버튼으로 사이드바 열기/닫기 동작 확인
  • My Mac, macOS 14.0 환경에서 정상 동작

💬 기타 공유 사항

  • 다음 sidebar 구현 이슈에서 minwidth 조정 예정입니다.

🙇🏻‍♀️ 리뷰 가이드 (선택)


Summary by CodeRabbit

  • 새로운 기능

    • 앱에 사이드바, 콘텐츠, 상세 영역으로 구성된 3열 탐색 화면을 추가했습니다.
    • 화면 상태에 따라 탐색 영역 표시를 관리할 수 있습니다.
    • 앱 시작 시 새로운 메인 화면이 표시됩니다.
  • 변경 사항

    • 기존 프로젝트·시크릿 데모 화면과 관련 기능을 제거했습니다.
    • 기존의 단일 텍스트 화면을 새로운 탐색형 메인 화면으로 교체했습니다.

@dlguszoo dlguszoo self-assigned this Jul 15, 2026
@dlguszoo dlguszoo added the ✨ Feature 새로운 기능 개발 label Jul 15, 2026
@dlguszoo dlguszoo linked an issue Jul 15, 2026 that may be closed by this pull request
3 tasks
@coderabbitai

coderabbitai Bot commented Jul 15, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

MainFeatureMainView를 추가해 3열 NavigationSplitView 기반 화면을 구성하고, AppFeatureAppView에 자식 상태·액션·스토어 스코프를 연결했다. 기존 프로젝트·시크릿 데모 화면과 ContentView 구현은 삭제됐다.

Changes

메인 화면 네비게이션

Layer / File(s) Summary
MainFeature 상태·액션 및 3열 화면 구성
Projects/DVPresentation/Sources/Features/Main/*
NavigationSplitViewVisibility 상태와 TCA 액션을 정의하고, sidebar/content/detail placeholder 컬럼 및 preview를 추가했다.
AppFeature 연결 및 진입 화면 교체
Projects/DVPresentation/Sources/Features/AppFeature.swift, Projects/DVPresentation/Sources/Features/AppView.swift
MainFeature 자식 상태·액션·Scope를 추가하고 AppView의 정적 텍스트를 scoped MainView로 교체했다.
기존 데모 화면 제거
Projects/DVPresentation/Sources/ProjectSecretRelationDemoView.swift, Projects/DVPresentation/Sources/SecretUseCaseDemoView.swift, Projects/Devault/Sources/ContentView.swift
기존 프로젝트·시크릿 데모 뷰와 이를 조립하던 ContentView 구현을 삭제했다.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant AppView
  participant AppFeature
  participant MainView
  participant MainFeature
  AppView->>AppFeature: .task 액션 전송
  AppFeature->>MainFeature: main child action 라우팅
  AppView->>MainView: main 상태로 scoped store 전달
  MainView->>MainFeature: .task 액션 전송
  MainFeature->>MainView: NavigationSplitView 상태 제공
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning 링크된 이슈 범위를 넘어 ProjectSecretRelationDemoView, SecretUseCaseDemoView, ContentView 삭제가 포함되어 있습니다. 정리용 삭제는 별도 이슈로 분리하고, 본 PR에는 NavigationSplitView 스캐폴드와 AppView 연결만 남기세요.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed 3-column NavigationSplitView 스캐폴드, AppView 라우팅 연결, 각 column placeholder 배치가 모두 반영되었습니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed MainFeature/MainView의 NavigationSplitView 스캐폴드와 AppFeature 연결을 잘 요약한 제목입니다.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/#37

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai 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.

🧹 Nitpick comments (1)
Projects/DVPresentation/Sources/Features/Main/MainView.swift (1)

17-20: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

뷰 라이프사이클과 Effect 취소 동기화 ♻️

.task 블록 안에서 단순히 store.send를 동기적으로 호출하면, 뷰가 사라질 때 관련된 TCA Effect가 자동으로 취소되지 않습니다.
뷰의 생명주기와 Effect의 라이프사이클을 안전하게 동기화하려면 await ... .finish() 패턴을 사용하는 것이 좋습니다. 만약 단순히 뷰가 나타날 때 동기적인 액션만 전달하려는 목적이라면 .onAppear가 더 명확한 의도를 전달할 수 있습니다.

💡 제안하는 수정안
   var body: some View {
     content
-      .task { store.send(.task) }
+      .task { await store.send(.task).finish() }
   }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Projects/DVPresentation/Sources/Features/Main/MainView.swift` around lines 17
- 20, Update the .task modifier in MainView.body so the lifecycle-bound task
awaits the store send and its completion, using the await … .finish() pattern to
keep related TCA effects cancellable when the view disappears; if the action is
intentionally synchronous only, replace this modifier with .onAppear and
preserve the existing .task action behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@Projects/DVPresentation/Sources/Features/Main/MainView.swift`:
- Around line 17-20: Update the .task modifier in MainView.body so the
lifecycle-bound task awaits the store send and its completion, using the await …
.finish() pattern to keep related TCA effects cancellable when the view
disappears; if the action is intentionally synchronous only, replace this
modifier with .onAppear and preserve the existing .task action behavior.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 47663ba7-bae3-48f8-b25f-3f65b7368044

📥 Commits

Reviewing files that changed from the base of the PR and between 9171222 and ff5fef5.

📒 Files selected for processing (7)
  • Projects/DVPresentation/Sources/Features/AppFeature.swift
  • Projects/DVPresentation/Sources/Features/AppView.swift
  • Projects/DVPresentation/Sources/Features/Main/MainFeature.swift
  • Projects/DVPresentation/Sources/Features/Main/MainView.swift
  • Projects/DVPresentation/Sources/ProjectSecretRelationDemoView.swift
  • Projects/DVPresentation/Sources/SecretUseCaseDemoView.swift
  • Projects/Devault/Sources/ContentView.swift
💤 Files with no reviewable changes (3)
  • Projects/DVPresentation/Sources/SecretUseCaseDemoView.swift
  • Projects/Devault/Sources/ContentView.swift
  • Projects/DVPresentation/Sources/ProjectSecretRelationDemoView.swift

@dlguszoo
dlguszoo merged commit 20c1280 into develop Jul 16, 2026
1 check passed
@dlguszoo
dlguszoo deleted the feature/#37 branch July 16, 2026 01:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ Feature 새로운 기능 개발

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature: NavigationSplitView 기본 틀 구성

3 participants