Skip to content

#1928: Added Upgrade IDEasy and Update functionalities to the GUI with pro active notifications#2027

Open
KarimALotfy wants to merge 60 commits into
devonfw:mainfrom
KarimALotfy:feature/1928-show-pro-active-notifications-of-updates-in-gui
Open

#1928: Added Upgrade IDEasy and Update functionalities to the GUI with pro active notifications#2027
KarimALotfy wants to merge 60 commits into
devonfw:mainfrom
KarimALotfy:feature/1928-show-pro-active-notifications-of-updates-in-gui

Conversation

@KarimALotfy

@KarimALotfy KarimALotfy commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

This PR fixes #1928

Implemented Changes

  1. Created UpgradeController

    • On startup, IDEasy checks whether the installed version is outdated.
    • If so, an indicator is shown near the Logo that opens a dialog and allows running the upgrade command.
  2. Created UpdateController

    • After selecting both a project and a workspace, an update check is performed.
    • If an update is available, an indicator is shown near the project ComboBox, opening a dialog that allows running the update command.
  3. Controller / architecture adjustments

    • Refactored MainController to allow dependency injection.
    • Reduced singleton-based wiring to improve flexibility and testability.
  4. Localization

    • Aligned the implementation with #1936.
    • Added/updated English and German texts in messages.properties and messages_de.properties.
  5. Tests

    • Added UpgradeUpdateFlowTest as end-to-end GUI integration tests for both update and upgrade flows using the new indicator + dialog pattern.
  6. UI refactoring

  7. Tray notification service

    • Added TrayNotificationService to avoid duplicated tray-indicator logic.
    • Used by both UpgradeController and UpdateController to show the clickable tray indicator when an upgrade or update is available.

Testing Instructions

1. GUI testing with overridden configuration

A test configuration class was added: TestGuiConfiguration

This allows overriding the current IDEasy version and update availability via environment variables when launching the GUI.

Example:

IDE_VERSION=2026.02.001;IDE_UPDATE_AVAILABLE=true

Usage:

TestGuiConfiguration.applyConfigOverrides();

Note: This call in App is only for testing and should be removed before merge.

Upgrade flow

  1. Start the application.
  2. Click the indicator at the top-right of the IDEasy logo.
  3. Expected result:
    • A dialog opens.
    • The dialog shows the current and latest IDEasy versions.
    • The Upgrade button executes the upgrade command.

Update flow

  1. Select a project.
  2. Select a workspace.
  3. Click the indicator at the top-right of the project ComboBox.
  4. Expected result:
    • A dialog opens.
    • The dialog shows an Update Available status.
    • The Update button executes the update command.

2. Run automated tests

Run the following test class:

UpgradeUpdateFlowTest

This validates both update and upgrade flows

Checklist for this PR

Make sure everything is checked before merging this PR. For further info please also see
our DoD.

  • When running mvn clean test locally all tests pass and build is successful
  • PR title is of the form #«issue-id»: «brief summary» (e.g. #921: fixed setup.bat). If no issue ID exists, title only.
  • PR top-level comment summarizes what has been done and contains link to addressed issue(s)
  • PR and issue(s) have suitable labels
  • Issue is set to In Progress and assigned to you or there is no issue (might happen for very small PRs)
  • You followed all coding conventions
  • You have added the issue implemented by your PR in CHANGELOG.adoc unless issue is labeled
    with internal
  • You have formulated clear instructions on how to test your contribution under "Testing instructions"

laim2003 added 30 commits March 27, 2026 17:52
- Added logging to IdeGuiStateManager.
- Added functionality, that selecting a different project now switches the IdeContext to the new project.
- Added logging to IdeGuiStateManager.
- Added functionality, that selecting a different project now switches the IdeContext to the new project.
- Added functionality, that selecting a different project now switches the IdeContext to the new project.
- added DI for IdeGuiStateManager.switchContext
…reading the list of workspaces/projects instead of reading those from the UI
…nager, when switchContext(Path rootDirectory, ...) is called.
…tateManager is now set when calling getInstance(), allowing us to provide a getInstance() method with a DI parameter
laim2003 and others added 18 commits April 28, 2026 19:47
- Add interactive i18n support: app can switch locales (English/Deutsch) via combo box
- I18nService manages locale state with listener notifications for UI text updates
- MainController registers locale change listener to refresh all UI labels and prompts on language switch

 Testing:
   - I18nServiceTest: verify service behavior
   - AppBaseTest: new interactive UI test
- Updated the main UI section
- Created tests covering:
  update available / unavailable
  upgrade available / unavailable
  Consolidated shared test setup for the GUI flows
…h an indicator and a dialog, replacing the update card
@github-project-automation github-project-automation Bot moved this to 🆕 New in IDEasy board Jun 15, 2026
@KarimALotfy KarimALotfy self-assigned this Jun 15, 2026
@KarimALotfy KarimALotfy moved this from 🆕 New to 🏗 In progress in IDEasy board Jun 15, 2026
@KarimALotfy KarimALotfy moved this from 🏗 In progress to Team Review in IDEasy board Jun 15, 2026
@KarimALotfy KarimALotfy added GUI Graphical User Interface of IDEasy (aka dashboard) build with JavaFx enhancement New feature or request upgrade upgrade of IDEasy to latest version update related to updating software or the entire ide labels Jun 15, 2026
@KarimALotfy KarimALotfy moved this from Team Review to 🏗 In progress in IDEasy board Jun 16, 2026
@coveralls

Copy link
Copy Markdown
Collaborator

Coverage Report for CI Build 27604730745

Warning

Build has drifted: This PR's base is out of sync with its target branch, so coverage data may include unrelated changes.
Quick fix: rebase this PR. Learn more →

Warning

No base build found for commit 8e8f433 on main.
Coverage changes can't be calculated without a base build.
If a base build is processing, this comment will update automatically when it completes.

Coverage: 70.805%

Details

  • Patch coverage: No coverable lines changed in this PR.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

Requires a base build to compare against. How to fix this →


Coverage Stats

Coverage Status
Relevant Lines: 16578
Covered Lines: 12245
Line Coverage: 73.86%
Relevant Branches: 7286
Covered Branches: 4652
Branch Coverage: 63.85%
Branches in Coverage %: Yes
Coverage Strength: 3.11 hits per line

💛 - Coveralls

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request GUI Graphical User Interface of IDEasy (aka dashboard) build with JavaFx update related to updating software or the entire ide upgrade upgrade of IDEasy to latest version

Projects

Status: 🏗 In progress

Development

Successfully merging this pull request may close these issues.

Show user pro-active notifications of updates in the GUI

3 participants