Skip to content

feat(tray): Migrate TrayWindow to the new tray user menu - #10164

Merged
Rello merged 20 commits into
masterfrom
feature/trayAccountStatus
Jul 8, 2026
Merged

feat(tray): Migrate TrayWindow to the new tray user menu#10164
Rello merged 20 commits into
masterfrom
feature/trayAccountStatus

Conversation

@Rello

@Rello Rello commented Jun 11, 2026

Copy link
Copy Markdown
Collaborator

Tray Menu:

  • extend the tray menu
  • add user status and message
  • add open local folder
  • add apps menu
  • add dedicated assistant window
  • add dedicated activities window
  • add dedicated modal for user status and message selection matching the web ui
  • confirm notifications from tray menu
Bildschirmfoto 2026-06-22 um 23 52 11 Bildschirmfoto 2026-07-06 um 13 26 51

@Rello Rello self-assigned this Jun 11, 2026
@Rello
Rello marked this pull request as draft June 11, 2026 16:24
chatgpt-codex-connector[bot]

This comment was marked as resolved.

@Rello Rello added the design Design, UI, UX, etc. label Jun 11, 2026
@Rello Rello changed the title feat(tray): Add user status and more items to the tray's user menu feat(tray): Migrate TrayWindow to the new tray user menu Jun 18, 2026
@Rello Rello moved this to 🏗️ In progress in 💻 Desktop Clients team Jun 26, 2026
@Rello Rello mentioned this pull request Jun 26, 2026
@Rello
Rello force-pushed the feature/trayAccountStatus branch 2 times, most recently from f7197f9 to 69ccecf Compare July 2, 2026 19:46
@Rello Rello moved this from 🏗️ In progress to 🏁 NC34 in 💻 Desktop Clients team Jul 6, 2026
@Rello
Rello force-pushed the feature/trayAccountStatus branch from 64ebf23 to 44b1c7c Compare July 6, 2026 18:05
@Rello
Rello marked this pull request as ready for review July 6, 2026 18:07

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 44b1c7c332

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/gui/tray/usermodel.cpp
Comment thread src/gui/ActivitiesWindow.qml
Comment thread src/gui/systray.cpp
Comment on lines +478 to +480
#if defined(Q_OS_LINUX)
setupQtTrayContextMenu(_contextMenu, this);
#else

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Preserve Linux tray pause/resume actions

On Linux, this branch now routes the context menu entirely through setupQtTrayContextMenu; I checked populateTrayMenu, and it only creates account submenus/Add account/Settings/Quit, so the pause/resume actions in the else branch are no longer reachable. For users who pause all folders from the tray context menu, this removes the existing "Pause sync"/"Resume sync" workflow; please add equivalent actions to the new menu or keep the old actions on Linux.

Useful? React with 👍 / 👎.

chatgpt-codex-connector[bot]

This comment was marked as outdated.

Rello and others added 5 commits July 7, 2026 14:47
Consolidates the tray account status menu work and related follow-up fixes into one reviewable commit.

Assisted-by: Codex:gpt-5

Signed-off-by: Rello <[email protected]>
will make maintenance easier

Signed-off-by: Matthieu Gallien <[email protected]>
@mgallien
mgallien force-pushed the feature/trayAccountStatus branch from 69e122a to bbbf364 Compare July 7, 2026 12:47
Comment thread src/gui/macOS/trayaccountpopup_mac.mm Outdated
Comment thread src/gui/macOS/trayaccountpopup_mac.mm Outdated
Comment thread src/gui/macOS/trayaccountpopup_mac.mm Outdated
Comment thread src/gui/macOS/trayaccountpopup_mac.mm Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a7dc826d6d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines 409 to +410
setUserStatusMessage(userStatus);
return true;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Return false when no status request is started

On servers that support user status but not custom status emojis, setUserStatusMessageCustom() emits EmojisNotSupported and returns without creating a set-message job, but this method still reports success. UserStatusSelectorModel::setUserStatus() then keeps a queued Message operation that will never receive a matching completion; a later successful status change can be matched to that stale operation and emit finished/close the new status window even though the current operation was only an online-status update. Please return false when the message request was not accepted, or clear the queued operation for this error.

