Skip to content

feat(ui): rebuild Linux Home with modular states and routing - #2247

Open
R-Gld wants to merge 13 commits into
linux-v4/home-state-controllerfrom
linux-v4/home-screen
Open

feat(ui): rebuild Linux Home with modular states and routing#2247
R-Gld wants to merge 13 commits into
linux-v4/home-state-controllerfrom
linux-v4/home-screen

Conversation

@R-Gld

@R-Gld R-Gld commented Aug 3, 2026

Copy link
Copy Markdown
Member
image
ℹ️ Description en français

Résumé

Cette PR remplace le HomePlaceholder statique du client Linux v4 par un écran Home modulaire piloté par état, et introduit la logique de routage qui décide quand afficher l'onboarding, la Home non configurée ou la Home configurée.

Changements

  • Ajout de mainwindowactivationdecision.* : fonction pure qui choisit la route d'activation de la fenêtre principale (Onboarding, SetupHome, ConfiguredHome) sans posséder d'état de fenêtre ou d'onboarding.
  • AppClientLinux utilise cette décision au démarrage et réagit désormais à l'annulation de l'onboarding et à la suppression de la dernière synchronisation configurée pour rebasculer vers la Home non configurée (handleConfiguredSyncsChanged, openOnboardingFromHome).
  • OnboardingSessionManager expose cancelActiveSession() et le nouveau signal onboardingCancelled pour permettre l'annulation programmatique de l'onboarding (notamment à la fermeture de la fenêtre en mode tray).
  • HomeController gagne openDriveDestination() et showActivities() ; il construit désormais lui-même les URLs produit au lieu de laisser le QML le faire.
  • Ajout de AppConstants::WebDrive : énumération Destination (Favoris, Partagés, Drive en ligne, Corbeille) et génération de l'URI web correspondante, exposée à QML sous le nom WebDrive (remplace l'énumération dupliquée initialement ajoutée sur HomeController).
  • Nouveaux composants QML modulaires sous ui/windows/main/home/ : HomeView, HomeGreeting, HomeStatusPanel, HomeErrorBanner, HomeStateContent/HomeStatusVisual et les états Loading/Offline/Paused/SetupRequired/Syncing/UpToDate, ainsi que DriveWebShortcutsView pour les raccourcis web du drive courant.
  • MainWindowView/Main.qml intègrent le nouveau HomeController et chargent HomeView via un Loader actif seulement quand l'onglet Home est visible et la fenêtre affichée.
  • Suppression de HomePlaceholder.qml, remplacé par la nouvelle arborescence modulaire ; mise à jour de CMakeLists.txt et de AGENTS.md en conséquence.

Summary

This PR replaces the static HomePlaceholder in the Linux v4 client with a modular, state-driven Home screen, and introduces the routing logic that decides when to show onboarding, the unconfigured Home, or the configured Home.

Changes

  • Added mainwindowactivationdecision.*: a pure function that selects the main window activation route (Onboarding, SetupHome, ConfiguredHome) without owning any window or onboarding state.
  • AppClientLinux now uses this decision at startup and reacts to onboarding cancellation and removal of the last configured sync to fall back to the unconfigured Home (handleConfiguredSyncsChanged, openOnboardingFromHome).
  • OnboardingSessionManager exposes cancelActiveSession() and a new onboardingCancelled signal, enabling programmatic cancellation of onboarding (notably when closing the window while tray mode is active).
  • HomeController gains openDriveDestination() and showActivities(); it now builds product URLs itself instead of leaving that to QML.
  • Added AppConstants::WebDrive: a Destination enum (Favorites, Shared, Online Drive, Trash) and matching web URI generation, exposed to QML as WebDrive (replacing the duplicate enum initially added on HomeController).
  • New modular QML components under ui/windows/main/home/: HomeView, HomeGreeting, HomeStatusPanel, HomeErrorBanner, HomeStateContent/HomeStatusVisual, and the Loading/Offline/Paused/SetupRequired/Syncing/UpToDate states, plus DriveWebShortcutsView for the current drive's web shortcuts.
  • MainWindowView/Main.qml wire in the new HomeController and load HomeView through a Loader that is only active while the Home tab is visible and the window is shown.
  • Removed HomePlaceholder.qml, replaced by the new modular tree; updated CMakeLists.txt and AGENTS.md accordingly.

@R-Gld R-Gld self-assigned this Aug 3, 2026
@R-Gld
R-Gld requested a review from a team as a code owner August 3, 2026 07:59
@github-actions github-actions Bot added the Linux UI PR related to the new linux GUI label Aug 3, 2026
@R-Gld
R-Gld force-pushed the linux-v4/home-state-controller branch from 1c34dba to 44fdbaf Compare August 3, 2026 15:27
@R-Gld
R-Gld force-pushed the linux-v4/home-screen branch from ac73deb to d26c293 Compare August 3, 2026 15:30
@sonarqubecloud

sonarqubecloud Bot commented Aug 3, 2026

Copy link
Copy Markdown

Quality Gate Passed Quality Gate passed

Issues
1 New issue
1 Accepted issue

Measures
0 Security Hotspots
No data about Coverage
0.0% Duplication on New Code

See analysis details on SonarQube Cloud

@R-Gld R-Gld changed the title feat(ui): Enhance Home UI and integrate routing and session management feat(ui): rebuild Linux Home with modular states and routing Aug 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Linux UI PR related to the new linux GUI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant