Skip to content

feat: redesign notes list in SwiftUI with sort options#189

Open
juliusknorr wants to merge 2 commits into
fix/ios26-scene-lifecyclefrom
feature/swiftui-notes-list
Open

feat: redesign notes list in SwiftUI with sort options#189
juliusknorr wants to merge 2 commits into
fix/ios26-scene-lifecyclefrom
feature/swiftui-notes-list

Conversation

@juliusknorr

@juliusknorr juliusknorr commented Jul 8, 2026

Copy link
Copy Markdown
Member

Stacked on #188 (base is that branch). Review/merge #188 first; this PR will retarget to main automatically once it lands.

Implements #51
Contributes to #140

Summary

Rewrites the notes list in SwiftUI and adds a way to hide categories and sort by most recent instead of always grouping by category.

Before / after

Same demo notes in both; the "after" adds a content preview per note and rounded, grouped sections.

Before (UIKit list) After (SwiftUI redesign)

Changes

  • SwiftUI list replacing the UIKit table, with a content preview per note and collapsible category sections.
  • Toolbar menu to switch between "Group by category" and "Sort by most recent", persisted via a new preference.
  • Editor, category picker and share sheet are presented from the list unchanged.

Testing

  • Builds; both grouping modes verified on the iOS 26 simulator.

@juliusknorr juliusknorr added the enhancement New feature or request label Jul 8, 2026
@juliusknorr
juliusknorr marked this pull request as draft July 8, 2026 07:46
@juliusknorr
juliusknorr requested a review from Copilot July 9, 2026 13:24

Copilot AI 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.

Pull request overview

Note

Copilot couldn't run its full agentic review because no GitHub Actions runner was available. Make sure your repository has a runner available to run Copilot's review, or add a copilot-setup-steps.yml file specifying one with the runs-on attribute. See the docs for more details.

Replaces the legacy UIKit notes table with a SwiftUI notes list that supports category grouping/collapsing and alternative “most recent” sorting, while keeping existing editor/category/share flows via a UIKit bridge.

Changes:

  • Introduces NotesListView/NotesListModel SwiftUI list + row UI (preview + modified date) and wires it into NotesView.
  • Adds NotesPresenter to present existing UIKit flows (editor, categories, share sheet) from SwiftUI.
  • Persists sort mode via a new KeychainHelper.groupByCategory preference and removes legacy UIKit list/split-view components.

Reviewed changes

Copilot reviewed 18 out of 18 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
iOCNotes/Views/NotesView.swift Switches root notes screen to SwiftUI list, adds sort menu + add-note action.
iOCNotes/Views/NotesPresenter.swift New UIKit presentation bridge for editor, categories, share, direct editing.
iOCNotes/Views/NotesListView.swift New SwiftUI list UI with collapsible sections, context menu, swipe actions, drop + refresh.
iOCNotes/Views/NotesListModel.swift New observable model wrapping NSFetchedResultsController for sections/sort/search/expansion persistence.
iOCNotes/Views/NoteRowView.swift New SwiftUI row showing title, snippet, and modified date.
Utils/KeychainHelper.swift Adds persisted “group by category” preference (default true).
Source/AppDelegate.swift Removes UIKit notes-table coupling; updates “open URL” note creation flow.
Source/Base.lproj/Main_iPhone.storyboard Removes NotesTableViewController + split view scenes; changes initial VC.
iOCNotes.xcodeproj/project.pbxproj Removes old sources from build, modifies SwiftLint script, and updates signing/bundle settings.

Comment thread iOCNotes/Views/NotesPresenter.swift
Comment thread iOCNotes/Views/NotesPresenter.swift Outdated
Comment thread iOCNotes.xcodeproj/project.pbxproj Outdated
Comment thread iOCNotes.xcodeproj/project.pbxproj Outdated
Comment thread iOCNotes.xcodeproj/project.pbxproj Outdated
Comment thread iOCNotes.xcodeproj/project.pbxproj Outdated
Comment thread iOCNotes.xcodeproj/project.pbxproj Outdated
Comment thread Source/AppDelegate.swift
Comment thread iOCNotes/Views/NotesListModel.swift
@juliusknorr
juliusknorr force-pushed the feature/swiftui-notes-list branch 3 times, most recently from a4c63e4 to b1dfbb8 Compare July 10, 2026 13:55
@juliusknorr
juliusknorr force-pushed the fix/ios26-scene-lifecycle branch from b73419a to 7711a13 Compare July 13, 2026 10:59
@juliusknorr
juliusknorr force-pushed the feature/swiftui-notes-list branch 3 times, most recently from 4c924e2 to 6fb96a2 Compare July 14, 2026 08:31
@juliusknorr
juliusknorr marked this pull request as ready for review July 14, 2026 08:32
Replace the legacy UIKit notes list and split view with a SwiftUI list
that supports searching, pull-to-refresh, drag-and-drop note creation,
category grouping, and recent-first sorting.

Keep the existing UIKit editor, category picker, sharing flow, and
direct-editing integration behind a presentation bridge. Adopt the scene
lifecycle required by current iOS releases and remove the obsolete
list-related storyboard and controller code.

Assisted-by: Codex:GPT-5
Assisted-by: Claude:opus-4.8
Signed-off-by: Julius Knorr <jus@bitgrid.net>
@juliusknorr
juliusknorr force-pushed the feature/swiftui-notes-list branch from 6fb96a2 to 4b9530a Compare July 14, 2026 08:32
@juliusknorr
juliusknorr requested review from i2h3 and mpivchev July 14, 2026 08:33
Assisted-by: Codex:GPT-5
Signed-off-by: Julius Knorr <jus@bitgrid.net>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants