Skip to content

draft: implement full Assistant features also on client - #10345

Open
Rello wants to merge 3 commits into
masterfrom
feature/newAssistant
Open

draft: implement full Assistant features also on client#10345
Rello wants to merge 3 commits into
masterfrom
feature/newAssistant

Conversation

@Rello

@Rello Rello commented Jul 10, 2026

Copy link
Copy Markdown
Collaborator
  • cover all server Assistant feature
  • continue conversations on server/client
  • isolated assistant dialog for better modularisation of the client
Bildschirmfoto 2026-07-10 um 10 43 51 Bildschirmfoto 2026-07-10 um 10 44 24

@Rello Rello added the design Design, UI, UX, etc. label Jul 10, 2026
@Rello

Rello commented Jul 10, 2026

Copy link
Copy Markdown
Collaborator Author

@kra-mo @jancborchardt

@Rello Rello added this to the 34.0.1 milestone Jul 10, 2026
@Rello Rello changed the title feat: implement full Assistant features also on client draft: implement full Assistant features also on client Jul 10, 2026
@Rello Rello modified the milestones: 34.0.1, 34.0.2 Jul 30, 2026
@Rello Rello modified the milestones: 34.0.2, 35.0.0 Aug 11, 2026
@kra-mo

kra-mo commented Aug 14, 2026

Copy link
Copy Markdown
Member

The Assistant on the web will likely be redesigned next cycle, so I'd maybe hold off on iterating on the UI for now.

@Rello

Rello commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator Author

The Assistant on the web will likely be redesigned next cycle, so I'd maybe hold off on iterating on the UI for now.

Hello,
next cycle you mean 36?
the current one is pretty useless so I would like to get at least the current approach in.
For simplicity I would suggests that we hide all buttons on the top and only default it to the "chat". because this feature will then sync with the conversations on the server.
the current implementation is pure temporary and super alpha. the proper chat-only implementation would make it actually very usable already

@Rello

Rello commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator Author

@copilot resolve the merge conflicts in this pull request

@Rello

Rello commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator Author
  • Reload icon we can remove I would say. its there to reload the conversations from the server. it is reloaded during the window startup. its not very likely that there are new conversations for the same user when they are currently in this dialog. less distraction.
  • new chat needs to move next to the conversation dropdown

Copilot AI commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request

Merge conflicts with origin/master have been resolved in commit a4d01ff. The resolution keeps both the unified search UI (from this PR) and the assistant panel features, while adopting master's updated file paths (src/gui/activity/qml/ActivitiesWindow.qml, src/gui/search/unifiedsearchresultslistmodel.h).

@kra-mo

kra-mo commented Aug 21, 2026

Copy link
Copy Markdown
Member

Hello,
next cycle you mean 36?

Yes.

For simplicity I would suggests that we hide all buttons on the top and only default it to the "chat". because this feature will then sync with the conversations on the server.

That's fine by me.

@Rello
Rello marked this pull request as ready for review August 22, 2026 21:50
@Rello

Rello commented Aug 22, 2026

Copy link
Copy Markdown
Collaborator Author

@kra-mo
Bildschirmfoto 2026-08-22 um 23 51 22

@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: 97e91ad54d

ℹ️ 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 +481 to +482
section.delegate: UnifiedSearchResultSectionItem {
width: unifiedSearchResultsListView.width

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P0 Badge Close the unified-search component hierarchy

The newly added section.delegate begins a UnifiedSearchResultSectionItem here but never closes that delegate, the containing ListView, or its ScrollView before the following Dialog; the file consequently has three unmatched opening braces. MainWindow.qml therefore cannot be parsed, preventing the tray window from being instantiated for every desktop-client launch.

Useful? React with 👍 / 👎.

Comment thread src/gui/assistant/qml/AssistantWindow.qml
Comment thread src/gui/assistant/assistantcontroller.cpp
Comment on lines +50 to +54
AssistantController::AssistantController(AccountStatePtr accountState, QObject *parent)
: QObject(parent)
, _accountState(std::move(accountState))
, _account(_accountState->account())
, _client(new AssistantClient(_account, this))

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Add automated coverage for the Assistant workflows

This change introduces the Assistant controller, networking workflows, response models, and QML behavior without changing or adding any automated tests. Add focused coverage for successful requests, malformed/error responses, polling boundaries, and conversation state transitions before treating the feature as complete.

AGENTS.md reference: AGENTS.md:L33-L36

Useful? React with 👍 / 👎.

Move Assistant operations into a dedicated controller and expose task and chat workflows in a separate window.

Signed-off-by: Rello <Rello@users.noreply.github.com>
Signed-off-by: Rello <github@scherello.de>
Assisted-by: Codex:GPT-5
@Rello
Rello force-pushed the feature/newAssistant branch from 97e91ad to 26cdfe0 Compare August 23, 2026 06:28
Remove the legacy tray implementation, encapsulate Assistant resources and networking, reject stale asynchronous replies, and bound chat polling.

Signed-off-by: Rello <github@scherello.de>
Assisted-by: Codex:GPT-5

@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: c66f53a706

ℹ️ 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".

header: Item {}
footer: Item {}
onOpened: assistantResetConfirmationDialog.open()
UnifiedSearchInputContainer {

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P0 Badge Import the unified-search QML module

UnifiedSearchInputContainer and the other restored UnifiedSearch* components are declared only in the com.nextcloud.desktopclient.search module in src/gui/search/CMakeLists.txt, while this document imports only com.nextcloud.desktopclient; the QML engine will therefore report an unknown type and fail to instantiate the tray window. Fresh evidence after the earlier brace fix is that the component hierarchy is now closed, but the required module import is still absent. The added resource test checks only file existence, so add the import and exercise component instantiation.

AGENTS.md reference: AGENTS.md:L33-L36

Useful? React with 👍 / 👎.

Comment on lines +87 to +89
}

auto name = typeObject.value("name"_L1).toString();

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 Reject task shapes that cannot be submitted

When a server advertises a translation task with multiple required inputs, such as source text and source/target languages, isTranslate bypasses the single-text-shape check and exposes it as supported; however, OcsAssistantConnector::scheduleTask() always sends only input[input]. If chat is unavailable this type can also become the automatic default, making every submission fail server-side. Either construct the request from the advertised input shape or exclude task types whose required fields the UI cannot supply, with coverage for multi-input shapes.

AGENTS.md reference: AGENTS.md:L33-L36

Useful? React with 👍 / 👎.

Signed-off-by: Rello <github@scherello.de>
Assisted-by: Codex:GPT-5
@github-actions

Copy link
Copy Markdown
Contributor

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

Digest: sha256:90c2ee18ffb51c2776bed2fe30c7c5e87929a148ede2aba92843599e16a9119f

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.

@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
19.4% Coverage on New Code (required ≥ 80%)
257 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

@kra-mo kra-mo left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

An improvement

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

Labels

design Design, UI, UX, etc.

Projects

Status: NC35

Development

Successfully merging this pull request may close these issues.

3 participants