draft: implement full Assistant features also on client - #10345
Conversation
Rello
commented
Jul 10, 2026
- cover all server Assistant feature
- continue conversations on server/client
- isolated assistant dialog for better modularisation of the client
|
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, |
|
@copilot resolve the merge conflicts in this pull request |
|
Merge conflicts with |
Yes.
That's fine by me. |
There was a problem hiding this comment.
💡 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".
| section.delegate: UnifiedSearchResultSectionItem { | ||
| width: unifiedSearchResultsListView.width |
There was a problem hiding this comment.
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 👍 / 👎.
| AssistantController::AssistantController(AccountStatePtr accountState, QObject *parent) | ||
| : QObject(parent) | ||
| , _accountState(std::move(accountState)) | ||
| , _account(_accountState->account()) | ||
| , _client(new AssistantClient(_account, this)) |
There was a problem hiding this comment.
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
97e91ad to
26cdfe0
Compare
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
There was a problem hiding this comment.
💡 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 { |
There was a problem hiding this comment.
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 👍 / 👎.
| } | ||
|
|
||
| auto name = typeObject.value("name"_L1).toString(); |
There was a problem hiding this comment.
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
|
Artifact containing the AppImage: nextcloud-appimage-pr-10345.zip Digest: 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. |
|




