Desktop redesign#1005
Merged
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR implements a desktop-focused UI redesign: introducing custom desktop context menus, a new desktop settings window, and a multi-pane (list/detail) home experience with updated theming and toolbar visuals.
Changes:
- Added a reusable
DesktopPopupMenuand migrated desktop context menus (feed item / feed source / category) to cursor-positioned popups. - Introduced a new desktop Settings window (multi-pane layout) and a multi-pane Home scaffold with optional reader detail pane/fullscreen behavior.
- Updated Material 3 color scheme tokens (surface container levels), toolbar fade overlays, and improved
ReaderModeViewModelrequest-cancellation behavior with expanded test coverage.
Reviewed changes
Copilot reviewed 74 out of 75 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| sharedUI/src/jvmMain/kotlin/com/prof18/feedflow/shared/ui/home/components/list/FeedItemContextMenu.desktop.kt | Desktop feed-item context menu using DesktopPopupMenu. |
| sharedUI/src/jvmMain/kotlin/com/prof18/feedflow/shared/ui/home/components/CategoryContextMenu.desktop.kt | Desktop category context menu + delete dialog wiring. |
| sharedUI/src/jvmMain/kotlin/com/prof18/feedflow/shared/ui/feedsourcelist/FeedSourceListComponents.desktop.kt | Desktop right-click handling to capture cursor window position. |
| sharedUI/src/jvmMain/kotlin/com/prof18/feedflow/shared/ui/feedsourcelist/FeedSourceContextMenu.desktop.kt | Desktop feed-source context menu using DesktopPopupMenu. |
| sharedUI/src/jvmMain/kotlin/com/prof18/feedflow/shared/ui/components/menu/DesktopPopupMenu.kt | New reusable desktop popup menu component with keyboard navigation. |
| sharedUI/src/commonMain/kotlin/com/prof18/feedflow/shared/ui/style/ColorScheme.kt | Adds surface container color tokens to light/dark schemes. |
| sharedUI/src/commonMain/kotlin/com/prof18/feedflow/shared/ui/style/Color.kt | Updates palette + adds surface container color constants. |
| sharedUI/src/commonMain/kotlin/com/prof18/feedflow/shared/ui/icons/OpenSidebarReversed.kt | Adds reversed sidebar icon vector. |
| sharedUI/src/commonMain/kotlin/com/prof18/feedflow/shared/ui/icons/OpenSidebar.kt | Adds sidebar icon vector. |
| sharedUI/src/commonMain/kotlin/com/prof18/feedflow/shared/ui/icons/CloseSidebarReversed.kt | Adds reversed close-sidebar icon vector. |
| sharedUI/src/commonMain/kotlin/com/prof18/feedflow/shared/ui/icons/CloseSidebar.kt | Adds close-sidebar icon vector. |
| sharedUI/src/commonMain/kotlin/com/prof18/feedflow/shared/ui/home/components/list/FeedItemView.kt | Wires long-click cursor position into context menu invocation. |
| sharedUI/src/commonMain/kotlin/com/prof18/feedflow/shared/ui/home/components/list/FeedItemContextMenu.kt | Converts to expect API (platform implementations). |
| sharedUI/src/commonMain/kotlin/com/prof18/feedflow/shared/ui/home/components/drawer/FeedSourceDrawerItem.kt | Adds visual styling abstraction + context menu position support. |
| sharedUI/src/commonMain/kotlin/com/prof18/feedflow/shared/ui/home/components/drawer/FeedSourceDragAndDrop.kt | Makes drop-target highlight shape configurable. |
| sharedUI/src/commonMain/kotlin/com/prof18/feedflow/shared/ui/home/components/drawer/DrawerTimelineItem.kt | Applies DrawerItemVisualStyle + shared color helper. |
| sharedUI/src/commonMain/kotlin/com/prof18/feedflow/shared/ui/home/components/drawer/DrawerReadItem.kt | Applies DrawerItemVisualStyle + shared color helper. |
| sharedUI/src/commonMain/kotlin/com/prof18/feedflow/shared/ui/home/components/drawer/DrawerItemVisualStyle.kt | New drawer item styling + centralized colors helper. |
| sharedUI/src/commonMain/kotlin/com/prof18/feedflow/shared/ui/home/components/drawer/DrawerFeedSuggestionsItem.kt | Applies DrawerItemVisualStyle + shared color helper. |
| sharedUI/src/commonMain/kotlin/com/prof18/feedflow/shared/ui/home/components/drawer/DrawerFeedSourcesList.kt | Plumbs DrawerItemVisualStyle through drawer list. |
| sharedUI/src/commonMain/kotlin/com/prof18/feedflow/shared/ui/home/components/drawer/DrawerFeedSourcesByCategories.kt | Adds context menu positioning + visual style plumbing + drag highlight shape. |
| sharedUI/src/commonMain/kotlin/com/prof18/feedflow/shared/ui/home/components/drawer/DrawerBookmarksItem.kt | Applies DrawerItemVisualStyle + shared color helper. |
| sharedUI/src/commonMain/kotlin/com/prof18/feedflow/shared/ui/home/components/drawer/DrawerAddItem.kt | Applies DrawerItemVisualStyle + shared color helper. |
| sharedUI/src/commonMain/kotlin/com/prof18/feedflow/shared/ui/home/components/drawer/Drawer.kt | Makes Drawer public and adds drawerItemVisualStyle parameter. |
| sharedUI/src/commonMain/kotlin/com/prof18/feedflow/shared/ui/home/components/HomeScreenContent.kt | Adds toolbar elevation, fade overlay, and configurable app bar colors/heights. |
| sharedUI/src/commonMain/kotlin/com/prof18/feedflow/shared/ui/home/components/HomeAppBar.kt | Adds configurable colors/height and RTL-aware drawer icons. |
| sharedUI/src/commonMain/kotlin/com/prof18/feedflow/shared/ui/home/components/CategoryContextMenu.kt | Converts to expect API (platform implementations). |
| sharedUI/src/commonMain/kotlin/com/prof18/feedflow/shared/ui/feedsourcelist/FeedSourceInteraction.kt | Adds long-click positioned callback to expected modifier. |
| sharedUI/src/commonMain/kotlin/com/prof18/feedflow/shared/ui/feedsourcelist/FeedSourceContextMenu.kt | Converts to expect API (platform implementations). |
| sharedUI/src/commonMain/kotlin/com/prof18/feedflow/shared/ui/feed/editfeed/EditFeedComponents.kt | Uses theme error color instead of hardcoded red. |
| sharedUI/src/commonMain/kotlin/com/prof18/feedflow/shared/ui/components/TopToolbarContentFade.kt | New reusable top fade overlay component. |
| sharedUI/src/androidMain/kotlin/com/prof18/feedflow/shared/ui/home/components/list/FeedItemContextMenu.android.kt | Android actual for feed item context menu (keeps DropdownMenu). |
| sharedUI/src/androidMain/kotlin/com/prof18/feedflow/shared/ui/home/components/CategoryContextMenu.android.kt | Android actual for category context menu (keeps DropdownMenu + delete dialog). |
| sharedUI/src/androidMain/kotlin/com/prof18/feedflow/shared/ui/feedsourcelist/FeedSourceListComponents.android.kt | Android actual signature updated for positioned callback (unused). |
| sharedUI/src/androidMain/kotlin/com/prof18/feedflow/shared/ui/feedsourcelist/FeedSourceContextMenu.android.kt | Android actual for feed source context menu (keeps DropdownMenu). |
| shared/src/jvmMain/kotlin/com/prof18/feedflow/shared/di/KoinDesktop.kt | Registers DesktopHomeSettingsRepository in desktop Koin module. |
| shared/src/jvmMain/kotlin/com/prof18/feedflow/shared/data/DesktopHomeSettingsRepository.kt | New desktop settings repository (multi-pane, drawer visibility, pane anchor). |
| shared/src/commonTest/kotlin/com/prof18/feedflow/shared/presentation/ReaderModeViewModelTest.kt | Adds tests for selection/reset + latest-request-wins behavior + edge navigation. |
| shared/src/commonMain/kotlin/com/prof18/feedflow/shared/presentation/model/MenuBarSettingsState.kt | Adds desktop multi-pane flag to shared settings state. |
| shared/src/commonMain/kotlin/com/prof18/feedflow/shared/presentation/ReaderModeViewModel.kt | Cancels in-flight loads and prevents stale load results from overwriting newer selection. |
| shared/src/commonMain/kotlin/com/prof18/feedflow/shared/presentation/HomeViewModel.kt | Adds refresh trigger + refresh helpers for UI coordination. |
| i18n/src/commonMain/resources/locale/values/strings.xml | Renames “App” section to “General” + adds desktop multi-pane string. |
| gradle/libs.versions.toml | Adds haze dependencies and compose-unstyled coordinates. |
| desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/ui/components/DrawerHazeStyle.kt | Adds OS-specific haze material selection. |
| desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/ui/components/DesktopDialogWindow.kt | Adds resizable/extendBehindTitleBar options + title bar behavior changes. |
| desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/settings/SyncStoragePane.kt | New desktop settings pane for sync/storage + cache clearing actions. |
| desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/settings/SettingsWindow.kt | New multi-category desktop settings window UI with haze sidebar. |
| desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/settings/ReadingPane.kt | New desktop reading settings pane. |
| desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/settings/GeneralPane.kt | New desktop general settings pane (theme, multi-pane toggle, reduce motion). |
| desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/settings/FeedListPane.kt | New desktop feed-list settings pane (preview + controls). |
| desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/settings/DesktopSettingsCategory.kt | Defines desktop settings window navigation categories. |
| desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/settings/AccountsPane.kt | Hosts account sync screens inside the settings window. |
| desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/settings/AboutPane.kt | Desktop “About & Support” settings pane and crash reporting toggle wiring. |
| desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/search/SearchScreen.desktop.kt | Import ordering cleanup. |
| desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/reaadermode/ReaderModeScreen.desktop.kt | Adds toolbar elevation/fade and fullscreen toggle hook for detail pane. |
| desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/main/MainWindow.kt | Routes settings to new settings window and integrates refresh triggers. |
| desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/main/DesktopDialogWindowNavigator.kt | Replaces Accounts destination with Settings destination. |
| desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/main/AboutDialog.kt | Removes standalone about dialog (moved into settings). |
| desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/home/menubar/ViewMenu.kt | Removes feed list appearance menu item. |
| desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/home/menubar/MenuBar.kt | Removes behavior/help dialogs + routes settings to new window. |
| desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/home/menubar/HelpMenu.kt | Removes crash reporting/about menu entries; keeps bug report and Linux support item. |
| desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/home/menubar/FileMenu.kt | Adds Settings menu item with Cmd/Ctrl+, shortcut. |
| desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/home/menubar/BehaviorMenu.kt | Removes entire Behavior menu (functionality moved into settings window). |
| desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/home/HomeScreen.desktop.kt | Adds desktop multi-pane home flow and reader article selection handling. |
| desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/home/DesktopSinglePaneHomeScaffold.kt | New single-pane home scaffold for desktop redesign. |
| desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/home/DesktopHomeScaffold.kt | New multi-pane home scaffold (list/detail) with drawer + haze + split anchors. |
| desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/editfeed/EditFeedScreen.desktop.kt | Import ordering cleanup. |
| desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/addfeed/AddFeedScreen.desktop.kt | Import ordering cleanup. |
| desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/about/LicensesScreen.desktop.kt | Uses MaterialTheme surface container tokens for theming instead of manual colors. |
| desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/about/AboutContent.kt | Removes dark theme parameter plumbing for licenses theming. |
| desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/SplashScreen.kt | Aligns splash colors with updated palette. |
| desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/Main.kt | Updates desktop background constants to new palette. |
| desktopApp/build.gradle.kts | Adds haze dependencies to desktop build. |
| .gitignore | Adds .claude/worktrees ignore and normalizes tmp entry. |
| .claude/settings.local.json | Adds additional allowed WebFetch domains for tooling. |
You can also share your feedback on Copilot code review. Take the survey.
6e78ea0 to
41ccbc9
Compare
62201d4 to
1dd23b3
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.