diff --git a/.github/workflows/command-rebase.yml b/.github/workflows/command-rebase.yml deleted file mode 100644 index dc59ffcad..000000000 --- a/.github/workflows/command-rebase.yml +++ /dev/null @@ -1,51 +0,0 @@ -# This workflow is provided via the organization template repository -# -# https://github.com/nextcloud/.github -# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization - -name: Rebase command - -on: - issue_comment: - types: created - -permissions: - contents: read - -jobs: - rebase: - runs-on: ubuntu-latest - permissions: - contents: none - - # On pull requests and if the comment starts with `/rebase` - if: github.event.issue.pull_request != '' && startsWith(github.event.comment.body, '/rebase') - - steps: - - name: Add reaction on start - uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4.0.0 - with: - token: ${{ secrets.COMMAND_BOT_PAT }} - repository: ${{ github.event.repository.full_name }} - comment-id: ${{ github.event.comment.id }} - reaction-type: "+1" - - - name: Checkout the latest code - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - with: - fetch-depth: 0 - token: ${{ secrets.COMMAND_BOT_PAT }} - - - name: Automatic Rebase - uses: cirrus-actions/rebase@b87d48154a87a85666003575337e27b8cd65f691 # 1.8 - env: - GITHUB_TOKEN: ${{ secrets.COMMAND_BOT_PAT }} - - - name: Add reaction on failure - uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4.0.0 - if: failure() - with: - token: ${{ secrets.COMMAND_BOT_PAT }} - repository: ${{ github.event.repository.full_name }} - comment-id: ${{ github.event.comment.id }} - reaction-type: "-1" diff --git a/.github/workflows/fixup.yml b/.github/workflows/fixup.yml index 98d49927a..c01a2f04a 100644 --- a/.github/workflows/fixup.yml +++ b/.github/workflows/fixup.yml @@ -28,6 +28,6 @@ jobs: steps: - name: Run check - uses: skjnldsv/block-fixup-merge-action@42d26e1b536ce61e5cf467d65fb76caf4aa85acf # v1 + uses: skjnldsv/block-fixup-merge-action@c138ea99e45e186567b64cf065ce90f7158c236a # v2 with: repo-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/generate_catalog_templates.yml b/.github/workflows/generate_catalog_templates.yml index 1984ea1a0..6ef12e407 100644 --- a/.github/workflows/generate_catalog_templates.yml +++ b/.github/workflows/generate_catalog_templates.yml @@ -20,7 +20,7 @@ jobs: pre-build-command: pip install -r requirements.txt build-command: make gettext - - uses: peter-evans/create-pull-request@v6 + - uses: peter-evans/create-pull-request@v7 id: cpr with: token: ${{ secrets.COMMAND_BOT_PAT }} diff --git a/.github/workflows/sphinxbuild.yml b/.github/workflows/sphinxbuild.yml index 81bb89b1b..11c706fcc 100644 --- a/.github/workflows/sphinxbuild.yml +++ b/.github/workflows/sphinxbuild.yml @@ -23,7 +23,7 @@ jobs: shell: bash run: tar czf /tmp/documentation.tar.gz -C user_manual/_build/html . - name: Upload static documentation - uses: actions/upload-artifact@v4.3.6 + uses: actions/upload-artifact@v4.4.0 with: name: User manual.zip path: "/tmp/documentation.tar.gz" @@ -55,7 +55,7 @@ jobs: shell: bash run: tar czf /tmp/documentation.tar.gz -C developer_manual/_build/html/com . - name: Upload static documentation - uses: actions/upload-artifact@v4.3.6 + uses: actions/upload-artifact@v4.4.0 with: name: Developer manual.zip path: "/tmp/documentation.tar.gz" @@ -75,7 +75,7 @@ jobs: shell: bash run: tar czf /tmp/documentation.tar.gz -C admin_manual/_build/html/com . - name: Upload static documentation - uses: actions/upload-artifact@v4.3.6 + uses: actions/upload-artifact@v4.4.0 with: name: Administration manual.zip path: "/tmp/documentation.tar.gz" diff --git a/admin_manual/ai/app_assistant.rst b/admin_manual/ai/app_assistant.rst index 7079f1bbe..048596787 100644 --- a/admin_manual/ai/app_assistant.rst +++ b/admin_manual/ai/app_assistant.rst @@ -43,10 +43,8 @@ Machine translation In order to make use of machine translation features in the assistant, you will need an app that provides a translation backend: -* :ref:`translate` - Runs open source AI translation models locally on your own server hardware (Customer support available upon request) * :ref:`translate2 (ExApp)` - Runs open source AI translation models locally on your own server hardware (Customer support available upon request) * *integration_deepl* - Integrates with the deepl API to provide translation functionality from Deepl.com servers (Only community supported) -* *integration_libretranslate* - Integrates with the open source LibreTranslate API to provide translation functionality hosted commercially or on your own hardware (Only community supported) Speech-To-Text ~~~~~~~~~~~~~~ @@ -69,7 +67,7 @@ Text-To-Image In order to make use of Text-To-Image features, you will need an app that provides an image generation backend: -* text2image_stablediffusion2 (Customer support available upon request) +* text2image_stablediffusion (Customer support available upon request) * *integration_openai* - Integrates with the OpenAI API to provide AI functionality from OpenAI servers (Customer support available upon request; see :ref:`AI as a Service`) * *integration_replicate* - Integrates with the replicate API to provide AI functionality from replicate servers (see :ref:`AI as a Service`) diff --git a/admin_manual/ai/app_context_chat.rst b/admin_manual/ai/app_context_chat.rst index 1f5b591be..e74fc0b36 100644 --- a/admin_manual/ai/app_context_chat.rst +++ b/admin_manual/ai/app_context_chat.rst @@ -13,7 +13,7 @@ Together they provide the ContextChat text processing tasks accessible via the : The *context_chat* and *context_chat_backend* apps will use the Free text to text task processing providers like OpenAI integration, LLM2, etc. and such a provider is required on a fresh install, or it can be configured to run open source models entirely on-premises. Nextcloud can provide customer support upon request, please talk to your account manager for the possibilities. -This app supports input and output in languages other than English if the language model supports the language. +This app supports input and output mainly in English, other languages may work if the language model supports the language, but are currently not guaranteed to produce good results. Requirements ------------ @@ -100,6 +100,7 @@ Known Limitations ----------------- * Language models are likely to generate false information and should thus only be used in situations that are not critical. It's recommended to only use AI at the beginning of a creation process and not at the end, so that outputs of AI serve as a draft for example and not as final product. Always check the output of language models before using it. +* Context Chat is not integrated into the Chat UI of assistant app, at the moment, but has it's own interface in the assistant modal * Make sure to test this app for whether it meets your use-case's quality requirements * Customer support is available upon request, however we can't solve false or problematic output, most performance issues, or other problems caused by the underlying model. Support is thus limited only to bugs directly caused by the implementation of the app (connectors, API, front-end, AppAPI) * Nextcloud usernames can be only 56 characters long. This is a limitation of the vector database we use (Chroma DB) and will be fixed soon. diff --git a/admin_manual/ai/app_llm2.rst b/admin_manual/ai/app_llm2.rst index f370c50f7..a78d42ab4 100644 --- a/admin_manual/ai/app_llm2.rst +++ b/admin_manual/ai/app_llm2.rst @@ -11,8 +11,22 @@ This app uses `ctransformers `_ under * `Llama3 8b Instruct `_ (reasonable quality; fast; good acclaim; multilingual output may not be optimal) * `Llama3 70B Instruct `_ (good quality; good acclaim; good multilingual output) +Multilinguality +--------------- + This app supports input and output in languages other than English if the underlying model supports the language. +Llama 3.1 `supports the following languages: `_ + +* English +* Portuguese +* Spanish +* Italian +* German +* French +* Hindi +* Thai + Requirements ------------ diff --git a/admin_manual/ai/app_stt_whisper2.rst b/admin_manual/ai/app_stt_whisper2.rst index 9850e609d..16e5c7981 100644 --- a/admin_manual/ai/app_stt_whisper2.rst +++ b/admin_manual/ai/app_stt_whisper2.rst @@ -13,6 +13,8 @@ This app uses `faster-whisper `_ unde * OpenAI Whisper large-v2 or v3 (multilingual) * OpenAI Whisper medium.en (English only) +Whisper large v3 supports about ~100 languages and shows outstanding performance in ~10 of them. For more details see the `OpenAI Whisper paper `_ + Requirements ------------ diff --git a/admin_manual/ai/app_summary_bot.rst b/admin_manual/ai/app_summary_bot.rst new file mode 100644 index 000000000..658624e11 --- /dev/null +++ b/admin_manual/ai/app_summary_bot.rst @@ -0,0 +1,137 @@ +========================================== +App: Summary Bot (Talk chat summarize bot) +========================================== + +.. _ai-app-summary-bot: + +The *Summary Bot* app utilizes Large Language Model (LLM) providers in Nextcloud and can be added to a conversation in `Nextcloud Talk` to generate summaries from the chat messages of that room either on-demand or following a schedule. +It can run on only open source or proprietary models either on-premises or in the cloud leveraging apps like `Local large language model app `_ or `OpenAI and LocalAI integration app `_. + +Nextcloud can provide customer support upon request, please talk to your account manager for the possibilities. + +The app currently supports the following languages: + +* English (en) + +The quality of summaries depends directly on the quality of the underlying model. It is recommended to test the model for the desired use-case before applying it. + +Requirements +------------ + +* Minimal Nextcloud version: 30 +* Docker +* AppAPI >= 3.0.0 +* Talk +* Task Processing Provider like Local large language model app (llm2) or OpenAI and LocalAI integration app (integration_openai) + +Space usage +~~~~~~~~~~~ + +* ~100MB + +Installation +------------ + +0. Make sure the following apps are installed: + + - `Nextcloud AppAPI app `_ + + - `Nextcloud Talk app (Spreed) `_ + + - One of the following AI model providers: + + - `Nextcloud Local large language model app `_ + + - `Nextcloud OpenAI and LocalAI integration app `_ + + +Setup (via App Store) +~~~~~~~~~~~~~~~~~~~~~ + +1. Install the *Summary Bot* app via the "External Apps" page in Nextcloud + +2. Enable the *Summary Bot* Bot for the selected Chatroom via the three dots menu of the Chatroom (The Bots settings are located inside the *Bots* section) + +Setup (Manual) +~~~~~~~~~~~~~~ + +After cloning this app *manually* (cloned via git to your apps directory) you will need to execute the following steps: + +1. Change to the folder you have cloned the source to: +.. code-block:: + + cd /path/to/your/nextcloud/webroot/apps/summarai/ + + +2. Build the docker image: +.. code-block:: + + docker build --no-cache -f Dockerfile -t local_summarai . + +3. Run the docker image: + +*Info:* + +- APP_VERSION environment variable should be equal to the version of the *Summary Bot* you are using + +- NEXTCLOUD_URL environment variable must be set to your Nextcloud instance's URL, ensuring it's reachable by the docker image. + +.. code-block:: + + sudo docker run -ti -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro -e APP_ID=summarai -e APP_DISPLAY_NAME="Summary Bot" -e APP_HOST=0.0.0.0 -e APP_PORT=9031 -e APP_SECRET=12345 -e APP_VERSION=1.0.0 -e NEXTCLOUD_URL='' -p 9031:9031 local_summarai + + +4. Un-register the Summary Bot if its already installed + +.. code-block:: + + sudo -u php /path/to/your/nextcloud/webroot/occ app_api:app:unregister summarai + + +5. Register the Summary Bot so that your Nextcloud instance is aware of it + +*Info:* Adjust the host value in the following example to the IP address of the docker container (for added security) + +.. code-block:: + + sudo -u php ./occ app_api:app:register summarai manual_install --json-info '{ "id": "summarai", "name": "Summary Bot", "daemon_config_name": "manual_install", "version": "1.0.0", "secret": "12345", "host": "0.0.0.0", "port": 9031, "scopes": ["AI_PROVIDERS", "TALK", "TALK_BOT"], "protocol": "http"}' --force-scopes --wait-finish + + +6. Enable the *Summary Bot* for the selected Chatroom via the three dots menu of the Chatroom (The Bots settings are located inside the *Bots* section) + +Usage +----- + +After enabling the *Summary Bot* in a Chatroom, you can test its functionality by simply sending the message below: + + "@summary" or "@summary help" + +App store +--------- + +You can also find the app in our app store, where you can write a review: ``_ + +Repository +---------- + +You can find the app's code repository on GitHub where you can report bugs and contribute fixes and features: ``_ + +Nextcloud customers should file bugs directly with our Customer Support. + +Ethical AI Rating +----------------- + +The ethical rating of the *SummarAI Bot*, which utilizes a model for text processing through the Nextcloud Assistant app, is significantly influenced by the choice and implementation of the underlying model. + +Learn more about the Nextcloud Ethical AI Rating `in our blog`. + +Known Limitations +----------------- + +* The Summary Bot cannot access previous conversations, it only recognizes messages from the moment it was enabled in the chatroom. +* Summary of maximum 40000 characters is supported. This assumes the underlying model can handle this amount of text (which should be close to 16000 context length). +* Languages other than English are not supported. The underlying model may still be able to understand other languages. +* AI models may occasionally produce inaccurate information. Therefore, they should be employed with caution in non-critical scenarios. It's essential to verify the accuracy of the bot's output before application. +* Be aware that AI models can consume a significant amount of energy. It's advisable to consider this factor in the planning and operation of AI systems if hosted on-premises or sustainability is a concern. +* AI models can exhibit extended processing times when run on CPUs. For enhanced efficiency, utilizing GPU support is recommended to expedite request handling. +* Customer support is available upon request, however we can't solve false or problematic output (hallucinations), most performance issues, or other problems caused by the underlying models. Support is thus limited only to bugs directly caused by the implementation of the app (connectors, API, front-end, AppAPI) diff --git a/admin_manual/ai/app_translate.rst b/admin_manual/ai/app_translate.rst deleted file mode 100644 index c8d4bf40b..000000000 --- a/admin_manual/ai/app_translate.rst +++ /dev/null @@ -1,105 +0,0 @@ -========================================== -App: Local Machine translation (translate) -========================================== - -.. _ai-app-translate: - -The *translate* app is one of the apps that provide machine translation functionality in Nextcloud and act as a translation backend for the :ref:`Nextcloud Assistant app`, the *text* app and :ref:`other apps making use of the core Translation API`. The *translate* app specifically runs only open source models and does so entirely on-premises. Nextcloud can provide customer support upon request, please talk to your account manager for the possibilities. - -The app currently supports the following languages: - -* English (en) -* German (de) -* French (fr) -* Spanish (es) -* Chinese (zh) - -As the models are entirely open source, the quality of translations may not be comparable to commercially available machine translation services. - -Requirements ------------- - -* Minimal Nextcloud version: 26 -* x86 CPU with 4-8 cores for the app to use (The more cores the faster it will be) -* 2GB of RAM for the app should be enough -* GNU lib C (musl is not supported) -* This app does not support using GPU for processing and may thus not be performing ideally for long texts -* The workload will run on the web server workers - -(*Note*: Nextcloud AIO is currently not supported due to it using musl) - -Space usage -~~~~~~~~~~~ - - * ~1GB per language pair - * ~10GB in total - -Installation ------------- - -0. Make sure the :ref:`Nextcloud Assistant app` is installed -1. Install the *translate* app via the "Apps" page in Nextcloud, or by executing - - occ app:enable translate - -Setup -~~~~~ - -After installing this app you will need to run: - -.. code-block:: - - occ translate:download-models - -You may also download only specific languages by using the following command: - -.. code-block:: - - occ translate:download-models - -For example - -.. code-block:: - - occ translate:download-models de en - -will download both en->de and de->en. - -.. code-block:: - - occ translate:download-models de en es - -will download en->de, de->en, en->es, es->en, es->de, de->es - -App store ---------- - -You can also find the app in our app store, where you can write a review: ``_ - -Repository ----------- - -You can find the app's code repository on GitHub where you can report bugs and contribute fixes and features: ``_ - -Nextcloud customers should file bugs directly with our Customer Support. - -Ethical AI Rating ------------------ - -Rating: 🟢 -~~~~~~~~~~ - -Positive: -* the software for training and inference of this model is open source -* the trained model is freely available, and thus can be run on-premises -* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage. - -Learn more about the Nextcloud Ethical AI Rating `in our blog _`. - -Known Limitations ------------------ - -* Language models are likely to generate false information and should thus only be used in situations that are not critical. It's recommended to only use AI at the beginning of a creation process and not at the end, so that outputs of AI serve as a draft for example and not as final product. Always check the output of language models before using it. -* Make sure to test the translation model you are using it for whether it meets the use-case's quality requirements -* Language models notoriously have a high energy consumption -* Customer support is available upon request, however we can't solve false or problematic output, most performance issues, or other problems caused by the underlying models. Support is thus limited only to bugs directly caused by the implementation of the app (connectors, API, front-end, AppAPI) diff --git a/admin_manual/ai/index.rst b/admin_manual/ai/index.rst index 0bfab9442..75fa987d0 100644 --- a/admin_manual/ai/index.rst +++ b/admin_manual/ai/index.rst @@ -7,11 +7,11 @@ Artificial Intelligence overview app_assistant - app_translate app_translate2 app_llm2 app_stt_whisper2 app_recognize app_context_chat + app_summary_bot app_api_and_external_apps ai_as_a_service diff --git a/admin_manual/ai/overview.rst b/admin_manual/ai/overview.rst index c6ab356f7..343d7a657 100644 --- a/admin_manual/ai/overview.rst +++ b/admin_manual/ai/overview.rst @@ -22,13 +22,14 @@ Nextcloud uses modularity to separate raw AI functionality from the Graphical Us "Suspicious login detection","`Suspicious Login `_","Green","Yes","Yes","Yes","Yes" "Related resources","`Related Resources `_","Green","Yes","Yes","Yes","Yes" "Recommended files","recommended_files","Green","Yes","Yes","Yes","Yes" - "Machine translation","`Translate `_","Green","Yes","Yes - Opus models by University Helsinki","Yes","Yes" - "","`Local Machine Translation 2 (ExApp) `_","Green","Yes","Yes - MADLAD models by Google","Yes","Yes" - "","`LibreTranslate integration `_","Green","Yes","Yes - OpenNMT models","Yes","Yes" + "Text processing using LLMs","`llm2 (ExApp) `_","Green","Yes","Yes - Llama 3.1 model by Meta","Yes","Yes" + "","`OpenAI and LocalAI integration (via OpenAI API) `_","Red","No","No","No","No" + "","`OpenAI and LocalAI integration (via LocalAI) `_","Yellow","Yes","Yes - e.g. Llama models by Meta", "No","Yes" + "Machine translation","`Local Machine Translation 2 (ExApp) `_","Green","Yes","Yes - MADLAD models by Google","Yes","Yes" "","`DeepL integration `_","Red","No","No","No","No" "","`OpenAI and LocalAI integration (via OpenAI API) `_","Red","No","No","No","No" "","`OpenAI and LocalAI integration (via LocalAI) `_","Green","Yes","Yes","Yes","Yes" - "","`Local Whisper Speech-To-Text 2 (ExApp) `_","Yellow","Yes","Yes - Whisper models by OpenAI","No","Yes" + "Speech to Text","`Local Whisper Speech-To-Text 2 (ExApp) `_","Yellow","Yes","Yes - Whisper models by OpenAI","No","Yes" "","`OpenAI and LocalAI integration `_","Yellow","Yes","Yes - Whisper models by OpenAI","No","No" "","`Replicate integration `_","Yellow","Yes","Yes - Whisper models by OpenAI","No","No" "Image generation","`Local Stable Diffusion `_","Yellow","Yes","Yes - StableDiffusion XL model by StabilityAI","No","Yes" @@ -67,6 +68,30 @@ Features used by other apps Some of our AI features are realized as generic APIs that any app can use and any app can provide an implementation for by registering a provider. So far, these are Machine translation, Speech-To-Text, Image generation, Text processing and Context Chat. +Text processing +^^^^^^^^^^^^^^^ + +.. _tp-consumer-apps: + +As you can see in the table above we have multiple apps offering text processing using Large language models. +In downstream apps like Context Chat and assistant, users can use the text processing functionality regardless of which app implements it behind the scenes. + +Frontend apps +~~~~~~~~~~~~~ + +* *Text* for offering an inline graphical UI for the various tasks +* `Assistant `_ for offering a graphical UI for the various tasks and a smart picker +* `Mail `_ for summarizing mail threads (see :ref:`the Nextcloud Mail docs` for how to enable this) +* `Summary Bot `_ for summarizing chat histories in `Talk `_ + + +Backend apps +~~~~~~~~~~~~ + +* :ref:`llm2` - Runs open source AI LLM models on your own server hardware (Customer support available upon request) +* `OpenAI and LocalAI integration (via OpenAI API) `_ - Integrates with the OpenAI API to provide AI functionality from OpenAI servers (Customer support available upon request; see :ref:`AI as a Service`) + + Machine translation ^^^^^^^^^^^^^^^^^^^ @@ -85,10 +110,8 @@ Frontend apps Backend apps ~~~~~~~~~~~~ -* :ref:`translate` - Runs open source AI translation models locally on your own server hardware (Customer support available upon request) * :ref:`translate2 (ExApp)` - Runs open source AI translation models locally on your own server hardware (Customer support available upon request) * *integration_deepl* - Integrates with the deepl API to provide translation functionality from Deepl.com servers (Only community supported) -* *integration_libretranslate* - Integrates with the open source LibreTranslate API to provide translation functionality hosted commercially or on your own hardware (Only community supported) Speech-To-Text ^^^^^^^^^^^^^^ @@ -101,37 +124,15 @@ Frontend apps ~~~~~~~~~~~~~ * `Assistant `_ offering a graphical translation UI and a smart picker -* `Speech-to-Text Helper `_ for providing a Speech-To-Text smart picker (deprecated; was merged into assistant) * `Talk `_ for transcribing calls (see `Nextcloud Talk docs `_ for how to enable this) Backend apps ~~~~~~~~~~~~ * :ref:`stt_whisper2` - Runs open source AI Speech-To-Text models on your own server hardware (Customer support available upon request) -* *integration_openai* - Integrates with the OpenAI API to provide AI functionality from OpenAI servers (Customer support available upon request; see :ref:`AI as a Service`) +* `OpenAI and LocalAI integration (via OpenAI API) `_ - Integrates with the OpenAI API to provide AI functionality from OpenAI servers (Customer support available upon request; see :ref:`AI as a Service`) -Text processing -^^^^^^^^^^^^^^^ - -.. _tp-consumer-apps: - -As you can see in the table above we have multiple apps offering Text processing capabilities. In downstream apps like the Nextcloud Assistant app, users can use the text processing functionality regardless of which app implements it behind the scenes. - -Frontend apps -~~~~~~~~~~~~~ - -* `Assistant `_ for offering a graphical UI for the various tasks and a smart picker -* `GPTFreePrompt `_ for providing an llm smart picker (deprecated; was merged into assistant) -* `Mail `_ for summarizing mail threads (see :ref:`the Nextcloud Mail docs` for how to enable this) -* `SummarAI `_ for summarizing chat histories in `Talk `_ - -Backend apps -~~~~~~~~~~~~ - -* :ref:`llm2` - Runs open source AI language models locally on your own server hardware (Customer support available upon request) -* *integration_openai* - Integrates with the OpenAI API to provide AI functionality from OpenAI servers (Customer support available upon request; see :ref:`AI as a Service`) - Image generation ^^^^^^^^^^^^^^^^ @@ -143,18 +144,17 @@ Frontend apps ~~~~~~~~~~~~~ * `Assistant `_ for offering a graphical UI and a smart picker -* `Text-to-Image Helper `_ for providing a Text-to-Image smart picker (deprecated; was merged into assistant) Backend apps ~~~~~~~~~~~~ -* text2image_stablediffusion2 (Customer support available upon request) -* *integration_openai* - Integrates with the OpenAI API to provide AI functionality from OpenAI servers (Customer support available upon request; see :ref:`AI as a Service`) +* text2image_stablediffusion (Customer support available upon request) +* `OpenAI and LocalAI integration (via OpenAI API) `_ - Integrates with the OpenAI API to provide AI functionality from OpenAI servers (Customer support available upon request; see :ref:`AI as a Service`) * *integration_replicate* - Integrates with the replicate API to provide AI functionality from replicate servers (see :ref:`AI as a Service`) -Context Chat (Tech preview) -^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Context Chat +^^^^^^^^^^^^ Our Context Chat feature was introduced in Nextcloud Hub 7 (v28). It allows asking questions to the assistant related to your documents in Nextcloud. You will need to install both the context_chat app as well as the context_chat_backend External App. Be prepared that things might break or be a little rough around the edges. We look forward to your feedback! Frontend apps @@ -167,6 +167,13 @@ Backend apps * :ref:`context_chat + context_chat_backend` - (Customer support available upon request) +Provider apps +~~~~~~~~~~~~~ + +Apps can integrate their content with Context Chat to make it available for querying using Context Chat. The following apps have implemented this integration so far: + +* *files* +* `Analytics `_ Frequently Asked Questions -------------------------- diff --git a/admin_manual/configuration_files/encryption_details.rst b/admin_manual/configuration_files/encryption_details.rst index 7475ec37c..9776111d8 100644 --- a/admin_manual/configuration_files/encryption_details.rst +++ b/admin_manual/configuration_files/encryption_details.rst @@ -345,7 +345,7 @@ Each block is (by default) AES-256-CTR decrypted with the ``$iv[$position]`` and Sources ------- -- `nextcloud-tools repository on GitHub `_ +- `encryption-recovery-tools repository on GitHub `_ - `Nextcloud Encryption Configuration documentation `_ - `Nextcloud Help response concerning the usage of version information `_ - `Sourcecode: Creation of the Message Authentication Code `_ diff --git a/admin_manual/configuration_files/trashbin_configuration.rst b/admin_manual/configuration_files/trashbin_configuration.rst index 7d199ebce..2b71abdc5 100644 --- a/admin_manual/configuration_files/trashbin_configuration.rst +++ b/admin_manual/configuration_files/trashbin_configuration.rst @@ -5,6 +5,12 @@ Deleted Items (trash bin) If the trash bin app is enabled (default), this setting defines the policy for when files and folders in the trash bin will be permanently deleted. +.. note:: + + If the user quota limit is exceeded due to deleted files in the trash bin, + retention settings will be ignored and files will be cleaned up until + the quota requirements are met. + The app allows for two settings, a minimum time for trash bin retention, and a maximum time for trash bin retention. Minimum time is the number of days a file will be kept, after which it @@ -15,7 +21,7 @@ file and folder deletion. For migration purposes, this setting is installed initially set to "auto", which is equivalent to the default setting in Nextcloud. -You may alter the default pattern in ``config.php``. The default setting is +You may alter the default pattern in ``config.php``. The default setting is ``auto``, which sets the default pattern:: 'trashbin_retention_obligation' => 'auto', @@ -41,11 +47,11 @@ Available values: Background job -------------- -To permanently delete files a background jobs runs every 30 minutes. +To permanently delete files a background jobs runs every 30 minutes. It's possible to deactivate the background job and setup a (system) cron to expire the versions via occ. Deactivate background job: ``occ config:app:set --value=no files_trashbin background_job_expire_trash`` Activate background job: ``occ config:app:delete files_trashbin background_job_expire_trash`` -Expire versions: ``occ trashbin:expire`` or ``occ trashbin:expire --quiet`` (without the progress bar) \ No newline at end of file +Expire versions: ``occ trashbin:expire`` or ``occ trashbin:expire --quiet`` (without the progress bar) diff --git a/admin_manual/configuration_server/config_sample_php_parameters.rst b/admin_manual/configuration_server/config_sample_php_parameters.rst index 9cc6a89e1..17fda058d 100644 --- a/admin_manual/configuration_server/config_sample_php_parameters.rst +++ b/admin_manual/configuration_server/config_sample_php_parameters.rst @@ -1166,6 +1166,10 @@ trashbin_retention_obligation If the trash bin app is enabled (default), this setting defines the policy for when files and folders in the trash bin will be permanently deleted. +If the user quota limit is exceeded due to deleted files in the trash bin, +retention settings will be ignored and files will be cleaned up until +the quota requirements are met. + The app allows for two settings, a minimum time for trash bin retention, and a maximum time for trash bin retention. @@ -1743,9 +1747,10 @@ defaultapp 'defaultapp' => 'dashboard,files', -Set the default app to open on login. Use the app names as they appear in the -URL after clicking them in the Apps menu, such as documents, calendar, and -gallery. You can use a comma-separated list of app names, so if the first +Set the default app to open on login. The entry IDs can be retrieved from +the Navigations OCS API endpoint: https://docs.nextcloud.com/server/latest/develper_manual/_static/openapi.html#/operations/core-navigation-get-apps-navigation. + +You can use a comma-separated list of app names, so if the first app is not enabled for a user then Nextcloud will try the second one, and so on. If no enabled apps are found it defaults to the dashboard app. diff --git a/admin_manual/configuration_server/occ_command.rst b/admin_manual/configuration_server/occ_command.rst index ba69f2847..4cb27f17c 100644 --- a/admin_manual/configuration_server/occ_command.rst +++ b/admin_manual/configuration_server/occ_command.rst @@ -45,6 +45,7 @@ occ command Directory * :ref:`disable_user_label` * :ref:`system_tags_commands_label` * :ref:`antivirus_commands_label` +* :ref:`setupchecks_commands_label` * `Debugging`_ .. _http_user_label: @@ -1361,7 +1362,7 @@ report showing how many users you have, and when a user was last logged in:: You can create a new user with their display name, login name, and any group memberships with the ``user:add`` command. The syntax is:: - user:add [--password-from-env] [--display-name[="..."]] [-g|--group[="..."]] + user:add [--password-from-env] [--generate-password] [--display-name[="..."]] [-g|--group[="..."]] [--email EMAIL] uid The ``display-name`` corresponds to the **Full Name** on the Users page in your @@ -1412,6 +1413,26 @@ You may also use ``password-from-env`` to reset passwords:: layla' Successfully reset password for layla +``generate-password`` allows you to set a securely generated password for the user. +This is never shown in the output and can be used to create users with temporary +passwords. This can be used in conjunction with the ``email`` option to create +users with a temporary password and send a welcome email to the user's email +address without user interaction:: + + sudo -u www-data php occ user:add layla --generate-password --email layla@example.tld + The account "layla" was created successfully + Welcome email sent to layla@example.tld + +The ``email`` option allows you to set the user's email address when creating +the user. A welcome email will be sent to the user's email address if +``newUser.sendEmail`` is set to ``yes`` in ``core``'s app config or not set at all:: + + sudo -u www-data php occ user:add layla --email layla@example.tld + Enter password: + Confirm password: + The account "layla" was created successfully + Welcome email sent to layla@example.tld + You can delete users:: sudo -u www-data php occ user:delete fred @@ -1827,6 +1848,25 @@ Mark a file as scanned or unscanned:: sudo -u www php occ files_antivirus:mark +.. _setupchecks_commands_label: + +Setupchecks +----------- + +Run the setupchecks via occ:: + + sudo -u www php occ setupchecks + +Example output:: + + dav: + ✓ DAV system address book: No outstanding DAV system address book sync. + network: + ✓ WebDAV endpoint: Your web server is properly set up to allow file synchronization over WebDAV. + ✓ Data directory protected + ✓ Internet connectivity + ... + .. _occ_debugging: Debugging diff --git a/admin_manual/groupware/contacts.rst b/admin_manual/groupware/contacts.rst index ab378a999..4c4c8e09e 100644 --- a/admin_manual/groupware/contacts.rst +++ b/admin_manual/groupware/contacts.rst @@ -49,3 +49,22 @@ Shared items .. versionadded:: 5.5.0 For this feature, the shipped `related resources app `_ needs to be enabled. + +Rate limits +----------- + +Nextcloud rate limits the creation of address books and how many can be created in a short period of time. The default is 10 address books per hour. This can be customized as follows:: + + # Set limit to 15 items per 30 minutes + php occ config:app:set dav rateLimitAddressBookCreation --type=integer --value=15 + php occ config:app:set dav rateLimitPeriodAddressBookCreation --type=integer --value=1800 + +Additionally, the maximum number of address books a user may create is limited to 10 items. This can be customized too:: + + # Allow users to create 50 addressbooks + php occ config:app:set dav maximumAdressbooks --type=integer --value=50 + +or:: + + # Allow users to create address books without restriction + php occ config:app:set dav maximumAdressbooks --type=integer --value=-1 diff --git a/admin_manual/installation/harden_server.rst b/admin_manual/installation/harden_server.rst index cb4e585cb..0fcbbf19c 100644 --- a/admin_manual/installation/harden_server.rst +++ b/admin_manual/installation/harden_server.rst @@ -188,7 +188,7 @@ This can be achieved with this kind of setting, usually using private IP ranges: '127.0.0.1/8', '192.168.0.0/16', 'fd00::/8', - ] + ], All requests originating from IP addresses outside of these ranges will not be able to execute admin actions. diff --git a/admin_manual/installation/nginx-root.conf.sample b/admin_manual/installation/nginx-root.conf.sample index 00ce01f68..c623fb7a5 100644 --- a/admin_manual/installation/nginx-root.conf.sample +++ b/admin_manual/installation/nginx-root.conf.sample @@ -22,8 +22,12 @@ server { } server { - listen 443 ssl http2; + listen 443 ssl http2; listen [::]:443 ssl http2; + # With NGinx >= 1.25.1 you should use this instead: + # listen 443 ssl; + # listen [::]:443 ssl; + # http2 on; server_name cloud.example.com; # Path to the root of your installation diff --git a/admin_manual/installation/nginx-subdir.conf.sample b/admin_manual/installation/nginx-subdir.conf.sample index 191b621f8..b31173099 100644 --- a/admin_manual/installation/nginx-subdir.conf.sample +++ b/admin_manual/installation/nginx-subdir.conf.sample @@ -26,6 +26,10 @@ server { server { listen 443 ssl http2; listen [::]:443 ssl http2; + # With NGinx >= 1.25.1 you should use this instead: + # listen 443 ssl; + # listen [::]:443 ssl; + # http2 on; server_name cloud.example.com; # Path to the root of the domain diff --git a/developer_manual/app_publishing_maintenance/app_upgrade_guide/index.rst b/developer_manual/app_publishing_maintenance/app_upgrade_guide/index.rst index cace76a4b..146c563d5 100644 --- a/developer_manual/app_publishing_maintenance/app_upgrade_guide/index.rst +++ b/developer_manual/app_publishing_maintenance/app_upgrade_guide/index.rst @@ -11,6 +11,7 @@ These sub pages will cover the most important changes in Nextcloud, as well as s .. toctree:: :maxdepth: 1 + upgrade_to_31.rst upgrade_to_30.rst upgrade_to_29.rst upgrade_to_28.rst diff --git a/developer_manual/app_publishing_maintenance/app_upgrade_guide/upgrade_to_30.rst b/developer_manual/app_publishing_maintenance/app_upgrade_guide/upgrade_to_30.rst index b7759e330..7a220afbc 100644 --- a/developer_manual/app_publishing_maintenance/app_upgrade_guide/upgrade_to_30.rst +++ b/developer_manual/app_publishing_maintenance/app_upgrade_guide/upgrade_to_30.rst @@ -31,9 +31,12 @@ Capabilities Front-end changes ----------------- +The overall design was changed to be less round and more compact, +as a part of this some CSS variables were added and other deprecated with Nextcloud 30, see :ref:`cssvars`. + Clickable area ^^^^^^^^^^^^^^ -The size of the CSS variable ``--clickable-area`` variable has shrunk from ``44px`` to ``34px``. +The size of the CSS variable ``--clickable-area`` variable has shrunk from ``44px`` to ``34px``. This will result in several regressions and paper-cuts in your app that will need to be manually fixed. It's recommended to: @@ -46,8 +49,8 @@ It's recommended to: Line height ^^^^^^^^^^^ -The ``--default-line-height`` variable has changed from ``24px``` to ``1.5`` for the ``--default-font-size`` this -means that the actual value in pixel will go from 24 to 22.5. Although this is a slight change, it's recommended +The ``--default-line-height`` variable has changed from ``24px``` to ``1.5`` for the ``--default-font-size`` this +means that the actual value in pixel will go from 24 to 22.5. Although this is a slight change, it's recommended to check for visual regressions in your app. @@ -100,19 +103,6 @@ When using Webpack: + import { getCSPNonce } from '@nextcloud/auth' + __webpack_nonce__ = getCSPNonce() - -Added APIs -^^^^^^^^^^ - -Changed APIs -^^^^^^^^^^^^ - -Removed APIs -^^^^^^^^^^^^ - -Removed globals -^^^^^^^^^^^^^^^ - Deprecated APIs ^^^^^^^^^^^^^^^ @@ -194,6 +184,7 @@ Added APIs - ``OCP\AppFramework\Bootstrap\IRegistrationContext::registerTaskProcessingTaskType()`` was added to allow registering task processing task types - ``OCP\Files\IRootFolder::getAppDataDirectoryName()`` was added to allow getting the name of the app data directory - ``OCP\Security\IHasher::validate()`` should return true if the passed string is a valid hash generated by ``OCP\Security\IHasher::hash()`` +- ``OCP\AppFramework\Http\JSONResponse()`` constructor now supports passing additional ``json_encode`` flags, see https://www.php.net/manual/en/function.json-encode.php for details Changed APIs ^^^^^^^^^^^^ @@ -292,6 +283,3 @@ Removed APIs - ``OCP\Util::isValidFileName`` was deprecated in 8.1.0 and is now removed, use either ``OCP\Files\Storage\IStorage::verifyPath`` or the new ``OCP\Files\IFilenameValidator``. - ``OCP\Util::getForbiddenFileNameChars`` was removed, use either ``OCP\Files\Storage\IStorage::verifyPath`` or the new ``OCP\Files\IFilenameValidator`` for filename validation. - -Removed events -^^^^^^^^^^^^^^ diff --git a/developer_manual/app_publishing_maintenance/app_upgrade_guide/upgrade_to_31.rst b/developer_manual/app_publishing_maintenance/app_upgrade_guide/upgrade_to_31.rst new file mode 100644 index 000000000..7f5756471 --- /dev/null +++ b/developer_manual/app_publishing_maintenance/app_upgrade_guide/upgrade_to_31.rst @@ -0,0 +1,86 @@ +======================= +Upgrade to Nextcloud 31 +======================= + +General +------- + +- TBD + +Front-end changes +----------------- + +Logical position CSS rules +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +With Nextcloud 31 all server provided styles are migrated to use `logical positioning `_ +instead of physical, this allows the front-end layout to adjust to different language directions (right-to-left). +App developers are strongly encouraged to migrate their apps to logical positioning too. + +Examples for logical vs physical positioning: + +- ``margin-inline-start: 4px;`` instead of ``margin-left: 4px;`` +- ``inset-inline-end: 8px;`` instead of ``right: 8px`` + +Files and Files sharing +^^^^^^^^^^^^^^^^^^^^^^^ + +With Nextcloud 28 the Files app front-end was migrated to Vue and the private API ( ``OCA.Files`` ) was removed, +but for public shares the legacy frontend-end was still used. With Nextcloud 31 public shares also use the new Vue front-end. +This means accessing the legacy private API in ``OCA.Files`` is no longer possible, all existing apps should migrate to the :ref:`public API`. + +To make migration easier utility functions are provided in the ``@nextcloud/sharing`` :ref:`package` +to check whether the current Files app instance is a public share or not, and if so to fetch the share token. + +.. code-block:: JavaScript + + import { isPublicShare, getSharingToken } from '@nextcloud/sharing/public' + + if (isPublicShare()) { + console.info('This is a public share with the sharing token: ', getSharingToken()) + } + + +Added APIs +^^^^^^^^^^ + +- TBD + +Changed APIs +^^^^^^^^^^^^ + +- TBD + +Deprecated APIs +^^^^^^^^^^^^^^^ + +- TBD + +Removed APIs +^^^^^^^^^^^^ + +- ``OCA.FilesSharingDrop`` removed as part of the Vue migration. Use the Files app API provided by the :ref:`package` . + + +Back-end changes +---------------- + +Added APIs +^^^^^^^^^^ + +- TBD + +Changed APIs +^^^^^^^^^^^^ + +- TBD + +Deprecated APIs +^^^^^^^^^^^^^^^ + +- TBD + +Removed APIs +^^^^^^^^^^^^ + +- TBD diff --git a/developer_manual/basics/_available_events_ocp.rst b/developer_manual/basics/_available_events_ocp.rst index 11cbf60a5..e118b3460 100644 --- a/developer_manual/basics/_available_events_ocp.rst +++ b/developer_manual/basics/_available_events_ocp.rst @@ -1,6 +1,56 @@ .. This file is generated by nextcloud-ocp-events. .. Always change the source file. +``OCP\Accounts\UserUpdatedEvent`` +********************************* + +.. versionadded:: 28 + +This event is triggered when the account data of a user was updated. + +``OCP\App\Events\AppDisableEvent`` +********************************** + +.. versionadded:: 27 + +This event is triggered when an app is disabled. + +``OCP\App\Events\AppEnableEvent`` +********************************* + +.. versionadded:: 27 + +This event is triggered when an app is enabled. + +``OCP\App\Events\AppUpdateEvent`` +********************************* + +.. versionadded:: 27 + +This event is triggered when an app is updated. + +``OCP\App\ManagerEvent`` +************************ + +.. versionadded:: 9 + +Class ManagerEvent + +``OCP\AppFramework\Http\Events\BeforeLoginTemplateRenderedEvent`` +***************************************************************** + +.. versionadded:: 28 + +Emitted before the rendering step of the login TemplateResponse. + +``OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent`` +************************************************************ + +.. versionadded:: 20 + +Emitted before the rendering step of each TemplateResponse. The event holds a +flag that specifies if an user is logged in. + ``OCP\Authentication\Events\AnyLoginFailedEvent`` ************************************************* @@ -21,10 +71,10 @@ Emitted when the authentication fails, but only if the login name can be associa .. versionadded:: 15 -``OCP\Authentication\TwoFactorAuth\TwoFactorProviderDisabled`` -************************************************************** +``OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengeFailed`` +********************************************************************* -.. versionadded:: 20 +.. versionadded:: 28 ``OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengePassed`` @@ -33,10 +83,10 @@ Emitted when the authentication fails, but only if the login name can be associa .. versionadded:: 28 -``OCP\Authentication\TwoFactorAuth\TwoFactorProviderForUserEnabled`` -******************************************************************** +``OCP\Authentication\TwoFactorAuth\TwoFactorProviderDisabled`` +************************************************************** -.. versionadded:: 22 +.. versionadded:: 20 ``OCP\Authentication\TwoFactorAuth\TwoFactorProviderForUserDisabled`` @@ -45,246 +95,37 @@ Emitted when the authentication fails, but only if the login name can be associa .. versionadded:: 22 +``OCP\Authentication\TwoFactorAuth\TwoFactorProviderForUserEnabled`` +******************************************************************** + +.. versionadded:: 22 + + ``OCP\Authentication\TwoFactorAuth\TwoFactorProviderForUserRegistered`` *********************************************************************** .. versionadded:: 28 -``OCP\Authentication\TwoFactorAuth\TwoFactorProviderUserDeleted`` -***************************************************************** - -.. versionadded:: 28 - - -``OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengeFailed`` -********************************************************************* - -.. versionadded:: 28 - - ``OCP\Authentication\TwoFactorAuth\TwoFactorProviderForUserUnregistered`` ************************************************************************* .. versionadded:: 28 -``OCP\Profile\BeforeTemplateRenderedEvent`` -******************************************* - -.. versionadded:: 25 - -Emitted before the rendering step of the public profile page happens. - -``OCP\Share\Events\ShareDeletedEvent`` -************************************** - -.. versionadded:: 21 - - -``OCP\Share\Events\ShareDeletedFromSelfEvent`` -********************************************** - -.. versionadded:: 28 - - -``OCP\Share\Events\BeforeShareCreatedEvent`` -******************************************** - -.. versionadded:: 28 - - -``OCP\Share\Events\BeforeShareDeletedEvent`` -******************************************** - -.. versionadded:: 28 - - -``OCP\Share\Events\ShareCreatedEvent`` -************************************** - -.. versionadded:: 18 - - -``OCP\Share\Events\VerifyMountPointEvent`` -****************************************** - -.. versionadded:: 19 - - -``OCP\Share\Events\ShareAcceptedEvent`` -*************************************** - -.. versionadded:: 28 - - -``OCP\AppFramework\Http\Events\BeforeLoginTemplateRenderedEvent`` +``OCP\Authentication\TwoFactorAuth\TwoFactorProviderUserDeleted`` ***************************************************************** .. versionadded:: 28 -Emitted before the rendering step of the login TemplateResponse. -``OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent`` -************************************************************ +``OCP\BeforeSabrePubliclyLoadedEvent`` +************************************** -.. versionadded:: 20 - -Emitted before the rendering step of each TemplateResponse. The event holds a -flag that specifies if an user is logged in. - -``OCP\FilesMetadata\Event\MetadataBackgroundEvent`` -*************************************************** - -.. versionadded:: 28 - -MetadataBackgroundEvent is an event similar to MetadataLiveEvent but dispatched -on a background thread instead of live thread. Meaning there is no limit to -the time required for the generation of your metadata. - -``OCP\FilesMetadata\Event\MetadataNamedEvent`` -********************************************** - -.. versionadded:: 28 - -MetadataNamedEvent is an event similar to MetadataBackgroundEvent completed with a target name, -used to limit the refresh of metadata only listeners capable of filtering themselves out. -Meaning that when using this event, your app must implement a filter on the event's registered -name returned by getName() - -This event is mostly triggered when a registered name is added to the files scan - i.e. ./occ files:scan --generate-metadata [name] - -``OCP\FilesMetadata\Event\MetadataLiveEvent`` -********************************************* - -.. versionadded:: 28 - -MetadataLiveEvent is an event initiated when a file is created or updated. -The app contains the Node related to the created/updated file, and a FilesMetadata that already -contains the currently known metadata. - -Setting new metadata, or modifying already existing metadata with different value, will trigger -the save of the metadata in the database. - -``OCP\App\Events\AppUpdateEvent`` -********************************* - -.. versionadded:: 27 - -This event is triggered when an app is updated. - -``OCP\App\Events\AppEnableEvent`` -********************************* - -.. versionadded:: 27 - -This event is triggered when an app is enabled. - -``OCP\App\Events\AppDisableEvent`` -********************************** - -.. versionadded:: 27 - -This event is triggered when an app is disabled. - -``OCP\App\ManagerEvent`` -************************ - -.. versionadded:: 9 - -Class ManagerEvent - -``OCP\TextToImage\Events\TaskFailedEvent`` -****************************************** - -.. versionadded:: 28 - - -``OCP\TextToImage\Events\TaskSuccessfulEvent`` -********************************************** - -.. versionadded:: 28 - - -``OCP\Contacts\Events\ContactInteractedWithEvent`` -************************************************** - -.. versionadded:: 19 - -An event that allows apps to notify other components about an interaction -between two users. This can be used to build better recommendations and -suggestions in user interfaces. -Emitters should add at least one identifier (uid, email, federated cloud ID) -of the recipient of the interaction. - -``OCP\WorkflowEngine\Events\RegisterOperationsEvent`` -***************************************************** - -.. versionadded:: 18 - - -``OCP\WorkflowEngine\Events\RegisterChecksEvent`` -************************************************* - -.. versionadded:: 18 - - -``OCP\WorkflowEngine\Events\LoadSettingsScriptsEvent`` -****************************************************** - -.. versionadded:: 20 - -Emitted when the workflow engine settings page is loaded. - -``OCP\WorkflowEngine\Events\RegisterEntitiesEvent`` -*************************************************** - -.. versionadded:: 18 - - -``OCP\Federation\Events\TrustedServerRemovedEvent`` -*************************************************** - -.. versionadded:: 25 - - -``OCP\SabrePluginEvent`` -************************ - -.. versionadded:: 8.2 - - -``OCP\Mail\Events\BeforeMessageSent`` -************************************* - -.. versionadded:: 19 - -Emitted before a system mail is sent. It can be used to alter the message. - -``OCP\Settings\Events\DeclarativeSettingsRegisterFormEvent`` -************************************************************ - -.. versionadded:: 29 - - -``OCP\Settings\Events\DeclarativeSettingsSetValueEvent`` -******************************************************** - -.. versionadded:: 29 - - -``OCP\Settings\Events\DeclarativeSettingsGetValueEvent`` -******************************************************** - -.. versionadded:: 29 - - -``OCP\Collaboration\AutoComplete\AutoCompleteFilterEvent`` -********************************************************** - -.. versionadded:: 28 +.. versionadded:: 26 +Dispatched before Sabre is loaded when accessing public webdav endpoints +This can be used to inject a Sabre plugin for example ``OCP\Collaboration\AutoComplete\AutoCompleteEvent`` **************************************************** @@ -292,14 +133,11 @@ Emitted before a system mail is sent. It can be used to alter the message. .. versionadded:: 16 -``OCP\Collaboration\Resources\LoadAdditionalScriptsEvent`` +``OCP\Collaboration\AutoComplete\AutoCompleteFilterEvent`` ********************************************************** -.. versionadded:: 25 +.. versionadded:: 28 -This event is used by apps to register their own frontend scripts for integrating -projects in their app. Apps also need to dispatch the event in order to load -scripts during page load ``OCP\Collaboration\Reference\RenderReferenceEvent`` **************************************************** @@ -310,6 +148,15 @@ Event emitted when apps might render references like link previews or smart pick This can be used to inject scripts for extending that. Further details can be found in the :ref:`Reference providers` deep dive. +``OCP\Collaboration\Resources\LoadAdditionalScriptsEvent`` +********************************************************** + +.. versionadded:: 25 + +This event is used by apps to register their own frontend scripts for integrating +projects in their app. Apps also need to dispatch the event in order to load +scripts during page load + ``OCP\Comments\CommentsEntityEvent`` ************************************ @@ -327,26 +174,90 @@ Class CommentsEntityEvent Class CommentsEvent -``OCP\Accounts\UserUpdatedEvent`` -********************************* +``OCP\Config\BeforePreferenceDeletedEvent`` +******************************************* + +.. versionadded:: 25 + + +``OCP\Config\BeforePreferenceSetEvent`` +*************************************** + +.. versionadded:: 25 + + +``OCP\Console\ConsoleEvent`` +**************************** + +.. versionadded:: 9 + +Class ConsoleEvent + +``OCP\Contacts\Events\ContactInteractedWithEvent`` +************************************************** + +.. versionadded:: 19 + +An event that allows apps to notify other components about an interaction +between two users. This can be used to build better recommendations and +suggestions in user interfaces. +Emitters should add at least one identifier (uid, email, federated cloud ID) +of the recipient of the interaction. + +``OCP\DB\Events\AddMissingColumnsEvent`` +**************************************** .. versionadded:: 28 -This event is triggered when the account data of a user was updated. +Event to allow apps to register information about missing database columns +This event will be dispatched for checking on the admin settings and when running +occ db:add-missing-columns which will then create those columns -``OCP\Files\Cache\CacheEntryRemovedEvent`` -****************************************** +``OCP\DB\Events\AddMissingIndicesEvent`` +**************************************** -.. versionadded:: 21 +.. versionadded:: 28 -Event for when an existing entry in the cache gets removed +Event to allow apps to register information about missing database indices +This event will be dispatched for checking on the admin settings and when running +occ db:add-missing-indices which will then create those indices -``OCP\Files\Cache\CacheUpdateEvent`` +``OCP\DB\Events\AddMissingPrimaryKeyEvent`` +******************************************* + +.. versionadded:: 28 + +Event to allow apps to register information about missing database primary keys +This event will be dispatched for checking on the admin settings and when running +occ db:add-missing-primary-keys which will then create those keys + +``OCP\DirectEditing\RegisterDirectEditorEvent`` +*********************************************** + +.. versionadded:: 18 + +Event to allow to register the direct editor. + +``OCP\EventDispatcher\GenericEvent`` ************************************ -.. versionadded:: 16 +.. versionadded:: 18 + +Class GenericEvent +convenience reimplementation of \Symfony\Component\GenericEvent against +\OCP\EventDispatcher\Event + +``OCP\Federation\Events\TrustedServerRemovedEvent`` +*************************************************** + +.. versionadded:: 25 + + +``OCP\Files\Cache\AbstractCacheEvent`` +************************************** + +.. versionadded:: 22 -Event for when an existing entry in the cache gets updated ``OCP\Files\Cache\CacheEntryInsertedEvent`` ******************************************* @@ -355,6 +266,13 @@ Event for when an existing entry in the cache gets updated Event for when an existing entry in the cache gets inserted +``OCP\Files\Cache\CacheEntryRemovedEvent`` +****************************************** + +.. versionadded:: 21 + +Event for when an existing entry in the cache gets removed + ``OCP\Files\Cache\CacheEntryUpdatedEvent`` ****************************************** @@ -362,12 +280,6 @@ Event for when an existing entry in the cache gets inserted Event for when an existing entry in the cache gets updated -``OCP\Files\Cache\AbstractCacheEvent`` -************************************** - -.. versionadded:: 22 - - ``OCP\Files\Cache\CacheInsertEvent`` ************************************ @@ -375,10 +287,43 @@ Event for when an existing entry in the cache gets updated Event for when a new entry gets added to the cache -``OCP\Files\Events\NodeRemovedFromFavorite`` -******************************************** +``OCP\Files\Cache\CacheUpdateEvent`` +************************************ -.. versionadded:: 28 +.. versionadded:: 16 + +Event for when an existing entry in the cache gets updated + +``OCP\Files\Events\BeforeDirectFileDownloadEvent`` +************************************************** + +.. versionadded:: 25 + +This event is triggered when a user tries to download a file +directly. + +``OCP\Files\Events\BeforeFileScannedEvent`` +******************************************* + +.. versionadded:: 18 + + +``OCP\Files\Events\BeforeFolderScannedEvent`` +********************************************* + +.. versionadded:: 18 + + +``OCP\Files\Events\BeforeZipCreatedEvent`` +****************************************** + +.. versionadded:: 25 + + +``OCP\Files\Events\FileCacheUpdated`` +************************************* + +.. versionadded:: 18 ``OCP\Files\Events\FileScannedEvent`` @@ -393,17 +338,12 @@ Event for when a new entry gets added to the cache .. versionadded:: 18 -``OCP\Files\Events\NodeAddedToFavorite`` -**************************************** +``OCP\Files\Events\InvalidateMountCacheEvent`` +********************************************** -.. versionadded:: 28 - - -``OCP\Files\Events\BeforeFileScannedEvent`` -******************************************* - -.. versionadded:: 18 +.. versionadded:: 24 +Used to notify the filesystem setup manager that the available mounts for a user have changed ``OCP\Files\Events\Node\BeforeNodeCopiedEvent`` *********************************************** @@ -411,48 +351,49 @@ Event for when a new entry gets added to the cache .. versionadded:: 20 -``OCP\Files\Events\Node\BeforeNodeTouchedEvent`` -************************************************ - -.. versionadded:: 20 - - -``OCP\Files\Events\Node\BeforeNodeRenamedEvent`` -************************************************ - -.. versionadded:: 20 - - -``OCP\Files\Events\Node\NodeDeletedEvent`` -****************************************** - -.. versionadded:: 20 - - ``OCP\Files\Events\Node\BeforeNodeCreatedEvent`` ************************************************ .. versionadded:: 20 +``OCP\Files\Events\Node\BeforeNodeDeletedEvent`` +************************************************ + +.. versionadded:: 20 + + ``OCP\Files\Events\Node\BeforeNodeReadEvent`` ********************************************* .. versionadded:: 20 -``OCP\Files\Events\Node\NodeRenamedEvent`` -****************************************** - -.. versionadded:: 20 - - -``OCP\Files\Events\Node\BeforeNodeDeletedEvent`` +``OCP\Files\Events\Node\BeforeNodeRenamedEvent`` ************************************************ .. versionadded:: 20 +``OCP\Files\Events\Node\BeforeNodeTouchedEvent`` +************************************************ + +.. versionadded:: 20 + + +``OCP\Files\Events\Node\BeforeNodeWrittenEvent`` +************************************************ + +.. versionadded:: 20 + + +``OCP\Files\Events\Node\FilesystemTornDownEvent`` +************************************************* + +.. versionadded:: 24 + +Event fired after the filesystem has been torn down + ``OCP\Files\Events\Node\NodeCopiedEvent`` ***************************************** @@ -465,21 +406,20 @@ Event for when a new entry gets added to the cache .. versionadded:: 20 -``OCP\Files\Events\Node\FilesystemTornDownEvent`` -************************************************* - -.. versionadded:: 24 - -Event fired after the filesystem has been torn down - -``OCP\Files\Events\Node\NodeTouchedEvent`` +``OCP\Files\Events\Node\NodeDeletedEvent`` ****************************************** .. versionadded:: 20 -``OCP\Files\Events\Node\BeforeNodeWrittenEvent`` -************************************************ +``OCP\Files\Events\Node\NodeRenamedEvent`` +****************************************** + +.. versionadded:: 20 + + +``OCP\Files\Events\Node\NodeTouchedEvent`` +****************************************** .. versionadded:: 20 @@ -490,16 +430,16 @@ Event fired after the filesystem has been torn down .. versionadded:: 20 -``OCP\Files\Events\FileCacheUpdated`` +``OCP\Files\Events\NodeAddedToCache`` ************************************* .. versionadded:: 18 -``OCP\Files\Events\BeforeZipCreatedEvent`` -****************************************** +``OCP\Files\Events\NodeAddedToFavorite`` +**************************************** -.. versionadded:: 25 +.. versionadded:: 28 ``OCP\Files\Events\NodeRemovedFromCache`` @@ -508,31 +448,16 @@ Event fired after the filesystem has been torn down .. versionadded:: 18 -``OCP\Files\Events\BeforeDirectFileDownloadEvent`` -************************************************** +``OCP\Files\Events\NodeRemovedFromFavorite`` +******************************************** -.. versionadded:: 25 - -This event is triggered when a user tries to download a file -directly. - -``OCP\Files\Events\BeforeFolderScannedEvent`` -********************************************* - -.. versionadded:: 18 +.. versionadded:: 28 -``OCP\Files\Events\InvalidateMountCacheEvent`` +``OCP\Files\Template\BeforeGetTemplatesEvent`` ********************************************** -.. versionadded:: 24 - -Used to notify the filesystem setup manager that the available mounts for a user have changed - -``OCP\Files\Events\NodeAddedToCache`` -************************************* - -.. versionadded:: 18 +.. versionadded:: 30 ``OCP\Files\Template\FileCreatedFromTemplateEvent`` @@ -547,24 +472,140 @@ Used to notify the filesystem setup manager that the available mounts for a user .. versionadded:: 30 -``OCP\Config\BeforePreferenceDeletedEvent`` -******************************************* +``OCP\FilesMetadata\Event\MetadataBackgroundEvent`` +*************************************************** -.. versionadded:: 25 +.. versionadded:: 28 + +MetadataBackgroundEvent is an event similar to MetadataLiveEvent but dispatched +on a background thread instead of live thread. Meaning there is no limit to +the time required for the generation of your metadata. + +``OCP\FilesMetadata\Event\MetadataLiveEvent`` +********************************************* + +.. versionadded:: 28 + +MetadataLiveEvent is an event initiated when a file is created or updated. +The app contains the Node related to the created/updated file, and a FilesMetadata that already +contains the currently known metadata. + +Setting new metadata, or modifying already existing metadata with different value, will trigger +the save of the metadata in the database. + +``OCP\FilesMetadata\Event\MetadataNamedEvent`` +********************************************** + +.. versionadded:: 28 + +MetadataNamedEvent is an event similar to MetadataBackgroundEvent completed with a target name, +used to limit the refresh of metadata only listeners capable of filtering themselves out. +Meaning that when using this event, your app must implement a filter on the event's registered +name returned by getName() + +This event is mostly triggered when a registered name is added to the files scan + i.e. ./occ files:scan --generate-metadata [name] + +``OCP\Group\Events\BeforeGroupChangedEvent`` +******************************************** + +.. versionadded:: 26 -``OCP\Config\BeforePreferenceSetEvent`` -*************************************** - -.. versionadded:: 25 - - -``OCP\DirectEditing\RegisterDirectEditorEvent`` -*********************************************** +``OCP\Group\Events\BeforeGroupCreatedEvent`` +******************************************** .. versionadded:: 18 -Event to allow to register the direct editor. + +``OCP\Group\Events\BeforeGroupDeletedEvent`` +******************************************** + +.. versionadded:: 18 + + +``OCP\Group\Events\BeforeUserAddedEvent`` +***************************************** + +.. versionadded:: 18 + + +``OCP\Group\Events\BeforeUserRemovedEvent`` +******************************************* + +.. versionadded:: 18 + + +``OCP\Group\Events\GroupChangedEvent`` +************************************** + +.. versionadded:: 26 + + +``OCP\Group\Events\GroupCreatedEvent`` +************************************** + +.. versionadded:: 18 + + +``OCP\Group\Events\GroupDeletedEvent`` +************************************** + +.. versionadded:: 18 + + +``OCP\Group\Events\SubAdminAddedEvent`` +*************************************** + +.. versionadded:: 21 + + +``OCP\Group\Events\SubAdminRemovedEvent`` +***************************************** + +.. versionadded:: 21 + + +``OCP\Group\Events\UserAddedEvent`` +*********************************** + +.. versionadded:: 18 + + +``OCP\Group\Events\UserRemovedEvent`` +************************************* + +.. versionadded:: 18 + + +``OCP\Log\Audit\CriticalActionPerformedEvent`` +********************************************** + +.. versionadded:: 22 + +Emitted when the admin_audit app should log an entry + +``OCP\Log\BeforeMessageLoggedEvent`` +************************************ + +.. versionadded:: 28 + +Even for when a log item is being logged + +``OCP\Mail\Events\BeforeMessageSent`` +************************************* + +.. versionadded:: 19 + +Emitted before a system mail is sent. It can be used to alter the message. + +``OCP\OCM\Events\ResourceTypeRegisterEvent`` +******************************************** + +.. versionadded:: 28 + +Use this event to register additional OCM resources before the API returns +them in the OCM provider list and capability ``OCP\Preview\BeforePreviewFetchedEvent`` ***************************************** @@ -577,19 +618,18 @@ Event to allow to register the direct editor. Emitted before a file preview is being fetched. It can be used to block preview rendering by throwing a ``OCP\Files\NotFoundException`` -``OCP\SpeechToText\Events\TranscriptionSuccessfulEvent`` -******************************************************** +``OCP\Profile\BeforeTemplateRenderedEvent`` +******************************************* -.. versionadded:: 27 +.. versionadded:: 25 -This Event is emitted when a transcription of a media file happened successfully +Emitted before the rendering step of the public profile page happens. -``OCP\SpeechToText\Events\TranscriptionFailedEvent`` -**************************************************** +``OCP\SabrePluginEvent`` +************************ -.. versionadded:: 27 +.. versionadded:: 8.2 -This Event is emitted if a transcription of a media file using a Speech-To-Text provider failed ``OCP\Security\CSP\AddContentSecurityPolicyEvent`` ************************************************** @@ -611,12 +651,16 @@ that it is not possible to use the `disallowXYZ` functions. .. versionadded:: 18 +Event to request a secure password to be generated ``OCP\Security\Events\ValidatePasswordPolicyEvent`` *************************************************** .. versionadded:: 18 +This event can be emitted to request a validation of a password. +If a password policy app is installed and the password +is invalid, an `\OCP\HintException` will be thrown. ``OCP\Security\FeaturePolicy\AddFeaturePolicyEvent`` **************************************************** @@ -625,158 +669,79 @@ that it is not possible to use the `disallowXYZ` functions. Event that allows to register a feature policy header to a request. -``OCP\User\GetQuotaEvent`` -************************** +``OCP\Settings\Events\DeclarativeSettingsGetValueEvent`` +******************************************************** -.. versionadded:: 20 - -Event to allow apps to - -``OCP\User\Events\UserChangedEvent`` -************************************ - -.. versionadded:: 18 +.. versionadded:: 29 -``OCP\User\Events\UserLiveStatusEvent`` -*************************************** +``OCP\Settings\Events\DeclarativeSettingsRegisterFormEvent`` +************************************************************ -.. versionadded:: 20 +.. versionadded:: 29 -``OCP\User\Events\BeforePasswordUpdatedEvent`` -********************************************** +``OCP\Settings\Events\DeclarativeSettingsSetValueEvent`` +******************************************************** -.. versionadded:: 18 - -Emitted before the user password is updated. - -``OCP\User\Events\UserDeletedEvent`` -************************************ - -.. versionadded:: 18 +.. versionadded:: 29 -``OCP\User\Events\BeforeUserDeletedEvent`` -****************************************** - -.. versionadded:: 18 - - -``OCP\User\Events\BeforeUserCreatedEvent`` -****************************************** - -.. versionadded:: 18 - -Emitted before a new user is created on the back-end. - -``OCP\User\Events\OutOfOfficeClearedEvent`` -******************************************* - -.. versionadded:: 28 - -Emitted when a user's out-of-office period is cleared - -``OCP\User\Events\BeforeUserLoggedInEvent`` -******************************************* - -.. versionadded:: 18 - - -``OCP\User\Events\UserFirstTimeLoggedInEvent`` -********************************************** - -.. versionadded:: 28 - - -``OCP\User\Events\UserCreatedEvent`` -************************************ - -.. versionadded:: 18 - -Emitted when a new user has been created on the back-end. - -``OCP\User\Events\UserLoggedInWithCookieEvent`` -*********************************************** - -.. versionadded:: 18 - -Emitted when a user has been successfully logged in via remember-me cookies. - -``OCP\User\Events\PasswordUpdatedEvent`` -**************************************** - -.. versionadded:: 18 - -Emitted when the user password has been updated. - -``OCP\User\Events\OutOfOfficeScheduledEvent`` -********************************************* - -.. versionadded:: 28 - -Emitted when a user's out-of-office period is scheduled - -``OCP\User\Events\PostLoginEvent`` -********************************** - -.. versionadded:: 18 - - -``OCP\User\Events\OutOfOfficeChangedEvent`` -******************************************* - -.. versionadded:: 28 - -Emitted when a user's out-of-office period has changed - -``OCP\User\Events\OutOfOfficeStartedEvent`` -******************************************* - -.. versionadded:: 28 - -Emitted when a user's out-of-office period started - -``OCP\User\Events\BeforeUserLoggedOutEvent`` +``OCP\Share\Events\BeforeShareCreatedEvent`` ******************************************** -.. versionadded:: 18 +.. versionadded:: 28 -Emitted before a user is logged out. -``OCP\User\Events\OutOfOfficeEndedEvent`` -***************************************** +``OCP\Share\Events\BeforeShareDeletedEvent`` +******************************************** .. versionadded:: 28 -Emitted when a user's out-of-office period ended -``OCP\User\Events\UserLoggedOutEvent`` +``OCP\Share\Events\ShareAcceptedEvent`` +*************************************** + +.. versionadded:: 28 + + +``OCP\Share\Events\ShareCreatedEvent`` ************************************** .. versionadded:: 18 -Emitted when a user has been logged out successfully. -``OCP\User\Events\UserLoggedInEvent`` -************************************* +``OCP\Share\Events\ShareDeletedEvent`` +************************************** -.. versionadded:: 18 +.. versionadded:: 21 -``OCP\User\Events\BeforeUserLoggedInWithCookieEvent`` -***************************************************** +``OCP\Share\Events\ShareDeletedFromSelfEvent`` +********************************************** -.. versionadded:: 18 +.. versionadded:: 28 -Emitted before a user is logged in via remember-me cookies. -``OCP\SystemTag\MapperEvent`` -***************************** +``OCP\Share\Events\VerifyMountPointEvent`` +****************************************** -.. versionadded:: 9 +.. versionadded:: 19 -Class MapperEvent + +``OCP\SpeechToText\Events\TranscriptionFailedEvent`` +**************************************************** + +.. versionadded:: 27 + +This Event is emitted if a transcription of a media file using a Speech-To-Text provider failed + +``OCP\SpeechToText\Events\TranscriptionSuccessfulEvent`` +******************************************************** + +.. versionadded:: 27 + +This Event is emitted when a transcription of a media file happened successfully ``OCP\SystemTag\ManagerEvent`` ****************************** @@ -785,6 +750,13 @@ Class MapperEvent Class ManagerEvent +``OCP\SystemTag\MapperEvent`` +***************************** + +.. versionadded:: 9 + +Class MapperEvent + ``OCP\SystemTag\SystemTagsEntityEvent`` *************************************** @@ -807,151 +779,6 @@ Class SystemTagsEntityEvent .. versionadded:: 30 -``OCP\EventDispatcher\GenericEvent`` -************************************ - -.. versionadded:: 18 - -Class GenericEvent -convenience reimplementation of \Symfony\Component\GenericEvent against -\OCP\EventDispatcher\Event - -``OCP\BeforeSabrePubliclyLoadedEvent`` -************************************** - -.. versionadded:: 26 - -Dispatched before Sabre is loaded when accessing public webdav endpoints -This can be used to inject a Sabre plugin for example - -``OCP\Console\ConsoleEvent`` -**************************** - -.. versionadded:: 9 - -Class ConsoleEvent - -``OCP\Log\BeforeMessageLoggedEvent`` -************************************ - -.. versionadded:: 28 - -Even for when a log item is being logged - -``OCP\Log\Audit\CriticalActionPerformedEvent`` -********************************************** - -.. versionadded:: 22 - -Emitted when the admin_audit app should log an entry - -``OCP\DB\Events\AddMissingIndicesEvent`` -**************************************** - -.. versionadded:: 28 - -Event to allow apps to register information about missing database indices -This event will be dispatched for checking on the admin settings and when running -occ db:add-missing-indices which will then create those indices - -``OCP\DB\Events\AddMissingColumnsEvent`` -**************************************** - -.. versionadded:: 28 - -Event to allow apps to register information about missing database columns -This event will be dispatched for checking on the admin settings and when running -occ db:add-missing-columns which will then create those columns - -``OCP\DB\Events\AddMissingPrimaryKeyEvent`` -******************************************* - -.. versionadded:: 28 - -Event to allow apps to register information about missing database primary keys -This event will be dispatched for checking on the admin settings and when running -occ db:add-missing-primary-keys which will then create those keys - -``OCP\Group\Events\GroupCreatedEvent`` -************************************** - -.. versionadded:: 18 - - -``OCP\Group\Events\UserRemovedEvent`` -************************************* - -.. versionadded:: 18 - - -``OCP\Group\Events\SubAdminRemovedEvent`` -***************************************** - -.. versionadded:: 21 - - -``OCP\Group\Events\BeforeGroupCreatedEvent`` -******************************************** - -.. versionadded:: 18 - - -``OCP\Group\Events\UserAddedEvent`` -*********************************** - -.. versionadded:: 18 - - -``OCP\Group\Events\GroupDeletedEvent`` -************************************** - -.. versionadded:: 18 - - -``OCP\Group\Events\GroupChangedEvent`` -************************************** - -.. versionadded:: 26 - - -``OCP\Group\Events\BeforeUserAddedEvent`` -***************************************** - -.. versionadded:: 18 - - -``OCP\Group\Events\BeforeUserRemovedEvent`` -******************************************* - -.. versionadded:: 18 - - -``OCP\Group\Events\BeforeGroupChangedEvent`` -******************************************** - -.. versionadded:: 26 - - -``OCP\Group\Events\SubAdminAddedEvent`` -*************************************** - -.. versionadded:: 21 - - -``OCP\Group\Events\BeforeGroupDeletedEvent`` -******************************************** - -.. versionadded:: 18 - - -``OCP\OCM\Events\ResourceTypeRegisterEvent`` -******************************************** - -.. versionadded:: 28 - -Use this event to register additional OCM resources before the API returns -them in the OCM provider list and capability - ``OCP\TextProcessing\Events\TaskFailedEvent`` ********************************************* @@ -963,3 +790,187 @@ them in the OCM provider list and capability .. versionadded:: 27.1 + +``OCP\TextToImage\Events\TaskFailedEvent`` +****************************************** + +.. versionadded:: 28 + + +``OCP\TextToImage\Events\TaskSuccessfulEvent`` +********************************************** + +.. versionadded:: 28 + + +``OCP\User\Events\BeforePasswordUpdatedEvent`` +********************************************** + +.. versionadded:: 18 + +Emitted before the user password is updated. + +``OCP\User\Events\BeforeUserCreatedEvent`` +****************************************** + +.. versionadded:: 18 + +Emitted before a new user is created on the back-end. + +``OCP\User\Events\BeforeUserDeletedEvent`` +****************************************** + +.. versionadded:: 18 + + +``OCP\User\Events\BeforeUserLoggedInEvent`` +******************************************* + +.. versionadded:: 18 + + +``OCP\User\Events\BeforeUserLoggedInWithCookieEvent`` +***************************************************** + +.. versionadded:: 18 + +Emitted before a user is logged in via remember-me cookies. + +``OCP\User\Events\BeforeUserLoggedOutEvent`` +******************************************** + +.. versionadded:: 18 + +Emitted before a user is logged out. + +``OCP\User\Events\OutOfOfficeChangedEvent`` +******************************************* + +.. versionadded:: 28 + +Emitted when a user's out-of-office period has changed + +``OCP\User\Events\OutOfOfficeClearedEvent`` +******************************************* + +.. versionadded:: 28 + +Emitted when a user's out-of-office period is cleared + +``OCP\User\Events\OutOfOfficeEndedEvent`` +***************************************** + +.. versionadded:: 28 + +Emitted when a user's out-of-office period ended + +``OCP\User\Events\OutOfOfficeScheduledEvent`` +********************************************* + +.. versionadded:: 28 + +Emitted when a user's out-of-office period is scheduled + +``OCP\User\Events\OutOfOfficeStartedEvent`` +******************************************* + +.. versionadded:: 28 + +Emitted when a user's out-of-office period started + +``OCP\User\Events\PasswordUpdatedEvent`` +**************************************** + +.. versionadded:: 18 + +Emitted when the user password has been updated. + +``OCP\User\Events\PostLoginEvent`` +********************************** + +.. versionadded:: 18 + + +``OCP\User\Events\UserChangedEvent`` +************************************ + +.. versionadded:: 18 + + +``OCP\User\Events\UserCreatedEvent`` +************************************ + +.. versionadded:: 18 + +Emitted when a new user has been created on the back-end. + +``OCP\User\Events\UserDeletedEvent`` +************************************ + +.. versionadded:: 18 + + +``OCP\User\Events\UserFirstTimeLoggedInEvent`` +********************************************** + +.. versionadded:: 28 + + +``OCP\User\Events\UserLiveStatusEvent`` +*************************************** + +.. versionadded:: 20 + + +``OCP\User\Events\UserLoggedInEvent`` +************************************* + +.. versionadded:: 18 + + +``OCP\User\Events\UserLoggedInWithCookieEvent`` +*********************************************** + +.. versionadded:: 18 + +Emitted when a user has been successfully logged in via remember-me cookies. + +``OCP\User\Events\UserLoggedOutEvent`` +************************************** + +.. versionadded:: 18 + +Emitted when a user has been logged out successfully. + +``OCP\User\GetQuotaEvent`` +************************** + +.. versionadded:: 20 + +Event to allow apps to + +``OCP\WorkflowEngine\Events\LoadSettingsScriptsEvent`` +****************************************************** + +.. versionadded:: 20 + +Emitted when the workflow engine settings page is loaded. + +``OCP\WorkflowEngine\Events\RegisterChecksEvent`` +************************************************* + +.. versionadded:: 18 + + +``OCP\WorkflowEngine\Events\RegisterEntitiesEvent`` +*************************************************** + +.. versionadded:: 18 + + +``OCP\WorkflowEngine\Events\RegisterOperationsEvent`` +***************************************************** + +.. versionadded:: 18 + + diff --git a/developer_manual/conf.py b/developer_manual/conf.py index a0fa8cfb0..7770ac004 100644 --- a/developer_manual/conf.py +++ b/developer_manual/conf.py @@ -258,7 +258,7 @@ texinfo_documents = [ epub_title = u'Nextcloud Developer Manual' epub_author = u'The Nextcloud developers' epub_publisher = u'The Nextcloud developers' -epub_copyright = u'2012-2017, The Nextcloud developers' +epub_copyright = u'2012-2024, The Nextcloud developers' # The language of the text. It defaults to the language option # or en if the language is not set. @@ -318,10 +318,13 @@ highlight_options = { # Redirect old URLs # https://documatt.gitlab.io/sphinx-reredirects/usage.html redirects = { + # Removed 2023 "core/index": "../server", "core/code-back-end": "../server/code-back-end.html", "core/code-front-end": "../server/code-front-end.html", "core/externalapi": "../server/externalapi.html", "core/static-analysis": "../server/static-analysis.html", - "core/unit-testing": "../server/unit-testing.html" + "core/unit-testing": "../server/unit-testing.html", + # Removed 2024-09 + "digging_deeper/changelog": "../app_publishing_maintenance/app_upgrade_guide/index.html" } diff --git a/developer_manual/digging_deeper/changelog.rst b/developer_manual/digging_deeper/changelog.rst deleted file mode 100644 index a78f8f891..000000000 --- a/developer_manual/digging_deeper/changelog.rst +++ /dev/null @@ -1,80 +0,0 @@ -========= -Changelog -========= - -.. sectionauthor:: Bernhard Posselt - -Deprecations ------------- - -Deprecations are now documented by Nextcloud major release, not time. See :ref:`app-upgrade-guide`. - -Below is the old deprecation roadmap which lists older deprecations by year. - -.. note:: Deprecations on interfaces also affect the implementing classes! - -2018 -^^^^ - -* **OCP\\App::setActiveNavigationEntry** has been deprecated in favour of **\\OCP\\INavigationManager** -* **OCP\\BackgroundJob::registerJob** has been deprecated in favour of **OCP\\BackgroundJob\\IJobList** -* **OCP\\Contacts** functions has been deprecated in favour of **\\OCP\\Contacts\\IManager** -* **OCP\\DB** functions have been deprecated in favour of the ones in **\\OCP\\IDBConnection** -* **OCP\\Files::tmpFile** has been deprecated in favour of **\\OCP\\ITempManager::getTemporaryFile** -* **OCP\\Files::tmpFolder** has been deprecated in favour of **\\OCP\\ITempManager::getTemporaryFolder** -* **\\OCP\\IServerContainer::getDb** has been deprecated in favour of **\\OCP\\IServerContainer::getDatabaseConnection** -* **\\OCP\\IServerContainer::getHTTPHelper** has been deprecated in favour of **\\OCP\\Http\\Client\\IClientService** -* Legacy applications not using the AppFramework are now likely to use the deprecated **OCP\\JSON** and **OCP\\Response** code: - - * **\\OCP\\JSON** has been completely deprecated in favour of the AppFramework. Developers shall use the AppFramework instead of using the legacy **OCP\\JSON** code. This allows testable controllers and is highly encouraged. - * **\\OCP\\Response** has been completely deprecated in favour of the AppFramework. Developers shall use the AppFramework instead of using the legacy **OCP\\JSON** code. This allows testable controllers and is highly encouraged. - -* Diverse **OCP\\Users** function got deprecated in favour of **OCP\\IUserManager**: - - * **OCP\\Users::getUsers** has been deprecated in favour of **OCP\\IUserManager::search** - * **OCP\\Users::getDisplayName** has been deprecated in favour of **OCP\\IUserManager::getDisplayName** - * **OCP\\Users::getDisplayNames** has been deprecated in favour of **OCP\\IUserManager::searchDisplayName** - * **OCP\\Users::userExists** has been deprecated in favour of **OCP\\IUserManager::userExists** -* Various static **OCP\\Util** functions have been deprecated: - - * **OCP\\Util::linkToRoute** has been deprecated in favour of **\\OCP\\IURLGenerator::linkToRoute** - * **OCP\\Util::linkTo** has been deprecated in favour of **\\OCP\\IURLGenerator::linkTo** - * **OCP\\Util::imagePath** has been deprecated in favour of **\\OCP\\IURLGenerator::imagePath** - * **OCP\\Util::isValidPath** has been deprecated in favour of **\\OCP\\IURLGenerator::imagePath** - -* `OCP\\AppFramework\\IAppContainer `_: methods **getCoreApi** and **log** -* `OCP\\AppFramework\\IApi `_: full class - - -2017 -^^^^ - -* **OCP\\IDb**: This interface and the implementing classes will be removed in favor of **OCP\\IDbConnection**. Various layers in between have also been removed to be consistent with the PDO classes. This leads to the following changes: - - * Replace all calls on the db using **getInsertId** with **lastInsertId** - * Replace all calls on the db using **prepareQuery** with **prepare** - * The **__construct** method of **OCP\\AppFramework\\Db\\Mapper** no longer requires an instance of **OCP\\IDb** but an instance of **OCP\\IDbConnection** - * The **execute** method on **OCP\\AppFramework\\Db\\Mapper** no longer returns an instance of **OC_DB_StatementWrapper** but an instance of **PDOStatement** - -2016 -^^^^ - -* The following methods have been moved into the **OCP\\Template::** class instead of being namespaced directly: - - * **OCP\\image_path** - * **OCP\\mimetype_icon** - * **OCP\\preview_icon** - * **OCP\\publicPreview_icon** - * **OCP\\human_file_size** - * **OCP\\relative_modified_date** - * **OCP\\html_select_options** - -* **OCP\\simple_file_size** has been deprecated in favour of **OCP\\Template::human_file_size** -* The **OCP\\PERMISSION_** and **OCP\\FILENAME_INVALID_CHARS** have been moved to **OCP\\Constants::** -* The **OC_GROUP_BACKEND_** and **OC_USER_BACKEND_** have been moved to **OC_Group_Backend::** and **OC_User_Backend::** respectively -* `OCP\\AppFramework\\Controller `_: methods **params**, **getParams**, **method**, **getUploadedFile**, **env**, **cookie**, **render** - -2015 -^^^^ - -* `\\OC\\Preferences `_ and `\\OC_Preferences `_ diff --git a/developer_manual/digging_deeper/index.rst b/developer_manual/digging_deeper/index.rst index 374de7c19..368a2515f 100644 --- a/developer_manual/digging_deeper/index.rst +++ b/developer_manual/digging_deeper/index.rst @@ -6,7 +6,6 @@ Digging deeper :maxdepth: 3 api - changelog config/index debugging classloader diff --git a/developer_manual/digging_deeper/javascript-apis.rst b/developer_manual/digging_deeper/javascript-apis.rst index 2cfd32237..06251d10e 100644 --- a/developer_manual/digging_deeper/javascript-apis.rst +++ b/developer_manual/digging_deeper/javascript-apis.rst @@ -67,10 +67,13 @@ This package provides a simple event bus implementation that integrates with ser This package provides access to UI dialogs in Nextcloud. Documentation: https://nextcloud-libraries.github.io/nextcloud-dialogs/ +.. _js-library_nextcloud-files: + ``@nextcloud/files`` ^^^^^^^^^^^^^^^^^^^^ -This package provides helper functions around the Files app. Documentation: https://nextcloud-libraries.github.io/nextcloud-files/ +This package provides methods to access the public API of the Files app, helper functions to access Nextcloud files using WebDAV, +and utility functions to work with files and folders. Documentation: https://nextcloud-libraries.github.io/nextcloud-files/ ``@nextcloud/initial-state`` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -107,6 +110,14 @@ This package provides various helpers for file and folder paths. Documentation: This package provides helpers to generate URLs, e.g. to access assets and REST APIs of your app or the Nextcloud server. Documentation: https://nextcloud-libraries.github.io/nextcloud-router/ +.. _js-library_nextcloud-sharing: + +``@nextcloud/sharing`` +^^^^^^^^^^^^^^^^^^^^^^ + +This package provides helpers interact with the Files sharing app, e.g. to detect if the current page is a public share and retrieving the sharing token. +Documentation: https://nextcloud-libraries.github.io/nextcloud-sharing/ + ``@nextcloud/vue`` ^^^^^^^^^^^^^^^^^^ diff --git a/requirements.txt b/requirements.txt index 12f9bf530..b6bae93e9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,35 +1,35 @@ alabaster==0.7.16 -Babel==2.15.0 -certifi==2024.7.4 +Babel==2.16.0 +certifi==2024.8.30 charset-normalizer==3.3.2 docutils==0.20.1 -idna==3.7 +idna==3.8 imagesize==1.4.1 -importlib-metadata==8.0.0 +importlib-metadata==8.4.0 Jinja2==3.1.4 MarkupSafe==2.1.5 packaging==24.1 Pillow==10.4.0 Pygments==2.18.0 -PyYAML==6.0.1 +PyYAML==6.0.2 reportlab==4.2.2 requests==2.32.3 rst2pdf==0.102 smartypants==2.0.1 snowballstemmer==2.2.0 -Sphinx==7.2.6 +Sphinx==7.4.7 sphinx-copybutton==0.5.2 sphinx-rtd-theme==2.0.0 sphinx-rtd-dark-mode==1.3.0 -sphinxcontrib-applehelp==1.0.8 -sphinxcontrib-devhelp==1.0.6 -sphinxcontrib-htmlhelp==2.0.5 +sphinxcontrib-applehelp==2.0.0 +sphinxcontrib-devhelp==2.0.0 +sphinxcontrib-htmlhelp==2.1.0 sphinxcontrib-jquery==4.1 sphinxcontrib-jsmath==1.0.1 -sphinxcontrib-phpdomain==0.11.1 -sphinxcontrib-qthelp==1.0.7 -sphinxcontrib-serializinghtml==1.1.10 -sphinx-toolbox==3.5.0 +sphinxcontrib-phpdomain==0.12.0 +sphinxcontrib-qthelp==2.0.0 +sphinxcontrib-serializinghtml==2.0.0 +sphinx-toolbox==3.8.0 sphinx-reredirects==0.1.5 urllib3==2.2.2 -zipp==3.20.0 +zipp==3.20.1 diff --git a/user_manual/groupware/mail.rst b/user_manual/groupware/mail.rst index 430556d3b..7eb45d056 100644 --- a/user_manual/groupware/mail.rst +++ b/user_manual/groupware/mail.rst @@ -308,6 +308,8 @@ The mail app supports summarizing message threads that contain 3 or more message .. note:: Please note that the feature has to be enabled by the administrator +.. note:: Please note that this feature only works well with integration_openai. Local LLMs take too long to respond and the summary request is likely to time out and still create significant system load. + Filtering and autoresponder --------------------------- @@ -333,3 +335,38 @@ When clicking on such an email a button will be shown to quickly follow up with It is also possible to disable follow-up reminders for a sent email. .. note:: Please note that the feature has to be enabled by the administrator. + +Security +-------- + +Phishing detection +~~~~~~~~~~~~~~~~~~ + +.. versionadded:: 4.0 + +The Mail app will check for potential phishing attempts and will display a warning to the user. + +The checks are the following: + +* The sender address saved in the addressbook is not the same as the one in the mail account +* The sender is using a custom email address that doesn't match the from address +* The sent date is set in the future +* Links in the message body are not pointing to the displayed text +* The reply-to address is not the same as the sender address + +.. note:: Please note that the warning does not mean that the message is a phishing attempt. It only means that the Mail app detected a potential phishing attempt. + +Internal addresses +~~~~~~~~~~~~~~~~~~ + +.. versionadded:: 4.0 + +The Mail app allows adding internal addresses and domains, and will warn the user if the address is not in the list, when sending and upon receiving a message. + +To add an internal address: + +1. Open the mail settings +2. Navigate to Privacy and security section +3. Enable the internal addresses by ckicjin on the checkbox +4. Click the Add internal address button +5. Enter the address or domain and click Add \ No newline at end of file diff --git a/user_manual/talk/advanced_features.rst b/user_manual/talk/advanced_features.rst index cebd870ca..9745cacd1 100644 --- a/user_manual/talk/advanced_features.rst +++ b/user_manual/talk/advanced_features.rst @@ -11,6 +11,7 @@ Matterbridge integration in Nextcloud Talk makes it possible to create 'bridges' A moderator can add a Matterbridge connection in the chat conversation settings. .. image:: images/matterbridge-settings.png + :width: 700px Each of the bridges has its own need in terms of configuration. Information for most is available on the Matterbridge wiki and can be accessed behind ``more information`` menu in the ``...`` menu. You can also `access the wiki directly. `_ @@ -20,6 +21,7 @@ Lobby The lobby feature allows you to show guests a waiting screen until the call starts. This is ideal for webinars with external participants, for example. .. image:: images/lobby-in-talk.png + :width: 600px You can choose to let the participants join the call at a specific time, or when you dismiss the lobby manually. @@ -35,6 +37,7 @@ Administrators can configure, enable and disable commands. Users can use the ``h ``/help`` .. image:: images/command-help.png + :width: 600px Find more information in the `administrative documentation for Talk. `_ @@ -44,16 +47,22 @@ Talk from Files In the Files app, you can chat about files in the sidebar, and even have a call while editing it. You first have to join the chat. .. image:: images/join-chat.png + :width: 500px + +| .. image:: images/sidebar-chat.png + :width: 500px You can then chat or have a call with other participants, even when you start editing the file. .. image:: images/text-and-talk.png + :width: 700px In Talk, a conversation will be created for the file. You can chat from there, or go back to the file using the ``...`` menu in the top-right. .. image:: images/file-room.png + :width: 400px Create tasks from chat or share tasks in chat --------------------------------------------- @@ -61,14 +70,22 @@ Create tasks from chat or share tasks in chat If Deck is installed, you can use the ``...`` menu of a chat message and turn the message into a Deck task. .. image:: images/deck-talk-create-card-menu.png + :width: 500px + +| .. image:: images/deck-talk-create-card-dialog.png + :width: 400px From within Deck, you can share tasks into chat conversations. .. image:: images/deck-talk-share-card-to-chat-menu.png + :width: 400px + +| .. image:: images/deck-talk-share-card-to-chat-in-talk.png + :width: 600px Breakout rooms -------------- @@ -82,6 +99,7 @@ To create breakout rooms, you need to be a moderator in a group conversation. Cl "Setup breakout rooms". .. image:: images/talk-breakout-rooms-setup.png + :width: 400px A dialog will open where you can specify the number of rooms you want to create and the participants assignment method. Here you'll be presented with 3 options: @@ -91,6 +109,7 @@ Here you'll be presented with 3 options: - **Allow participants choose**: Participants will be able to join breakout rooms themselves. .. image:: images/talk-breakout-rooms-setup-dialog.png + :width: 500px Manage breakout rooms ^^^^^^^^^^^^^^^^^^^^^ @@ -98,6 +117,7 @@ Manage breakout rooms Once the breakout rooms are created, you will be able to see them in the sidebar. .. image:: images/talk-breakout-rooms-sidebar.png + :width: 500px From the sidebar header @@ -106,11 +126,13 @@ From the sidebar header - **Make changes to the assigned participants**: this will open the participants editor where you can change which participants are assigned to which breakout room. From this dialog it's also possible to delete the breakout rooms. .. image:: images/talk-breakout-rooms-sidebar-header.png + :width: 400px From the breakout room element in the sidebar, you can also join a particular breakout room or send a message to a specific room. .. image:: images/talk-breakout-rooms-sidebar-item.png + :width: 400px Call recording -------------- @@ -131,16 +153,27 @@ The moderator of the conversation can start a recording together with a call sta - **During the call**: click on the top-bar menu, then click "Start recording". .. image:: images/start-recording-before-call.png + :width: 400px + +| + .. image:: images/start-recording-in-call.png + :width: 300px The recording will start shortly, and you will see a red indicator next to the call time. You can stop the recording at any time while the call is still ongoing by clicking on that indicator and selecting "Stop recording", or by using the same action in the top-bar menu. If you do not manually stop the recording, it will end automatically when the call ends. .. image:: images/stop-recording.png + :width: 500px After stopping a recording, the server will take some time to prepare and save the recorded file. The moderator, who started the recording, receives a notification when the file is uploaded. From there, it can be shared in the chat. .. image:: images/share-recording-notification.png + :width: 300px + +| + .. image:: images/shared-recordings.png + :width: 400px Recording consent ^^^^^^^^^^^^^^^^^ @@ -152,12 +185,18 @@ For compliance reasons with various privacy rights, it is possible to ask partic - Allow moderators to configure this option on a conversation level. In such cases, moderators can access the conversation settings to configure this option accordingly: .. image:: images/enable-recording-consent.png + :width: 500px If recording consent is enabled, every participant, including moderators, will see a highlighted section in the "Media settings" before joining a call. This section informs participants that the call may be recorded. To give explicit consent for recording, participants must check the box. If they do not give consent, they will not be allowed to join the call. .. image:: images/give-recording-consent.png + :width: 500px + +| + .. image:: images/give-recording-consent-checked.png + :width: 500px Federated conversation ---------------------- @@ -173,18 +212,19 @@ Send and accept invites The moderator of the conversation can send an invite to participant on a different server: .. image:: images/federation-invite-send.png + :width: 400px When receiving a notification, user will see a counter of pending invites above the conversations list. .. image:: images/federation-invite-pending.png - :width: 450px + :width: 400px Upon clicking it, more information will be provided about inviting party, and user can either accept or decline the invitation. .. image:: images/federation-invite-dialog.png - :width: 450px + :width: 500px By accepting the invite, conversation will appear in the list as any other one. .. image:: images/federation-conversations-list.png - :width: 450px + :width: 400px diff --git a/user_manual/talk/images/add-participants.png b/user_manual/talk/images/add-participants.png index 1153c460d..33e5d6d9b 100644 Binary files a/user_manual/talk/images/add-participants.png and b/user_manual/talk/images/add-participants.png differ diff --git a/user_manual/talk/images/background-settings-in-call.png b/user_manual/talk/images/background-settings-in-call.png index 34add7371..fc65cca86 100644 Binary files a/user_manual/talk/images/background-settings-in-call.png and b/user_manual/talk/images/background-settings-in-call.png differ diff --git a/user_manual/talk/images/call-menu.png b/user_manual/talk/images/call-menu.png index 156695211..ef9873ffe 100644 Binary files a/user_manual/talk/images/call-menu.png and b/user_manual/talk/images/call-menu.png differ diff --git a/user_manual/talk/images/change-name.png b/user_manual/talk/images/change-name.png index b1186897a..6964c1d8f 100644 Binary files a/user_manual/talk/images/change-name.png and b/user_manual/talk/images/change-name.png differ diff --git a/user_manual/talk/images/chat-message-menu.png b/user_manual/talk/images/chat-message-menu.png index e58f22245..73c2d9be5 100644 Binary files a/user_manual/talk/images/chat-message-menu.png and b/user_manual/talk/images/chat-message-menu.png differ diff --git a/user_manual/talk/images/chat-with-one-user.png b/user_manual/talk/images/chat-with-one-user.png index 4b9d6f9c1..84a52fbc2 100644 Binary files a/user_manual/talk/images/chat-with-one-user.png and b/user_manual/talk/images/chat-with-one-user.png differ diff --git a/user_manual/talk/images/clear-filter.png b/user_manual/talk/images/clear-filter.png index e4e67cc6e..9f2b271a7 100644 Binary files a/user_manual/talk/images/clear-filter.png and b/user_manual/talk/images/clear-filter.png differ diff --git a/user_manual/talk/images/command-help.png b/user_manual/talk/images/command-help.png index 7b4d003eb..69eb7d602 100644 Binary files a/user_manual/talk/images/command-help.png and b/user_manual/talk/images/command-help.png differ diff --git a/user_manual/talk/images/configure-message-reminder.png b/user_manual/talk/images/configure-message-reminder.png index 6aa89c5b1..25e471417 100644 Binary files a/user_manual/talk/images/configure-message-reminder.png and b/user_manual/talk/images/configure-message-reminder.png differ diff --git a/user_manual/talk/images/conversation-settings-dialog.png b/user_manual/talk/images/conversation-settings-dialog.png index d30474dba..8abd4a20b 100644 Binary files a/user_manual/talk/images/conversation-settings-dialog.png and b/user_manual/talk/images/conversation-settings-dialog.png differ diff --git a/user_manual/talk/images/create-new-conversation.png b/user_manual/talk/images/create-new-conversation.png index 769ba9eda..55236f391 100644 Binary files a/user_manual/talk/images/create-new-conversation.png and b/user_manual/talk/images/create-new-conversation.png differ diff --git a/user_manual/talk/images/creating-open-conversation.png b/user_manual/talk/images/creating-open-conversation.png index bfb2dd775..f9823276c 100644 Binary files a/user_manual/talk/images/creating-open-conversation.png and b/user_manual/talk/images/creating-open-conversation.png differ diff --git a/user_manual/talk/images/deck-talk-create-card-dialog.png b/user_manual/talk/images/deck-talk-create-card-dialog.png index 6f65ea796..6b0b35fee 100644 Binary files a/user_manual/talk/images/deck-talk-create-card-dialog.png and b/user_manual/talk/images/deck-talk-create-card-dialog.png differ diff --git a/user_manual/talk/images/deck-talk-create-card-menu.png b/user_manual/talk/images/deck-talk-create-card-menu.png index ff3f6b4ef..816c9c938 100644 Binary files a/user_manual/talk/images/deck-talk-create-card-menu.png and b/user_manual/talk/images/deck-talk-create-card-menu.png differ diff --git a/user_manual/talk/images/deck-talk-share-card-to-chat-in-talk.png b/user_manual/talk/images/deck-talk-share-card-to-chat-in-talk.png index 170c89ebc..ec086ae1e 100644 Binary files a/user_manual/talk/images/deck-talk-share-card-to-chat-in-talk.png and b/user_manual/talk/images/deck-talk-share-card-to-chat-in-talk.png differ diff --git a/user_manual/talk/images/deck-talk-share-card-to-chat-menu.png b/user_manual/talk/images/deck-talk-share-card-to-chat-menu.png index 39174f407..30c7552fa 100644 Binary files a/user_manual/talk/images/deck-talk-share-card-to-chat-menu.png and b/user_manual/talk/images/deck-talk-share-card-to-chat-menu.png differ diff --git a/user_manual/talk/images/device-settings-before-call.png b/user_manual/talk/images/device-settings-before-call.png index 20a4d3d52..de84c9ece 100644 Binary files a/user_manual/talk/images/device-settings-before-call.png and b/user_manual/talk/images/device-settings-before-call.png differ diff --git a/user_manual/talk/images/drag-and-drop.png b/user_manual/talk/images/drag-and-drop.png index 734f2cdce..86c6abf92 100644 Binary files a/user_manual/talk/images/drag-and-drop.png and b/user_manual/talk/images/drag-and-drop.png differ diff --git a/user_manual/talk/images/editing-document-in-chat-room.png b/user_manual/talk/images/editing-document-in-chat-room.png index d509b2f1d..4d5f0655f 100644 Binary files a/user_manual/talk/images/editing-document-in-chat-room.png and b/user_manual/talk/images/editing-document-in-chat-room.png differ diff --git a/user_manual/talk/images/emoji-picker.png b/user_manual/talk/images/emoji-picker.png index 5fcc9f21f..6ac7081e4 100644 Binary files a/user_manual/talk/images/emoji-picker.png and b/user_manual/talk/images/emoji-picker.png differ diff --git a/user_manual/talk/images/enable-recording-consent.png b/user_manual/talk/images/enable-recording-consent.png index 31a586395..770cf2697 100644 Binary files a/user_manual/talk/images/enable-recording-consent.png and b/user_manual/talk/images/enable-recording-consent.png differ diff --git a/user_manual/talk/images/federation-conversations-list.png b/user_manual/talk/images/federation-conversations-list.png index 954afe2e3..d7a857d9d 100644 Binary files a/user_manual/talk/images/federation-conversations-list.png and b/user_manual/talk/images/federation-conversations-list.png differ diff --git a/user_manual/talk/images/federation-invite-dialog.png b/user_manual/talk/images/federation-invite-dialog.png index 69cdc5565..2a3f48623 100644 Binary files a/user_manual/talk/images/federation-invite-dialog.png and b/user_manual/talk/images/federation-invite-dialog.png differ diff --git a/user_manual/talk/images/federation-invite-pending.png b/user_manual/talk/images/federation-invite-pending.png index 13fdac3f9..3ed0c68b1 100644 Binary files a/user_manual/talk/images/federation-invite-pending.png and b/user_manual/talk/images/federation-invite-pending.png differ diff --git a/user_manual/talk/images/federation-invite-send.png b/user_manual/talk/images/federation-invite-send.png index 1aef3795f..adccafca4 100644 Binary files a/user_manual/talk/images/federation-invite-send.png and b/user_manual/talk/images/federation-invite-send.png differ diff --git a/user_manual/talk/images/file-room.png b/user_manual/talk/images/file-room.png index d63c4b07b..9aac87435 100644 Binary files a/user_manual/talk/images/file-room.png and b/user_manual/talk/images/file-room.png differ diff --git a/user_manual/talk/images/filters-menu.png b/user_manual/talk/images/filters-menu.png index 2a3e17378..bcca6bb91 100644 Binary files a/user_manual/talk/images/filters-menu.png and b/user_manual/talk/images/filters-menu.png differ diff --git a/user_manual/talk/images/give-recording-consent-checked.png b/user_manual/talk/images/give-recording-consent-checked.png index 0323ad552..e0875c75f 100644 Binary files a/user_manual/talk/images/give-recording-consent-checked.png and b/user_manual/talk/images/give-recording-consent-checked.png differ diff --git a/user_manual/talk/images/give-recording-consent.png b/user_manual/talk/images/give-recording-consent.png index 17f9571b9..2b93ca194 100644 Binary files a/user_manual/talk/images/give-recording-consent.png and b/user_manual/talk/images/give-recording-consent.png differ diff --git a/user_manual/talk/images/guest-call-menu.png b/user_manual/talk/images/guest-call-menu.png new file mode 100644 index 000000000..2cdbc7b0f Binary files /dev/null and b/user_manual/talk/images/guest-call-menu.png differ diff --git a/user_manual/talk/images/guest-room-menu.png b/user_manual/talk/images/guest-room-menu.png index bd4602405..3defcdff9 100644 Binary files a/user_manual/talk/images/guest-room-menu.png and b/user_manual/talk/images/guest-room-menu.png differ diff --git a/user_manual/talk/images/guest-settings.png b/user_manual/talk/images/guest-settings.png index a437fe176..454958e82 100644 Binary files a/user_manual/talk/images/guest-settings.png and b/user_manual/talk/images/guest-settings.png differ diff --git a/user_manual/talk/images/guest-view.png b/user_manual/talk/images/guest-view.png index 47375c56c..fef3631d9 100644 Binary files a/user_manual/talk/images/guest-view.png and b/user_manual/talk/images/guest-view.png differ diff --git a/user_manual/talk/images/join-call.png b/user_manual/talk/images/join-call.png index b17ae0348..263de18ec 100644 Binary files a/user_manual/talk/images/join-call.png and b/user_manual/talk/images/join-call.png differ diff --git a/user_manual/talk/images/join-chat.png b/user_manual/talk/images/join-chat.png index 0eff447c2..45a361b53 100644 Binary files a/user_manual/talk/images/join-chat.png and b/user_manual/talk/images/join-chat.png differ diff --git a/user_manual/talk/images/join-open-conversations.png b/user_manual/talk/images/join-open-conversations.png index e6fe8f004..0885b518f 100644 Binary files a/user_manual/talk/images/join-open-conversations.png and b/user_manual/talk/images/join-open-conversations.png differ diff --git a/user_manual/talk/images/lobby-in-talk.png b/user_manual/talk/images/lobby-in-talk.png index cb2145579..5960324cc 100644 Binary files a/user_manual/talk/images/lobby-in-talk.png and b/user_manual/talk/images/lobby-in-talk.png differ diff --git a/user_manual/talk/images/matterbridge-settings.png b/user_manual/talk/images/matterbridge-settings.png index b1d867b41..8787622cf 100644 Binary files a/user_manual/talk/images/matterbridge-settings.png and b/user_manual/talk/images/matterbridge-settings.png differ diff --git a/user_manual/talk/images/media-settings.png b/user_manual/talk/images/media-settings.png index 61d8f53a2..ef9873ffe 100644 Binary files a/user_manual/talk/images/media-settings.png and b/user_manual/talk/images/media-settings.png differ diff --git a/user_manual/talk/images/message-editing.png b/user_manual/talk/images/message-editing.png index 1c8b5197d..485d592d0 100644 Binary files a/user_manual/talk/images/message-editing.png and b/user_manual/talk/images/message-editing.png differ diff --git a/user_manual/talk/images/message-silent.png b/user_manual/talk/images/message-silent.png index a0cbb5373..8b824b461 100644 Binary files a/user_manual/talk/images/message-silent.png and b/user_manual/talk/images/message-silent.png differ diff --git a/user_manual/talk/images/messages-expiration.png b/user_manual/talk/images/messages-expiration.png index cd57f60b5..512cf2e30 100644 Binary files a/user_manual/talk/images/messages-expiration.png and b/user_manual/talk/images/messages-expiration.png differ diff --git a/user_manual/talk/images/new-room.png b/user_manual/talk/images/new-room.png index 708fee85d..7a49a21c4 100644 Binary files a/user_manual/talk/images/new-room.png and b/user_manual/talk/images/new-room.png differ diff --git a/user_manual/talk/images/open-settings.png b/user_manual/talk/images/open-settings.png index a50280490..af274a5bf 100644 Binary files a/user_manual/talk/images/open-settings.png and b/user_manual/talk/images/open-settings.png differ diff --git a/user_manual/talk/images/participant-menu.png b/user_manual/talk/images/participant-menu.png index 509fc1a43..a32865aa3 100644 Binary files a/user_manual/talk/images/participant-menu.png and b/user_manual/talk/images/participant-menu.png differ diff --git a/user_manual/talk/images/reply.png b/user_manual/talk/images/reply.png index b091f39c5..ad9e44dc4 100644 Binary files a/user_manual/talk/images/reply.png and b/user_manual/talk/images/reply.png differ diff --git a/user_manual/talk/images/set-message-reminder.png b/user_manual/talk/images/set-message-reminder.png index 078716c81..3ec9c027d 100644 Binary files a/user_manual/talk/images/set-message-reminder.png and b/user_manual/talk/images/set-message-reminder.png differ diff --git a/user_manual/talk/images/share-files-in-chat-selection.png b/user_manual/talk/images/share-files-in-chat-selection.png index f9b61c47f..de9332e57 100644 Binary files a/user_manual/talk/images/share-files-in-chat-selection.png and b/user_manual/talk/images/share-files-in-chat-selection.png differ diff --git a/user_manual/talk/images/share-files-in-chat.png b/user_manual/talk/images/share-files-in-chat.png index c29d6bd6e..6ff3f46a5 100644 Binary files a/user_manual/talk/images/share-files-in-chat.png and b/user_manual/talk/images/share-files-in-chat.png differ diff --git a/user_manual/talk/images/share-recording-notification.png b/user_manual/talk/images/share-recording-notification.png index 0da347a30..112bee430 100644 Binary files a/user_manual/talk/images/share-recording-notification.png and b/user_manual/talk/images/share-recording-notification.png differ diff --git a/user_manual/talk/images/share-screen-with-camera.png b/user_manual/talk/images/share-screen-with-camera.png index 549cda3b7..0af83ebe9 100644 Binary files a/user_manual/talk/images/share-screen-with-camera.png and b/user_manual/talk/images/share-screen-with-camera.png differ diff --git a/user_manual/talk/images/shared-recordings.png b/user_manual/talk/images/shared-recordings.png index c3f39fed0..4774098ee 100644 Binary files a/user_manual/talk/images/shared-recordings.png and b/user_manual/talk/images/shared-recordings.png differ diff --git a/user_manual/talk/images/sidebar-chat.png b/user_manual/talk/images/sidebar-chat.png index 00357afee..772e7c911 100644 Binary files a/user_manual/talk/images/sidebar-chat.png and b/user_manual/talk/images/sidebar-chat.png differ diff --git a/user_manual/talk/images/start-recording-before-call.png b/user_manual/talk/images/start-recording-before-call.png index 31b277c82..b6753be0f 100644 Binary files a/user_manual/talk/images/start-recording-before-call.png and b/user_manual/talk/images/start-recording-before-call.png differ diff --git a/user_manual/talk/images/start-recording-in-call.png b/user_manual/talk/images/start-recording-in-call.png index e08bb1e2a..79086d705 100644 Binary files a/user_manual/talk/images/start-recording-in-call.png and b/user_manual/talk/images/start-recording-in-call.png differ diff --git a/user_manual/talk/images/stop-recording.png b/user_manual/talk/images/stop-recording.png index b92a48f0a..7013bc5c5 100644 Binary files a/user_manual/talk/images/stop-recording.png and b/user_manual/talk/images/stop-recording.png differ diff --git a/user_manual/talk/images/talk-breakout-rooms-setup-dialog.png b/user_manual/talk/images/talk-breakout-rooms-setup-dialog.png index c79cdbc2c..9df6d3a51 100644 Binary files a/user_manual/talk/images/talk-breakout-rooms-setup-dialog.png and b/user_manual/talk/images/talk-breakout-rooms-setup-dialog.png differ diff --git a/user_manual/talk/images/talk-breakout-rooms-setup.png b/user_manual/talk/images/talk-breakout-rooms-setup.png index 3a6bf9b5c..9135f126e 100644 Binary files a/user_manual/talk/images/talk-breakout-rooms-setup.png and b/user_manual/talk/images/talk-breakout-rooms-setup.png differ diff --git a/user_manual/talk/images/talk-breakout-rooms-sidebar-header.png b/user_manual/talk/images/talk-breakout-rooms-sidebar-header.png index a349c9341..757b2eb7b 100644 Binary files a/user_manual/talk/images/talk-breakout-rooms-sidebar-header.png and b/user_manual/talk/images/talk-breakout-rooms-sidebar-header.png differ diff --git a/user_manual/talk/images/talk-breakout-rooms-sidebar-item.png b/user_manual/talk/images/talk-breakout-rooms-sidebar-item.png index 9a8335d37..34463dc77 100644 Binary files a/user_manual/talk/images/talk-breakout-rooms-sidebar-item.png and b/user_manual/talk/images/talk-breakout-rooms-sidebar-item.png differ diff --git a/user_manual/talk/images/talk-breakout-rooms-sidebar.png b/user_manual/talk/images/talk-breakout-rooms-sidebar.png index 8fb675f1b..53f0d2733 100644 Binary files a/user_manual/talk/images/talk-breakout-rooms-sidebar.png and b/user_manual/talk/images/talk-breakout-rooms-sidebar.png differ diff --git a/user_manual/talk/images/talk-grid-view.png b/user_manual/talk/images/talk-grid-view.png index 09fbec201..2e47b1a5a 100644 Binary files a/user_manual/talk/images/talk-grid-view.png and b/user_manual/talk/images/talk-grid-view.png differ diff --git a/user_manual/talk/images/talk-promoted-view.png b/user_manual/talk/images/talk-promoted-view.png index 60dc55957..32fb268bf 100644 Binary files a/user_manual/talk/images/talk-promoted-view.png and b/user_manual/talk/images/talk-promoted-view.png differ diff --git a/user_manual/talk/images/talk-settings.png b/user_manual/talk/images/talk-settings.png index 18e354fdd..e7474675d 100644 Binary files a/user_manual/talk/images/talk-settings.png and b/user_manual/talk/images/talk-settings.png differ diff --git a/user_manual/talk/images/talk-upload-files.png b/user_manual/talk/images/talk-upload-files.png index acaeeb99d..cf8356b18 100644 Binary files a/user_manual/talk/images/talk-upload-files.png and b/user_manual/talk/images/talk-upload-files.png differ diff --git a/user_manual/talk/images/text-and-talk.png b/user_manual/talk/images/text-and-talk.png index ed4bb0c22..107bab897 100644 Binary files a/user_manual/talk/images/text-and-talk.png and b/user_manual/talk/images/text-and-talk.png differ diff --git a/user_manual/talk/join_a_call_or_chat_as_guest.rst b/user_manual/talk/join_a_call_or_chat_as_guest.rst index eaaed3e41..004b561d8 100644 --- a/user_manual/talk/join_a_call_or_chat_as_guest.rst +++ b/user_manual/talk/join_a_call_or_chat_as_guest.rst @@ -12,14 +12,17 @@ Joining a chat If you received a link to a chat conversation, you can open it in your browser to join the chat. Here, you will be prompted to enter your name before joining. .. image:: images/guest-view.png + :width: 400px You can also change your name later by clicking the ``Edit`` button, located top-right. .. image:: images/change-name.png + :width: 400px Your camera and microphone settings can be found in the ``Settings`` menu. There you can also find a list of shortcuts you can use. .. image:: images/guest-settings.png + :width: 600px Joining a call -------------- @@ -27,15 +30,17 @@ Joining a call You can start a call any time with the ``Start call`` button. Other participants will get notified and can join the call. If somebody else has started a call already, the button will change in a green ``Join call`` button. .. image:: images/join-call.png + :width: 600px Before actually joining the call you will see a device check, where you can pick the right camera and microphone, enable background blur or even join with any devices. .. image:: images/device-settings-before-call.png - :width: 300px + :width: 400px During a call, you can find the Camera and Microphone settings in the ``...`` menu in the top bar. -.. image:: images/call-menu.png +.. image:: images/guest-call-menu.png + :width: 300px During a call, you can mute your microphone and disable your video with the buttons in the top-right, or using the shortcuts ``M`` to mute audio and ``V`` to disable video. You can also use the ``space bar`` to toggle mute. When you are muted, pressing space will unmute you so you can speak until you let go of the space bar. If you are unmuted, pressing space will mute you until you let go. @@ -52,3 +57,4 @@ More settings In the conversation menu you can choose to go full-screen. You can also do this by using the ``F`` key on your keyboard. In the conversation settings, you can find notification options and the full conversation description. .. image:: images/guest-room-menu.png + :width: 500px diff --git a/user_manual/talk/talk_basics.rst b/user_manual/talk/talk_basics.rst index acbde3046..4b56e58c6 100644 --- a/user_manual/talk/talk_basics.rst +++ b/user_manual/talk/talk_basics.rst @@ -22,7 +22,7 @@ You can create a direct, one-on-one chat by searching for the name of a user, a If you want to create a custom group conversation, click the button next to the search field and filters button and then on ``Create a new conversation``. .. image:: images/create-new-conversation.png - :width: 300px + :width: 400px You can then pick a name for the conversation, put a description, and set up an avatar for it (with uploaded photo or emoji), and select if the conversation should be open to external users and if other users on the server can see and join the conversation. @@ -37,6 +37,7 @@ In the second step, you get to add participants and finalize the creation of the After confirmation you will be redirected to the new conversation and can start communicating right away. .. image:: images/new-room.png + :width: 700px View all open conversations --------------------------- @@ -44,7 +45,7 @@ View all open conversations You can view all the conversations that you can join by clicking the button next to the search field and filters button and then on ``Join open conversations.`` .. image:: images/join-open-conversations.png - :width: 500px + :width: 400px Filter your conversations ------------------------- @@ -54,12 +55,12 @@ You can filter your conversations using the filter button located next to the se 2. Filter unread messages: This option allows you to view all unread messages in all joined conversations. .. image:: images/filters-menu.png - :width: 250px + :width: 400px You can then clear the filter from the filters menu. .. image:: images/clear-filter.png - :width: 250px + :width: 400px Sharing files in a chat ----------------------- @@ -69,6 +70,7 @@ You can share files in a chat in 3 ways. First, you can simply drag'n'drop them on the chat. .. image:: images/drag-and-drop.png + :width: 600px Second, you can select a file from your Nextcloud Files or a file manager by choosing the little paperclip and selecting where you'd like to pick the file from. @@ -76,7 +78,7 @@ Second, you can select a file from your Nextcloud Files or a file manager by cho :width: 500px .. image:: images/share-files-in-chat-selection.png - :width: 450px + :width: 600px You can add more files until you are done and decide to share the files. You can also add a text caption to your shared files, providing a brief description or context. @@ -86,6 +88,7 @@ You can add more files until you are done and decide to share the files. You can All users will be able to click the files to view, edit or download them, irrespective of them having a user account. Users with an account will have the file automatically shared with them while external guest users will get them shared as a public link. .. image:: images/editing-document-in-chat-room.png + :width: 600px Inserting emoji --------------- @@ -93,7 +96,7 @@ Inserting emoji You can add emoji using the picker on the left of the text input field. .. image:: images/emoji-picker.png - :width: 450px + :width: 400px Editing messages ---------------- @@ -101,7 +104,7 @@ Editing messages You can edit messages and captions to file shares up to 6 hours after sending. .. image:: images/message-editing.png - :width: 450px + :width: 600px Using Markdown --------------- @@ -177,12 +180,12 @@ Setting reminder on messages You can set reminders on specific messages. If there's an important message you want to be notified about later, simply hover over it and click on the reminder icon. .. image:: images/set-message-reminder.png - :width: 450px + :width: 400px In the submenu, you can select an appropriate time to receive a notification later. .. image:: images/configure-message-reminder.png - :width: 450px + :width: 400px Replying to messages and more ----------------------------- @@ -190,12 +193,12 @@ Replying to messages and more You can reply to a message using the arrow that appears when you hover a message. .. image:: images/reply.png - :width: 450px + :width: 600px In the ``...`` menu you can also choose to reply privately. This will open a one-on-one chat. .. image:: images/chat-message-menu.png - :width: 450px + :width: 600px Here you can also create a direct link to the message or mark it unread so you will scroll back there next time you enter the chat. When it is a file, you can view the file in Files. @@ -206,7 +209,7 @@ If you don't want to disturb anyone in the middle of the night, there is a silen While it is enabled, other participants will not receive notifications from your messages. .. image:: images/message-silent.png - :width: 450px + :width: 600px Managing a conversation ----------------------- @@ -216,16 +219,17 @@ You are always moderator in your new conversation. In the participant list you c Changing permissions of a user that joined a public conversation will also permanently add them to the conversation. .. image:: images/participant-menu.png + :width: 400px Moderators can configure the conversation. Select ``Conversation settings`` from the ``...`` menu of the conversation on the top to access the settings. .. image:: images/open-settings.png - :width: 300px + :width: 400px Here you can configure the description, guest access, if the conversation is visible to others on the server and more. .. image:: images/conversation-settings-dialog.png - :width: 450px + :width: 600px Messages expiration ------------------- @@ -234,6 +238,7 @@ A moderator can configure message expiration under the ``Conversation settings`` The available expiration durations are 1 hour, 8 hours, 1 day, 1 week, 4 weeks, or never (which is the default setting). .. image:: images/messages-expiration.png + :width: 500px Starting a call @@ -242,11 +247,12 @@ Starting a call When you're in a conversation, you can start a call any time with the ``Start call`` button. Other participants will get notified and can join the call. .. image:: images/device-settings-before-call.png - :width: 300px + :width: 400px If somebody else has started a call already, the button will change in a green ``Join call`` button. .. image:: images/join-call.png + :width: 600px During a call, you can mute your microphone and disable your video with the buttons on the right side of the top bar, or using the shortcuts ``M`` to mute audio and ``V`` to disable video. You can also use the space bar to toggle mute. When you are muted, pressing space will unmute you so you can speak until you let go of the space bar. If you are unmuted, pressing space will mute you until you let go. @@ -260,11 +266,12 @@ You can access your settings and choose a different webcam, microphone and other From media settings dialog, you can also change the background of your video. .. image:: images/background-settings-in-call.png - :width: 300px + :width: 400px You can change other settings in the ``Talk settings`` dialog. .. image:: images/talk-settings.png + :width: 600px Starting a screen share ----------------------- @@ -273,6 +280,7 @@ You can click the monitor icon on your video stream to share your screen. Depend If video from your camera is also available, other participants will see it in a small presenter view next to the screen share. .. image:: images/share-screen-with-camera.png + :width: 700px Changing view in a call ----------------------- @@ -280,11 +288,12 @@ Changing view in a call You can switch the view in a call with the little four-block icon in the top-right between promoted-view and grid view. The grid view will show everyone equally big and if the people do not fit on the screen, buttons will appear on the left and right that let you navigate. .. image:: images/talk-grid-view.png + :width: 700px The promoted view shows the speaker large and others in a row below. If the people do not fit on the screen, buttons will appear on the left and right that let you navigate. .. image:: images/talk-promoted-view.png - + :width: 700px diff --git a/user_manual/userpreferences.rst b/user_manual/userpreferences.rst index cfe7b2aa5..f332dfe3e 100644 --- a/user_manual/userpreferences.rst +++ b/user_manual/userpreferences.rst @@ -33,6 +33,7 @@ include the following: * :doc:`user_2fa` * :doc:`userpreferences` * Choose the language for your Nextcloud interface +* Choose your preferred first day of the week * Links to desktop and mobile apps * Manage your Activity stream and notifications * Default folder to save new documents to diff --git a/user_manual_index.html b/user_manual_index.html index 6a98f8cb4..e0294e37e 100644 --- a/user_manual_index.html +++ b/user_manual_index.html @@ -3,7 +3,7 @@ Nextcloud Documentation - +