Skip to content

Desktop redesign#1005

Merged
prof18 merged 17 commits into
mainfrom
desktop-redesign
Mar 12, 2026
Merged

Desktop redesign#1005
prof18 merged 17 commits into
mainfrom
desktop-redesign

Conversation

@prof18

@prof18 prof18 commented Mar 9, 2026

Copy link
Copy Markdown
Owner

No description provided.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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 DesktopPopupMenu and 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 ReaderModeViewModel request-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.

@prof18 prof18 force-pushed the desktop-redesign branch from 6e78ea0 to 41ccbc9 Compare March 11, 2026 17:17
@prof18 prof18 force-pushed the desktop-redesign branch from 62201d4 to 1dd23b3 Compare March 11, 2026 18:05
@prof18 prof18 enabled auto-merge (rebase) March 12, 2026 17:16
@prof18 prof18 merged commit 0ae6de7 into main Mar 12, 2026
4 checks passed
@prof18 prof18 deleted the desktop-redesign branch March 12, 2026 17:29
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.

2 participants