Useful? React with 👍 / 👎.

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 694e990da2

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/gui/tray/usermodel.cpp Outdated
Comment on lines +292 to +293
case OCC::SyncResult::Undefined:
return SyncIssueKind::Warning;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Keep undefined folder status neutral

Fresh evidence beyond the earlier file-provider path is that syncIssueKindForAccount() now feeds local folder syncResult() values through this helper; SyncResult defaults to Undefined until a folder has reported a real state (src/libsync/syncresult.h), so a newly added or just-started connected account can surface the new account alert as “Some files could not be synced!” even though nothing failed. Please bucket Undefined with None, matching syncStatusForAccount() and SyncStatusSummary, until a concrete result arrives.

Useful? React with 👍 / 👎.

Rello and others added 4 commits July 7, 2026 19:41
Remove hardcoded sizes, radius and margins, use Style properties instead.
Extract the shared window flags, palette and background of the wizard
window into a new WizardStyledWindow base component.

Assisted-by: Claude:claude-opus-4-8
Signed-off-by: Camila Ayres <[email protected]>
The role enumerators were declared as a scoped enum (enum class) while
the tray popup call sites used the unscoped form and relied on implicit
int conversion, which broke the macOS build. Switch to an unscoped enum
so the enumerators live in class scope and convert to int, matching the
call sites and the sibling role enums, and drop the now-redundant casts.

Assisted-by: Claude:claude-opus-4-8
Signed-off-by: Camila Ayres <[email protected]>
The role range guard used role < IconUrlRole, which excluded IconUrlRole
itself, so case IconUrlRole was unreachable and data() returned an empty
QVariant for it. As a result the account apps popup never received app
icon URLs. Use <= so the icon role is served.

Assisted-by: Claude:claude-opus-4-8
Signed-off-by: Camila Ayres <[email protected]>
@camilasan
camilasan force-pushed the feature/trayAccountStatus branch from 3a4a53d to 7bbcf31 Compare July 7, 2026 17:45
Rello and others added 2 commits July 7, 2026 20:34
…code files and added documentation

Signed-off-by: Iva Horn <[email protected]>
@i2h3 i2h3 added this to the 34.0.0 milestone Jul 8, 2026
@i2h3 i2h3 added os: 🍎 macOS Apple macOS, formerly also known as OS X os: 🚪 Windows os: 🐧 Linux feature: ☁️ GUI System tray icon and menu. labels Jul 8, 2026
@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Artifact containing the AppImage: nextcloud-appimage-pr-10164.zip

Digest: sha256:a94e966c673e529c3cea5f4ff1877e6058f8ef73e471adccca568653871e1294

To test this change/fix you can download the above artifact file, unzip it, and run it.

Please make sure to quit your existing Nextcloud app and backup your data.

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5071857929

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +200 to +201
[_appsPopup orderOut:nil];
[self clearActiveSubmenuRow];

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Hide stale notification action popups on rebuild

When this account-actions popup is rebuilt from the dataChanged connection while a notification-actions subpopup is open, only _appsPopup is ordered out. The separate _notificationActionsPopup window remains visible with action blocks that captured the old activityIndex; after the parent stack is rebuilt or a notification is removed, clicking that stale subpopup can trigger or dismiss the wrong notification. Hide _notificationActionsPopup here as orderOut/hideAppsPopup already do before clearing and rebuilding the stack.

Useful? React with 👍 / 👎.

@sonarqubecloud

sonarqubecloud Bot commented Jul 8, 2026

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
1 Security Hotspot
28.4% Coverage on New Code (required ≥ 80%)
D Security Rating on New Code (required ≥ A)
253 New Code Smells (required ≤ 0)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

@Rello
Rello merged commit 814b2bc into master Jul 8, 2026
22 of 23 checks passed
@Rello
Rello deleted the feature/trayAccountStatus branch July 8, 2026 12:05
@github-project-automation github-project-automation Bot moved this from 🏁 NC34 to ☑️ Done in 💻 Desktop Clients team Jul 8, 2026
@Rello

Rello commented Jul 8, 2026

Copy link
Copy Markdown
Collaborator Author

/backport to stable-34.0

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

Labels

design Design, UI, UX, etc. feature: ☁️ GUI System tray icon and menu. os: 🍎 macOS Apple macOS, formerly also known as OS X os: 🚪 Windows os: 🐧 Linux

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants